blob: dc3f66d8859262f3ee59bbb0662d98f3caae66a0 [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 Yang55676e02021-02-08 08:39:45 -0800859 auto resources = ResourceTracker::get();
860 resources->on_vkDestroyDescriptorSetLayout(vkEnc, device, descriptorSetLayout, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800861}
862static VkResult entry_vkCreateDescriptorPool(
863 VkDevice device,
864 const VkDescriptorPoolCreateInfo* pCreateInfo,
865 const VkAllocationCallbacks* pAllocator,
866 VkDescriptorPool* pDescriptorPool)
867{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800868 AEMU_SCOPED_TRACE("vkCreateDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800869 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800870 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700871 auto resources = ResourceTracker::get();
872 vkCreateDescriptorPool_VkResult_return = resources->on_vkCreateDescriptorPool(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pDescriptorPool);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800873 return vkCreateDescriptorPool_VkResult_return;
874}
875static void entry_vkDestroyDescriptorPool(
876 VkDevice device,
877 VkDescriptorPool descriptorPool,
878 const VkAllocationCallbacks* pAllocator)
879{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800880 AEMU_SCOPED_TRACE("vkDestroyDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800881 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700882 auto resources = ResourceTracker::get();
883 resources->on_vkDestroyDescriptorPool(vkEnc, device, descriptorPool, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800884}
885static VkResult entry_vkResetDescriptorPool(
886 VkDevice device,
887 VkDescriptorPool descriptorPool,
888 VkDescriptorPoolResetFlags flags)
889{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800890 AEMU_SCOPED_TRACE("vkResetDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800891 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800892 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700893 auto resources = ResourceTracker::get();
894 vkResetDescriptorPool_VkResult_return = resources->on_vkResetDescriptorPool(vkEnc, VK_SUCCESS, device, descriptorPool, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800895 return vkResetDescriptorPool_VkResult_return;
896}
897static VkResult entry_vkAllocateDescriptorSets(
898 VkDevice device,
899 const VkDescriptorSetAllocateInfo* pAllocateInfo,
900 VkDescriptorSet* pDescriptorSets)
901{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800902 AEMU_SCOPED_TRACE("vkAllocateDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800903 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800904 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700905 auto resources = ResourceTracker::get();
906 vkAllocateDescriptorSets_VkResult_return = resources->on_vkAllocateDescriptorSets(vkEnc, VK_SUCCESS, device, pAllocateInfo, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800907 return vkAllocateDescriptorSets_VkResult_return;
908}
909static VkResult entry_vkFreeDescriptorSets(
910 VkDevice device,
911 VkDescriptorPool descriptorPool,
912 uint32_t descriptorSetCount,
913 const VkDescriptorSet* pDescriptorSets)
914{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800915 AEMU_SCOPED_TRACE("vkFreeDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800916 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800917 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700918 auto resources = ResourceTracker::get();
919 vkFreeDescriptorSets_VkResult_return = resources->on_vkFreeDescriptorSets(vkEnc, VK_SUCCESS, device, descriptorPool, descriptorSetCount, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800920 return vkFreeDescriptorSets_VkResult_return;
921}
922static void entry_vkUpdateDescriptorSets(
923 VkDevice device,
924 uint32_t descriptorWriteCount,
925 const VkWriteDescriptorSet* pDescriptorWrites,
926 uint32_t descriptorCopyCount,
927 const VkCopyDescriptorSet* pDescriptorCopies)
928{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800929 AEMU_SCOPED_TRACE("vkUpdateDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800930 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang03354c72020-03-26 13:00:51 -0700931 auto resources = ResourceTracker::get();
932 resources->on_vkUpdateDescriptorSets(vkEnc, device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800933}
934static VkResult entry_vkCreateFramebuffer(
935 VkDevice device,
936 const VkFramebufferCreateInfo* pCreateInfo,
937 const VkAllocationCallbacks* pAllocator,
938 VkFramebuffer* pFramebuffer)
939{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800940 AEMU_SCOPED_TRACE("vkCreateFramebuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800941 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800942 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800943 vkCreateFramebuffer_VkResult_return = vkEnc->vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800944 return vkCreateFramebuffer_VkResult_return;
945}
946static void entry_vkDestroyFramebuffer(
947 VkDevice device,
948 VkFramebuffer framebuffer,
949 const VkAllocationCallbacks* pAllocator)
950{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800951 AEMU_SCOPED_TRACE("vkDestroyFramebuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800952 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800953 vkEnc->vkDestroyFramebuffer(device, framebuffer, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800954}
955static VkResult entry_vkCreateRenderPass(
956 VkDevice device,
957 const VkRenderPassCreateInfo* pCreateInfo,
958 const VkAllocationCallbacks* pAllocator,
959 VkRenderPass* pRenderPass)
960{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800961 AEMU_SCOPED_TRACE("vkCreateRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800962 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800963 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800964 vkCreateRenderPass_VkResult_return = vkEnc->vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800965 return vkCreateRenderPass_VkResult_return;
966}
967static void entry_vkDestroyRenderPass(
968 VkDevice device,
969 VkRenderPass renderPass,
970 const VkAllocationCallbacks* pAllocator)
971{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800972 AEMU_SCOPED_TRACE("vkDestroyRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800973 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800974 vkEnc->vkDestroyRenderPass(device, renderPass, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800975}
976static void entry_vkGetRenderAreaGranularity(
977 VkDevice device,
978 VkRenderPass renderPass,
979 VkExtent2D* pGranularity)
980{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800981 AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800982 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800983 vkEnc->vkGetRenderAreaGranularity(device, renderPass, pGranularity, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800984}
985static VkResult entry_vkCreateCommandPool(
986 VkDevice device,
987 const VkCommandPoolCreateInfo* pCreateInfo,
988 const VkAllocationCallbacks* pAllocator,
989 VkCommandPool* pCommandPool)
990{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800991 AEMU_SCOPED_TRACE("vkCreateCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800992 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800993 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800994 vkCreateCommandPool_VkResult_return = vkEnc->vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800995 return vkCreateCommandPool_VkResult_return;
996}
997static void entry_vkDestroyCommandPool(
998 VkDevice device,
999 VkCommandPool commandPool,
1000 const VkAllocationCallbacks* pAllocator)
1001{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001002 AEMU_SCOPED_TRACE("vkDestroyCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001003 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001004 vkEnc->vkDestroyCommandPool(device, commandPool, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001005}
1006static VkResult entry_vkResetCommandPool(
1007 VkDevice device,
1008 VkCommandPool commandPool,
1009 VkCommandPoolResetFlags flags)
1010{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001011 AEMU_SCOPED_TRACE("vkResetCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001012 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001013 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001014 vkResetCommandPool_VkResult_return = vkEnc->vkResetCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang4f539502021-01-22 23:01:57 -08001015 if (vkResetCommandPool_VkResult_return == VK_SUCCESS) {
1016 ResourceTracker::get()->resetCommandPoolStagingInfo(commandPool);
1017 }
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001018 return vkResetCommandPool_VkResult_return;
1019}
1020static VkResult entry_vkAllocateCommandBuffers(
1021 VkDevice device,
1022 const VkCommandBufferAllocateInfo* pAllocateInfo,
1023 VkCommandBuffer* pCommandBuffers)
1024{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001025 AEMU_SCOPED_TRACE("vkAllocateCommandBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001026 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001027 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
Lingfeng Yang97f51af2021-04-22 12:24:11 -07001028 auto resources = ResourceTracker::get();
1029 vkAllocateCommandBuffers_VkResult_return = resources->on_vkAllocateCommandBuffers(vkEnc, VK_SUCCESS, device, pAllocateInfo, pCommandBuffers);
Lingfeng Yang4f539502021-01-22 23:01:57 -08001030 if (vkAllocateCommandBuffers_VkResult_return == VK_SUCCESS) {
1031 ResourceTracker::get()->addToCommandPool(pAllocateInfo->commandPool, pAllocateInfo->commandBufferCount, pCommandBuffers);
1032 }
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001033 return vkAllocateCommandBuffers_VkResult_return;
1034}
1035static void entry_vkFreeCommandBuffers(
1036 VkDevice device,
1037 VkCommandPool commandPool,
1038 uint32_t commandBufferCount,
1039 const VkCommandBuffer* pCommandBuffers)
1040{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001041 AEMU_SCOPED_TRACE("vkFreeCommandBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001042 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001043 vkEnc->vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001044}
1045static VkResult entry_vkBeginCommandBuffer(
1046 VkCommandBuffer commandBuffer,
1047 const VkCommandBufferBeginInfo* pBeginInfo)
1048{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001049 AEMU_SCOPED_TRACE("vkBeginCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001050 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001051 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001052 auto resources = ResourceTracker::get();
1053 vkBeginCommandBuffer_VkResult_return = resources->on_vkBeginCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, pBeginInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001054 return vkBeginCommandBuffer_VkResult_return;
1055}
1056static VkResult entry_vkEndCommandBuffer(
1057 VkCommandBuffer commandBuffer)
1058{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001059 AEMU_SCOPED_TRACE("vkEndCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001060 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001061 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001062 auto resources = ResourceTracker::get();
1063 vkEndCommandBuffer_VkResult_return = resources->on_vkEndCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001064 return vkEndCommandBuffer_VkResult_return;
1065}
1066static VkResult entry_vkResetCommandBuffer(
1067 VkCommandBuffer commandBuffer,
1068 VkCommandBufferResetFlags flags)
1069{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001070 AEMU_SCOPED_TRACE("vkResetCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001071 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001072 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001073 auto resources = ResourceTracker::get();
1074 vkResetCommandBuffer_VkResult_return = resources->on_vkResetCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001075 return vkResetCommandBuffer_VkResult_return;
1076}
1077static void entry_vkCmdBindPipeline(
1078 VkCommandBuffer commandBuffer,
1079 VkPipelineBindPoint pipelineBindPoint,
1080 VkPipeline pipeline)
1081{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001082 AEMU_SCOPED_TRACE("vkCmdBindPipeline");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001083 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001084 vkEnc->vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001085}
1086static void entry_vkCmdSetViewport(
1087 VkCommandBuffer commandBuffer,
1088 uint32_t firstViewport,
1089 uint32_t viewportCount,
1090 const VkViewport* pViewports)
1091{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001092 AEMU_SCOPED_TRACE("vkCmdSetViewport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001093 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001094 vkEnc->vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001095}
1096static void entry_vkCmdSetScissor(
1097 VkCommandBuffer commandBuffer,
1098 uint32_t firstScissor,
1099 uint32_t scissorCount,
1100 const VkRect2D* pScissors)
1101{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001102 AEMU_SCOPED_TRACE("vkCmdSetScissor");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001103 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001104 vkEnc->vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001105}
1106static void entry_vkCmdSetLineWidth(
1107 VkCommandBuffer commandBuffer,
1108 float lineWidth)
1109{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001110 AEMU_SCOPED_TRACE("vkCmdSetLineWidth");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001111 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001112 vkEnc->vkCmdSetLineWidth(commandBuffer, lineWidth, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001113}
1114static void entry_vkCmdSetDepthBias(
1115 VkCommandBuffer commandBuffer,
1116 float depthBiasConstantFactor,
1117 float depthBiasClamp,
1118 float depthBiasSlopeFactor)
1119{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001120 AEMU_SCOPED_TRACE("vkCmdSetDepthBias");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001121 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001122 vkEnc->vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001123}
1124static void entry_vkCmdSetBlendConstants(
1125 VkCommandBuffer commandBuffer,
Lingfeng Yang97ddeb82019-04-20 14:32:52 -07001126 const float blendConstants[4])
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001127{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001128 AEMU_SCOPED_TRACE("vkCmdSetBlendConstants");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001129 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001130 vkEnc->vkCmdSetBlendConstants(commandBuffer, blendConstants, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001131}
1132static void entry_vkCmdSetDepthBounds(
1133 VkCommandBuffer commandBuffer,
1134 float minDepthBounds,
1135 float maxDepthBounds)
1136{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001137 AEMU_SCOPED_TRACE("vkCmdSetDepthBounds");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001138 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001139 vkEnc->vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001140}
1141static void entry_vkCmdSetStencilCompareMask(
1142 VkCommandBuffer commandBuffer,
1143 VkStencilFaceFlags faceMask,
1144 uint32_t compareMask)
1145{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001146 AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001147 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001148 vkEnc->vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001149}
1150static void entry_vkCmdSetStencilWriteMask(
1151 VkCommandBuffer commandBuffer,
1152 VkStencilFaceFlags faceMask,
1153 uint32_t writeMask)
1154{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001155 AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001156 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001157 vkEnc->vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001158}
1159static void entry_vkCmdSetStencilReference(
1160 VkCommandBuffer commandBuffer,
1161 VkStencilFaceFlags faceMask,
1162 uint32_t reference)
1163{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001164 AEMU_SCOPED_TRACE("vkCmdSetStencilReference");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001165 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001166 vkEnc->vkCmdSetStencilReference(commandBuffer, faceMask, reference, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001167}
1168static void entry_vkCmdBindDescriptorSets(
1169 VkCommandBuffer commandBuffer,
1170 VkPipelineBindPoint pipelineBindPoint,
1171 VkPipelineLayout layout,
1172 uint32_t firstSet,
1173 uint32_t descriptorSetCount,
1174 const VkDescriptorSet* pDescriptorSets,
1175 uint32_t dynamicOffsetCount,
1176 const uint32_t* pDynamicOffsets)
1177{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001178 AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001179 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang55676e02021-02-08 08:39:45 -08001180 auto resources = ResourceTracker::get();
1181 resources->on_vkCmdBindDescriptorSets(vkEnc, commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001182}
1183static void entry_vkCmdBindIndexBuffer(
1184 VkCommandBuffer commandBuffer,
1185 VkBuffer buffer,
1186 VkDeviceSize offset,
1187 VkIndexType indexType)
1188{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001189 AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001190 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001191 vkEnc->vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001192}
1193static void entry_vkCmdBindVertexBuffers(
1194 VkCommandBuffer commandBuffer,
1195 uint32_t firstBinding,
1196 uint32_t bindingCount,
1197 const VkBuffer* pBuffers,
1198 const VkDeviceSize* pOffsets)
1199{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001200 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001201 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001202 vkEnc->vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001203}
1204static void entry_vkCmdDraw(
1205 VkCommandBuffer commandBuffer,
1206 uint32_t vertexCount,
1207 uint32_t instanceCount,
1208 uint32_t firstVertex,
1209 uint32_t firstInstance)
1210{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001211 AEMU_SCOPED_TRACE("vkCmdDraw");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001212 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001213 vkEnc->vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001214}
1215static void entry_vkCmdDrawIndexed(
1216 VkCommandBuffer commandBuffer,
1217 uint32_t indexCount,
1218 uint32_t instanceCount,
1219 uint32_t firstIndex,
1220 int32_t vertexOffset,
1221 uint32_t firstInstance)
1222{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001223 AEMU_SCOPED_TRACE("vkCmdDrawIndexed");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001224 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001225 vkEnc->vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001226}
1227static void entry_vkCmdDrawIndirect(
1228 VkCommandBuffer commandBuffer,
1229 VkBuffer buffer,
1230 VkDeviceSize offset,
1231 uint32_t drawCount,
1232 uint32_t stride)
1233{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001234 AEMU_SCOPED_TRACE("vkCmdDrawIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001235 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001236 vkEnc->vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001237}
1238static void entry_vkCmdDrawIndexedIndirect(
1239 VkCommandBuffer commandBuffer,
1240 VkBuffer buffer,
1241 VkDeviceSize offset,
1242 uint32_t drawCount,
1243 uint32_t stride)
1244{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001245 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001246 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001247 vkEnc->vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001248}
1249static void entry_vkCmdDispatch(
1250 VkCommandBuffer commandBuffer,
1251 uint32_t groupCountX,
1252 uint32_t groupCountY,
1253 uint32_t groupCountZ)
1254{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001255 AEMU_SCOPED_TRACE("vkCmdDispatch");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001256 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001257 vkEnc->vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001258}
1259static void entry_vkCmdDispatchIndirect(
1260 VkCommandBuffer commandBuffer,
1261 VkBuffer buffer,
1262 VkDeviceSize offset)
1263{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001264 AEMU_SCOPED_TRACE("vkCmdDispatchIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001265 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001266 vkEnc->vkCmdDispatchIndirect(commandBuffer, buffer, offset, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001267}
1268static void entry_vkCmdCopyBuffer(
1269 VkCommandBuffer commandBuffer,
1270 VkBuffer srcBuffer,
1271 VkBuffer dstBuffer,
1272 uint32_t regionCount,
1273 const VkBufferCopy* pRegions)
1274{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001275 AEMU_SCOPED_TRACE("vkCmdCopyBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001276 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001277 vkEnc->vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001278}
1279static void entry_vkCmdCopyImage(
1280 VkCommandBuffer commandBuffer,
1281 VkImage srcImage,
1282 VkImageLayout srcImageLayout,
1283 VkImage dstImage,
1284 VkImageLayout dstImageLayout,
1285 uint32_t regionCount,
1286 const VkImageCopy* pRegions)
1287{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001288 AEMU_SCOPED_TRACE("vkCmdCopyImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001289 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001290 vkEnc->vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001291}
1292static void entry_vkCmdBlitImage(
1293 VkCommandBuffer commandBuffer,
1294 VkImage srcImage,
1295 VkImageLayout srcImageLayout,
1296 VkImage dstImage,
1297 VkImageLayout dstImageLayout,
1298 uint32_t regionCount,
1299 const VkImageBlit* pRegions,
1300 VkFilter filter)
1301{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001302 AEMU_SCOPED_TRACE("vkCmdBlitImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001303 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001304 vkEnc->vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001305}
1306static void entry_vkCmdCopyBufferToImage(
1307 VkCommandBuffer commandBuffer,
1308 VkBuffer srcBuffer,
1309 VkImage dstImage,
1310 VkImageLayout dstImageLayout,
1311 uint32_t regionCount,
1312 const VkBufferImageCopy* pRegions)
1313{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001314 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001315 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001316 vkEnc->vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001317}
1318static void entry_vkCmdCopyImageToBuffer(
1319 VkCommandBuffer commandBuffer,
1320 VkImage srcImage,
1321 VkImageLayout srcImageLayout,
1322 VkBuffer dstBuffer,
1323 uint32_t regionCount,
1324 const VkBufferImageCopy* pRegions)
1325{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001326 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001327 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001328 vkEnc->vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001329}
1330static void entry_vkCmdUpdateBuffer(
1331 VkCommandBuffer commandBuffer,
1332 VkBuffer dstBuffer,
1333 VkDeviceSize dstOffset,
1334 VkDeviceSize dataSize,
1335 const void* pData)
1336{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001337 AEMU_SCOPED_TRACE("vkCmdUpdateBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001338 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001339 vkEnc->vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001340}
1341static void entry_vkCmdFillBuffer(
1342 VkCommandBuffer commandBuffer,
1343 VkBuffer dstBuffer,
1344 VkDeviceSize dstOffset,
1345 VkDeviceSize size,
1346 uint32_t data)
1347{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001348 AEMU_SCOPED_TRACE("vkCmdFillBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001349 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001350 vkEnc->vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001351}
1352static void entry_vkCmdClearColorImage(
1353 VkCommandBuffer commandBuffer,
1354 VkImage image,
1355 VkImageLayout imageLayout,
1356 const VkClearColorValue* pColor,
1357 uint32_t rangeCount,
1358 const VkImageSubresourceRange* pRanges)
1359{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001360 AEMU_SCOPED_TRACE("vkCmdClearColorImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001361 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001362 vkEnc->vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001363}
1364static void entry_vkCmdClearDepthStencilImage(
1365 VkCommandBuffer commandBuffer,
1366 VkImage image,
1367 VkImageLayout imageLayout,
1368 const VkClearDepthStencilValue* pDepthStencil,
1369 uint32_t rangeCount,
1370 const VkImageSubresourceRange* pRanges)
1371{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001372 AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001373 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001374 vkEnc->vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001375}
1376static void entry_vkCmdClearAttachments(
1377 VkCommandBuffer commandBuffer,
1378 uint32_t attachmentCount,
1379 const VkClearAttachment* pAttachments,
1380 uint32_t rectCount,
1381 const VkClearRect* pRects)
1382{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001383 AEMU_SCOPED_TRACE("vkCmdClearAttachments");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001384 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001385 vkEnc->vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001386}
1387static void entry_vkCmdResolveImage(
1388 VkCommandBuffer commandBuffer,
1389 VkImage srcImage,
1390 VkImageLayout srcImageLayout,
1391 VkImage dstImage,
1392 VkImageLayout dstImageLayout,
1393 uint32_t regionCount,
1394 const VkImageResolve* pRegions)
1395{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001396 AEMU_SCOPED_TRACE("vkCmdResolveImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001397 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001398 vkEnc->vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001399}
1400static void entry_vkCmdSetEvent(
1401 VkCommandBuffer commandBuffer,
1402 VkEvent event,
1403 VkPipelineStageFlags stageMask)
1404{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001405 AEMU_SCOPED_TRACE("vkCmdSetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001406 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001407 vkEnc->vkCmdSetEvent(commandBuffer, event, stageMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001408}
1409static void entry_vkCmdResetEvent(
1410 VkCommandBuffer commandBuffer,
1411 VkEvent event,
1412 VkPipelineStageFlags stageMask)
1413{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001414 AEMU_SCOPED_TRACE("vkCmdResetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001415 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001416 vkEnc->vkCmdResetEvent(commandBuffer, event, stageMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001417}
1418static void entry_vkCmdWaitEvents(
1419 VkCommandBuffer commandBuffer,
1420 uint32_t eventCount,
1421 const VkEvent* pEvents,
1422 VkPipelineStageFlags srcStageMask,
1423 VkPipelineStageFlags dstStageMask,
1424 uint32_t memoryBarrierCount,
1425 const VkMemoryBarrier* pMemoryBarriers,
1426 uint32_t bufferMemoryBarrierCount,
1427 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1428 uint32_t imageMemoryBarrierCount,
1429 const VkImageMemoryBarrier* pImageMemoryBarriers)
1430{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001431 AEMU_SCOPED_TRACE("vkCmdWaitEvents");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001432 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001433 vkEnc->vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001434}
1435static void entry_vkCmdPipelineBarrier(
1436 VkCommandBuffer commandBuffer,
1437 VkPipelineStageFlags srcStageMask,
1438 VkPipelineStageFlags dstStageMask,
1439 VkDependencyFlags dependencyFlags,
1440 uint32_t memoryBarrierCount,
1441 const VkMemoryBarrier* pMemoryBarriers,
1442 uint32_t bufferMemoryBarrierCount,
1443 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1444 uint32_t imageMemoryBarrierCount,
1445 const VkImageMemoryBarrier* pImageMemoryBarriers)
1446{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001447 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001448 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001449 vkEnc->vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001450}
1451static void entry_vkCmdBeginQuery(
1452 VkCommandBuffer commandBuffer,
1453 VkQueryPool queryPool,
1454 uint32_t query,
1455 VkQueryControlFlags flags)
1456{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001457 AEMU_SCOPED_TRACE("vkCmdBeginQuery");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001458 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001459 vkEnc->vkCmdBeginQuery(commandBuffer, queryPool, query, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001460}
1461static void entry_vkCmdEndQuery(
1462 VkCommandBuffer commandBuffer,
1463 VkQueryPool queryPool,
1464 uint32_t query)
1465{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001466 AEMU_SCOPED_TRACE("vkCmdEndQuery");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001467 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001468 vkEnc->vkCmdEndQuery(commandBuffer, queryPool, query, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001469}
1470static void entry_vkCmdResetQueryPool(
1471 VkCommandBuffer commandBuffer,
1472 VkQueryPool queryPool,
1473 uint32_t firstQuery,
1474 uint32_t queryCount)
1475{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001476 AEMU_SCOPED_TRACE("vkCmdResetQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001477 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001478 vkEnc->vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001479}
1480static void entry_vkCmdWriteTimestamp(
1481 VkCommandBuffer commandBuffer,
1482 VkPipelineStageFlagBits pipelineStage,
1483 VkQueryPool queryPool,
1484 uint32_t query)
1485{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001486 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001487 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001488 vkEnc->vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001489}
1490static void entry_vkCmdCopyQueryPoolResults(
1491 VkCommandBuffer commandBuffer,
1492 VkQueryPool queryPool,
1493 uint32_t firstQuery,
1494 uint32_t queryCount,
1495 VkBuffer dstBuffer,
1496 VkDeviceSize dstOffset,
1497 VkDeviceSize stride,
1498 VkQueryResultFlags flags)
1499{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001500 AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001501 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001502 vkEnc->vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001503}
1504static void entry_vkCmdPushConstants(
1505 VkCommandBuffer commandBuffer,
1506 VkPipelineLayout layout,
1507 VkShaderStageFlags stageFlags,
1508 uint32_t offset,
1509 uint32_t size,
1510 const void* pValues)
1511{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001512 AEMU_SCOPED_TRACE("vkCmdPushConstants");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001513 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001514 vkEnc->vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001515}
1516static void entry_vkCmdBeginRenderPass(
1517 VkCommandBuffer commandBuffer,
1518 const VkRenderPassBeginInfo* pRenderPassBegin,
1519 VkSubpassContents contents)
1520{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001521 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001522 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001523 vkEnc->vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001524}
1525static void entry_vkCmdNextSubpass(
1526 VkCommandBuffer commandBuffer,
1527 VkSubpassContents contents)
1528{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001529 AEMU_SCOPED_TRACE("vkCmdNextSubpass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001530 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001531 vkEnc->vkCmdNextSubpass(commandBuffer, contents, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001532}
1533static void entry_vkCmdEndRenderPass(
1534 VkCommandBuffer commandBuffer)
1535{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001536 AEMU_SCOPED_TRACE("vkCmdEndRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001537 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001538 vkEnc->vkCmdEndRenderPass(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001539}
1540static void entry_vkCmdExecuteCommands(
1541 VkCommandBuffer commandBuffer,
1542 uint32_t commandBufferCount,
1543 const VkCommandBuffer* pCommandBuffers)
1544{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001545 AEMU_SCOPED_TRACE("vkCmdExecuteCommands");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001546 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1547 auto resources = ResourceTracker::get();
1548 resources->on_vkCmdExecuteCommands(vkEnc, commandBuffer, commandBufferCount, pCommandBuffers);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001549}
1550#endif
1551#ifdef VK_VERSION_1_1
1552static VkResult entry_vkEnumerateInstanceVersion(
1553 uint32_t* pApiVersion)
1554{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001555 AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001556 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001557 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001558 vkEnumerateInstanceVersion_VkResult_return = vkEnc->vkEnumerateInstanceVersion(pApiVersion, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001559 return vkEnumerateInstanceVersion_VkResult_return;
1560}
1561static VkResult entry_vkBindBufferMemory2(
1562 VkDevice device,
1563 uint32_t bindInfoCount,
1564 const VkBindBufferMemoryInfo* pBindInfos)
1565{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001566 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001567 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001568 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001569 auto resources = ResourceTracker::get();
1570 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001571 return vkBindBufferMemory2_VkResult_return;
1572}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001573static VkResult dynCheck_entry_vkBindBufferMemory2(
1574 VkDevice device,
1575 uint32_t bindInfoCount,
1576 const VkBindBufferMemoryInfo* pBindInfos)
1577{
1578 auto resources = ResourceTracker::get();
1579 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1580 {
1581 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2", "VK_VERSION_1_1");
1582 }
1583 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001584 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001585 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
1586 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1587 return vkBindBufferMemory2_VkResult_return;
1588}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001589static VkResult entry_vkBindImageMemory2(
1590 VkDevice device,
1591 uint32_t bindInfoCount,
1592 const VkBindImageMemoryInfo* pBindInfos)
1593{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001594 AEMU_SCOPED_TRACE("vkBindImageMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001595 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001596 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001597 auto resources = ResourceTracker::get();
1598 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001599 return vkBindImageMemory2_VkResult_return;
1600}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001601static VkResult dynCheck_entry_vkBindImageMemory2(
1602 VkDevice device,
1603 uint32_t bindInfoCount,
1604 const VkBindImageMemoryInfo* pBindInfos)
1605{
1606 auto resources = ResourceTracker::get();
1607 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1608 {
1609 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2", "VK_VERSION_1_1");
1610 }
1611 AEMU_SCOPED_TRACE("vkBindImageMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001612 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001613 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
1614 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1615 return vkBindImageMemory2_VkResult_return;
1616}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001617static void entry_vkGetDeviceGroupPeerMemoryFeatures(
1618 VkDevice device,
1619 uint32_t heapIndex,
1620 uint32_t localDeviceIndex,
1621 uint32_t remoteDeviceIndex,
1622 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1623{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001624 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001625 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001626 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001627}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001628static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures(
1629 VkDevice device,
1630 uint32_t heapIndex,
1631 uint32_t localDeviceIndex,
1632 uint32_t remoteDeviceIndex,
1633 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1634{
1635 auto resources = ResourceTracker::get();
1636 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1637 {
1638 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeatures", "VK_VERSION_1_1");
1639 }
1640 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001641 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001642 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001643}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001644static void entry_vkCmdSetDeviceMask(
1645 VkCommandBuffer commandBuffer,
1646 uint32_t deviceMask)
1647{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001648 AEMU_SCOPED_TRACE("vkCmdSetDeviceMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001649 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001650 vkEnc->vkCmdSetDeviceMask(commandBuffer, deviceMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001651}
1652static void entry_vkCmdDispatchBase(
1653 VkCommandBuffer commandBuffer,
1654 uint32_t baseGroupX,
1655 uint32_t baseGroupY,
1656 uint32_t baseGroupZ,
1657 uint32_t groupCountX,
1658 uint32_t groupCountY,
1659 uint32_t groupCountZ)
1660{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001661 AEMU_SCOPED_TRACE("vkCmdDispatchBase");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001662 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001663 vkEnc->vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001664}
1665static VkResult entry_vkEnumeratePhysicalDeviceGroups(
1666 VkInstance instance,
1667 uint32_t* pPhysicalDeviceGroupCount,
1668 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
1669{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001670 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001671 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001672 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001673 vkEnumeratePhysicalDeviceGroups_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001674 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
1675}
1676static void entry_vkGetImageMemoryRequirements2(
1677 VkDevice device,
1678 const VkImageMemoryRequirementsInfo2* pInfo,
1679 VkMemoryRequirements2* pMemoryRequirements)
1680{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001681 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001682 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001683 auto resources = ResourceTracker::get();
1684 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001685}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001686static void dynCheck_entry_vkGetImageMemoryRequirements2(
1687 VkDevice device,
1688 const VkImageMemoryRequirementsInfo2* pInfo,
1689 VkMemoryRequirements2* pMemoryRequirements)
1690{
1691 auto resources = ResourceTracker::get();
1692 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1693 {
1694 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2", "VK_VERSION_1_1");
1695 }
1696 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001697 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001698 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1699}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001700static void entry_vkGetBufferMemoryRequirements2(
1701 VkDevice device,
1702 const VkBufferMemoryRequirementsInfo2* pInfo,
1703 VkMemoryRequirements2* pMemoryRequirements)
1704{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001705 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001706 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001707 auto resources = ResourceTracker::get();
1708 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001709}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001710static void dynCheck_entry_vkGetBufferMemoryRequirements2(
1711 VkDevice device,
1712 const VkBufferMemoryRequirementsInfo2* pInfo,
1713 VkMemoryRequirements2* pMemoryRequirements)
1714{
1715 auto resources = ResourceTracker::get();
1716 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1717 {
1718 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2", "VK_VERSION_1_1");
1719 }
1720 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001721 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001722 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1723}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001724static void entry_vkGetImageSparseMemoryRequirements2(
1725 VkDevice device,
1726 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1727 uint32_t* pSparseMemoryRequirementCount,
1728 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1729{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001730 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001731 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001732 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001733}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001734static void dynCheck_entry_vkGetImageSparseMemoryRequirements2(
1735 VkDevice device,
1736 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1737 uint32_t* pSparseMemoryRequirementCount,
1738 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1739{
1740 auto resources = ResourceTracker::get();
1741 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1742 {
1743 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2", "VK_VERSION_1_1");
1744 }
1745 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001746 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001747 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001748}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001749static void entry_vkGetPhysicalDeviceFeatures2(
1750 VkPhysicalDevice physicalDevice,
1751 VkPhysicalDeviceFeatures2* pFeatures)
1752{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001753 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001754 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001755 vkEnc->vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001756}
1757static void entry_vkGetPhysicalDeviceProperties2(
1758 VkPhysicalDevice physicalDevice,
1759 VkPhysicalDeviceProperties2* pProperties)
1760{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001761 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001762 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001763 vkEnc->vkGetPhysicalDeviceProperties2(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001764}
1765static void entry_vkGetPhysicalDeviceFormatProperties2(
1766 VkPhysicalDevice physicalDevice,
1767 VkFormat format,
1768 VkFormatProperties2* pFormatProperties)
1769{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001770 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001771 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001772 vkEnc->vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001773}
1774static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2(
1775 VkPhysicalDevice physicalDevice,
1776 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
1777 VkImageFormatProperties2* pImageFormatProperties)
1778{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001779 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001780 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001781 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07001782 auto resources = ResourceTracker::get();
1783 vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001784 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
1785}
1786static void entry_vkGetPhysicalDeviceQueueFamilyProperties2(
1787 VkPhysicalDevice physicalDevice,
1788 uint32_t* pQueueFamilyPropertyCount,
1789 VkQueueFamilyProperties2* pQueueFamilyProperties)
1790{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001791 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001792 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001793 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001794}
1795static void entry_vkGetPhysicalDeviceMemoryProperties2(
1796 VkPhysicalDevice physicalDevice,
1797 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
1798{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001799 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001800 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001801 vkEnc->vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001802}
1803static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2(
1804 VkPhysicalDevice physicalDevice,
1805 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
1806 uint32_t* pPropertyCount,
1807 VkSparseImageFormatProperties2* pProperties)
1808{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001809 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001810 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001811 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001812}
1813static void entry_vkTrimCommandPool(
1814 VkDevice device,
1815 VkCommandPool commandPool,
1816 VkCommandPoolTrimFlags flags)
1817{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001818 AEMU_SCOPED_TRACE("vkTrimCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001819 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001820 vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001821}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001822static void dynCheck_entry_vkTrimCommandPool(
1823 VkDevice device,
1824 VkCommandPool commandPool,
1825 VkCommandPoolTrimFlags flags)
1826{
1827 auto resources = ResourceTracker::get();
1828 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1829 {
1830 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPool", "VK_VERSION_1_1");
1831 }
1832 AEMU_SCOPED_TRACE("vkTrimCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001833 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001834 vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001835}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001836static void entry_vkGetDeviceQueue2(
1837 VkDevice device,
1838 const VkDeviceQueueInfo2* pQueueInfo,
1839 VkQueue* pQueue)
1840{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001841 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001842 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001843 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001844}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001845static void dynCheck_entry_vkGetDeviceQueue2(
1846 VkDevice device,
1847 const VkDeviceQueueInfo2* pQueueInfo,
1848 VkQueue* pQueue)
1849{
1850 auto resources = ResourceTracker::get();
1851 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1852 {
1853 sOnInvalidDynamicallyCheckedCall("vkGetDeviceQueue2", "VK_VERSION_1_1");
1854 }
1855 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001856 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001857 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001858}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001859static VkResult entry_vkCreateSamplerYcbcrConversion(
1860 VkDevice device,
1861 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1862 const VkAllocationCallbacks* pAllocator,
1863 VkSamplerYcbcrConversion* pYcbcrConversion)
1864{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001865 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001866 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001867 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08001868 auto resources = ResourceTracker::get();
1869 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001870 return vkCreateSamplerYcbcrConversion_VkResult_return;
1871}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001872static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversion(
1873 VkDevice device,
1874 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1875 const VkAllocationCallbacks* pAllocator,
1876 VkSamplerYcbcrConversion* pYcbcrConversion)
1877{
1878 auto resources = ResourceTracker::get();
1879 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1880 {
1881 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversion", "VK_VERSION_1_1");
1882 }
1883 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001884 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001885 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
1886 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
1887 return vkCreateSamplerYcbcrConversion_VkResult_return;
1888}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001889static void entry_vkDestroySamplerYcbcrConversion(
1890 VkDevice device,
1891 VkSamplerYcbcrConversion ycbcrConversion,
1892 const VkAllocationCallbacks* pAllocator)
1893{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001894 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001895 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07001896 auto resources = ResourceTracker::get();
1897 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001898}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001899static void dynCheck_entry_vkDestroySamplerYcbcrConversion(
1900 VkDevice device,
1901 VkSamplerYcbcrConversion ycbcrConversion,
1902 const VkAllocationCallbacks* pAllocator)
1903{
1904 auto resources = ResourceTracker::get();
1905 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1906 {
1907 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversion", "VK_VERSION_1_1");
1908 }
1909 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001910 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001911 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
1912}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001913static VkResult entry_vkCreateDescriptorUpdateTemplate(
1914 VkDevice device,
1915 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1916 const VkAllocationCallbacks* pAllocator,
1917 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1918{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001919 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001920 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001921 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001922 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001923 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1924}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001925static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplate(
1926 VkDevice device,
1927 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1928 const VkAllocationCallbacks* pAllocator,
1929 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1930{
1931 auto resources = ResourceTracker::get();
1932 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1933 {
1934 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplate", "VK_VERSION_1_1");
1935 }
1936 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001937 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001938 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001939 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001940 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1941}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001942static void entry_vkDestroyDescriptorUpdateTemplate(
1943 VkDevice device,
1944 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1945 const VkAllocationCallbacks* pAllocator)
1946{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001947 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001948 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001949 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001950}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001951static void dynCheck_entry_vkDestroyDescriptorUpdateTemplate(
1952 VkDevice device,
1953 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1954 const VkAllocationCallbacks* pAllocator)
1955{
1956 auto resources = ResourceTracker::get();
1957 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1958 {
1959 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplate", "VK_VERSION_1_1");
1960 }
1961 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001962 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001963 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001964}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001965static void entry_vkUpdateDescriptorSetWithTemplate(
1966 VkDevice device,
1967 VkDescriptorSet descriptorSet,
1968 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1969 const void* pData)
1970{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001971 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001972 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07001973 auto resources = ResourceTracker::get();
1974 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001975}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001976static void dynCheck_entry_vkUpdateDescriptorSetWithTemplate(
1977 VkDevice device,
1978 VkDescriptorSet descriptorSet,
1979 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1980 const void* pData)
1981{
1982 auto resources = ResourceTracker::get();
1983 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1984 {
1985 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplate", "VK_VERSION_1_1");
1986 }
1987 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001988 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001989 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
1990}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001991static void entry_vkGetPhysicalDeviceExternalBufferProperties(
1992 VkPhysicalDevice physicalDevice,
1993 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
1994 VkExternalBufferProperties* pExternalBufferProperties)
1995{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001996 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001997 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001998 vkEnc->vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001999}
2000static void entry_vkGetPhysicalDeviceExternalFenceProperties(
2001 VkPhysicalDevice physicalDevice,
2002 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
2003 VkExternalFenceProperties* pExternalFenceProperties)
2004{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002005 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002006 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07002007 auto resources = ResourceTracker::get();
2008 resources->on_vkGetPhysicalDeviceExternalFenceProperties(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002009}
2010static void entry_vkGetPhysicalDeviceExternalSemaphoreProperties(
2011 VkPhysicalDevice physicalDevice,
2012 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2013 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
2014{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002015 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002016 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002017 vkEnc->vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002018}
2019static void entry_vkGetDescriptorSetLayoutSupport(
2020 VkDevice device,
2021 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2022 VkDescriptorSetLayoutSupport* pSupport)
2023{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002024 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002025 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002026 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002027}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002028static void dynCheck_entry_vkGetDescriptorSetLayoutSupport(
2029 VkDevice device,
2030 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2031 VkDescriptorSetLayoutSupport* pSupport)
2032{
2033 auto resources = ResourceTracker::get();
2034 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2035 {
2036 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupport", "VK_VERSION_1_1");
2037 }
2038 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002039 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002040 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002041}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002042#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08002043#ifdef VK_VERSION_1_2
2044static void entry_vkCmdDrawIndirectCount(
2045 VkCommandBuffer commandBuffer,
2046 VkBuffer buffer,
2047 VkDeviceSize offset,
2048 VkBuffer countBuffer,
2049 VkDeviceSize countBufferOffset,
2050 uint32_t maxDrawCount,
2051 uint32_t stride)
2052{
2053 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCount");
2054 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2055 vkEnc->vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
2056}
2057static void entry_vkCmdDrawIndexedIndirectCount(
2058 VkCommandBuffer commandBuffer,
2059 VkBuffer buffer,
2060 VkDeviceSize offset,
2061 VkBuffer countBuffer,
2062 VkDeviceSize countBufferOffset,
2063 uint32_t maxDrawCount,
2064 uint32_t stride)
2065{
2066 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCount");
2067 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2068 vkEnc->vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
2069}
2070static VkResult entry_vkCreateRenderPass2(
2071 VkDevice device,
2072 const VkRenderPassCreateInfo2* pCreateInfo,
2073 const VkAllocationCallbacks* pAllocator,
2074 VkRenderPass* pRenderPass)
2075{
2076 AEMU_SCOPED_TRACE("vkCreateRenderPass2");
2077 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2078 VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
2079 vkCreateRenderPass2_VkResult_return = vkEnc->vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
2080 return vkCreateRenderPass2_VkResult_return;
2081}
2082static VkResult dynCheck_entry_vkCreateRenderPass2(
2083 VkDevice device,
2084 const VkRenderPassCreateInfo2* pCreateInfo,
2085 const VkAllocationCallbacks* pAllocator,
2086 VkRenderPass* pRenderPass)
2087{
2088 auto resources = ResourceTracker::get();
2089 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2090 {
2091 sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2", "VK_VERSION_1_2");
2092 }
2093 AEMU_SCOPED_TRACE("vkCreateRenderPass2");
2094 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2095 VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
2096 vkCreateRenderPass2_VkResult_return = vkEnc->vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
2097 return vkCreateRenderPass2_VkResult_return;
2098}
2099static void entry_vkCmdBeginRenderPass2(
2100 VkCommandBuffer commandBuffer,
2101 const VkRenderPassBeginInfo* pRenderPassBegin,
2102 const VkSubpassBeginInfo* pSubpassBeginInfo)
2103{
2104 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2");
2105 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2106 vkEnc->vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
2107}
2108static void entry_vkCmdNextSubpass2(
2109 VkCommandBuffer commandBuffer,
2110 const VkSubpassBeginInfo* pSubpassBeginInfo,
2111 const VkSubpassEndInfo* pSubpassEndInfo)
2112{
2113 AEMU_SCOPED_TRACE("vkCmdNextSubpass2");
2114 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2115 vkEnc->vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
2116}
2117static void entry_vkCmdEndRenderPass2(
2118 VkCommandBuffer commandBuffer,
2119 const VkSubpassEndInfo* pSubpassEndInfo)
2120{
2121 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2");
2122 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2123 vkEnc->vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo, true /* do lock */);
2124}
2125static void entry_vkResetQueryPool(
2126 VkDevice device,
2127 VkQueryPool queryPool,
2128 uint32_t firstQuery,
2129 uint32_t queryCount)
2130{
2131 AEMU_SCOPED_TRACE("vkResetQueryPool");
2132 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2133 vkEnc->vkResetQueryPool(device, queryPool, firstQuery, queryCount, true /* do lock */);
2134}
2135static void dynCheck_entry_vkResetQueryPool(
2136 VkDevice device,
2137 VkQueryPool queryPool,
2138 uint32_t firstQuery,
2139 uint32_t queryCount)
2140{
2141 auto resources = ResourceTracker::get();
2142 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2143 {
2144 sOnInvalidDynamicallyCheckedCall("vkResetQueryPool", "VK_VERSION_1_2");
2145 }
2146 AEMU_SCOPED_TRACE("vkResetQueryPool");
2147 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2148 vkEnc->vkResetQueryPool(device, queryPool, firstQuery, queryCount, true /* do lock */);
2149}
2150static VkResult entry_vkGetSemaphoreCounterValue(
2151 VkDevice device,
2152 VkSemaphore semaphore,
2153 uint64_t* pValue)
2154{
2155 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValue");
2156 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2157 VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
2158 vkGetSemaphoreCounterValue_VkResult_return = vkEnc->vkGetSemaphoreCounterValue(device, semaphore, pValue, true /* do lock */);
2159 return vkGetSemaphoreCounterValue_VkResult_return;
2160}
2161static VkResult dynCheck_entry_vkGetSemaphoreCounterValue(
2162 VkDevice device,
2163 VkSemaphore semaphore,
2164 uint64_t* pValue)
2165{
2166 auto resources = ResourceTracker::get();
2167 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2168 {
2169 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreCounterValue", "VK_VERSION_1_2");
2170 }
2171 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValue");
2172 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2173 VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
2174 vkGetSemaphoreCounterValue_VkResult_return = vkEnc->vkGetSemaphoreCounterValue(device, semaphore, pValue, true /* do lock */);
2175 return vkGetSemaphoreCounterValue_VkResult_return;
2176}
2177static VkResult entry_vkWaitSemaphores(
2178 VkDevice device,
2179 const VkSemaphoreWaitInfo* pWaitInfo,
2180 uint64_t timeout)
2181{
2182 AEMU_SCOPED_TRACE("vkWaitSemaphores");
2183 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2184 VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
2185 vkWaitSemaphores_VkResult_return = vkEnc->vkWaitSemaphores(device, pWaitInfo, timeout, true /* do lock */);
2186 return vkWaitSemaphores_VkResult_return;
2187}
2188static VkResult dynCheck_entry_vkWaitSemaphores(
2189 VkDevice device,
2190 const VkSemaphoreWaitInfo* pWaitInfo,
2191 uint64_t timeout)
2192{
2193 auto resources = ResourceTracker::get();
2194 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2195 {
2196 sOnInvalidDynamicallyCheckedCall("vkWaitSemaphores", "VK_VERSION_1_2");
2197 }
2198 AEMU_SCOPED_TRACE("vkWaitSemaphores");
2199 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2200 VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
2201 vkWaitSemaphores_VkResult_return = vkEnc->vkWaitSemaphores(device, pWaitInfo, timeout, true /* do lock */);
2202 return vkWaitSemaphores_VkResult_return;
2203}
2204static VkResult entry_vkSignalSemaphore(
2205 VkDevice device,
2206 const VkSemaphoreSignalInfo* pSignalInfo)
2207{
2208 AEMU_SCOPED_TRACE("vkSignalSemaphore");
2209 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2210 VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
2211 vkSignalSemaphore_VkResult_return = vkEnc->vkSignalSemaphore(device, pSignalInfo, true /* do lock */);
2212 return vkSignalSemaphore_VkResult_return;
2213}
2214static VkResult dynCheck_entry_vkSignalSemaphore(
2215 VkDevice device,
2216 const VkSemaphoreSignalInfo* pSignalInfo)
2217{
2218 auto resources = ResourceTracker::get();
2219 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2220 {
2221 sOnInvalidDynamicallyCheckedCall("vkSignalSemaphore", "VK_VERSION_1_2");
2222 }
2223 AEMU_SCOPED_TRACE("vkSignalSemaphore");
2224 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2225 VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
2226 vkSignalSemaphore_VkResult_return = vkEnc->vkSignalSemaphore(device, pSignalInfo, true /* do lock */);
2227 return vkSignalSemaphore_VkResult_return;
2228}
2229static VkDeviceAddress entry_vkGetBufferDeviceAddress(
2230 VkDevice device,
2231 const VkBufferDeviceAddressInfo* pInfo)
2232{
2233 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddress");
2234 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2235 VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return = (VkDeviceAddress)0;
2236 vkGetBufferDeviceAddress_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddress(device, pInfo, true /* do lock */);
2237 return vkGetBufferDeviceAddress_VkDeviceAddress_return;
2238}
2239static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddress(
2240 VkDevice device,
2241 const VkBufferDeviceAddressInfo* pInfo)
2242{
2243 auto resources = ResourceTracker::get();
2244 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2245 {
2246 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddress", "VK_VERSION_1_2");
2247 }
2248 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddress");
2249 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2250 VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return = (VkDeviceAddress)0;
2251 vkGetBufferDeviceAddress_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddress(device, pInfo, true /* do lock */);
2252 return vkGetBufferDeviceAddress_VkDeviceAddress_return;
2253}
2254static uint64_t entry_vkGetBufferOpaqueCaptureAddress(
2255 VkDevice device,
2256 const VkBufferDeviceAddressInfo* pInfo)
2257{
2258 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddress");
2259 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2260 uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2261 vkGetBufferOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2262 return vkGetBufferOpaqueCaptureAddress_uint64_t_return;
2263}
2264static uint64_t dynCheck_entry_vkGetBufferOpaqueCaptureAddress(
2265 VkDevice device,
2266 const VkBufferDeviceAddressInfo* pInfo)
2267{
2268 auto resources = ResourceTracker::get();
2269 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2270 {
2271 sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureAddress", "VK_VERSION_1_2");
2272 }
2273 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddress");
2274 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2275 uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2276 vkGetBufferOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2277 return vkGetBufferOpaqueCaptureAddress_uint64_t_return;
2278}
2279static uint64_t entry_vkGetDeviceMemoryOpaqueCaptureAddress(
2280 VkDevice device,
2281 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
2282{
2283 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddress");
2284 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2285 uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2286 vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2287 return vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return;
2288}
2289static uint64_t dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress(
2290 VkDevice device,
2291 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
2292{
2293 auto resources = ResourceTracker::get();
2294 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2295 {
2296 sOnInvalidDynamicallyCheckedCall("vkGetDeviceMemoryOpaqueCaptureAddress", "VK_VERSION_1_2");
2297 }
2298 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddress");
2299 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2300 uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2301 vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2302 return vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return;
2303}
2304#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002305#ifdef VK_KHR_surface
2306static void entry_vkDestroySurfaceKHR(
2307 VkInstance instance,
2308 VkSurfaceKHR surface,
2309 const VkAllocationCallbacks* pAllocator)
2310{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002311 AEMU_SCOPED_TRACE("vkDestroySurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002312 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002313 vkEnc->vkDestroySurfaceKHR(instance, surface, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002314}
2315static VkResult entry_vkGetPhysicalDeviceSurfaceSupportKHR(
2316 VkPhysicalDevice physicalDevice,
2317 uint32_t queueFamilyIndex,
2318 VkSurfaceKHR surface,
2319 VkBool32* pSupported)
2320{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002321 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002322 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002323 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002324 vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002325 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
2326}
2327static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
2328 VkPhysicalDevice physicalDevice,
2329 VkSurfaceKHR surface,
2330 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
2331{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002332 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002333 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002334 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002335 vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002336 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
2337}
2338static VkResult entry_vkGetPhysicalDeviceSurfaceFormatsKHR(
2339 VkPhysicalDevice physicalDevice,
2340 VkSurfaceKHR surface,
2341 uint32_t* pSurfaceFormatCount,
2342 VkSurfaceFormatKHR* pSurfaceFormats)
2343{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002344 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002345 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002346 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002347 vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002348 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
2349}
2350static VkResult entry_vkGetPhysicalDeviceSurfacePresentModesKHR(
2351 VkPhysicalDevice physicalDevice,
2352 VkSurfaceKHR surface,
2353 uint32_t* pPresentModeCount,
2354 VkPresentModeKHR* pPresentModes)
2355{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002356 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002357 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002358 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002359 vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002360 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
2361}
2362#endif
2363#ifdef VK_KHR_swapchain
2364static VkResult entry_vkCreateSwapchainKHR(
2365 VkDevice device,
2366 const VkSwapchainCreateInfoKHR* pCreateInfo,
2367 const VkAllocationCallbacks* pAllocator,
2368 VkSwapchainKHR* pSwapchain)
2369{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002370 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002371 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002372 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002373 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002374 return vkCreateSwapchainKHR_VkResult_return;
2375}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002376static VkResult dynCheck_entry_vkCreateSwapchainKHR(
2377 VkDevice device,
2378 const VkSwapchainCreateInfoKHR* pCreateInfo,
2379 const VkAllocationCallbacks* pAllocator,
2380 VkSwapchainKHR* pSwapchain)
2381{
2382 auto resources = ResourceTracker::get();
2383 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2384 {
2385 sOnInvalidDynamicallyCheckedCall("vkCreateSwapchainKHR", "VK_KHR_swapchain");
2386 }
2387 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002388 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002389 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002390 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002391 return vkCreateSwapchainKHR_VkResult_return;
2392}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002393static void entry_vkDestroySwapchainKHR(
2394 VkDevice device,
2395 VkSwapchainKHR swapchain,
2396 const VkAllocationCallbacks* pAllocator)
2397{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002398 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002399 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002400 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002401}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002402static void dynCheck_entry_vkDestroySwapchainKHR(
2403 VkDevice device,
2404 VkSwapchainKHR swapchain,
2405 const VkAllocationCallbacks* pAllocator)
2406{
2407 auto resources = ResourceTracker::get();
2408 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2409 {
2410 sOnInvalidDynamicallyCheckedCall("vkDestroySwapchainKHR", "VK_KHR_swapchain");
2411 }
2412 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002413 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002414 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002415}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002416static VkResult entry_vkGetSwapchainImagesKHR(
2417 VkDevice device,
2418 VkSwapchainKHR swapchain,
2419 uint32_t* pSwapchainImageCount,
2420 VkImage* pSwapchainImages)
2421{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002422 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002423 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002424 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002425 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002426 return vkGetSwapchainImagesKHR_VkResult_return;
2427}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002428static VkResult dynCheck_entry_vkGetSwapchainImagesKHR(
2429 VkDevice device,
2430 VkSwapchainKHR swapchain,
2431 uint32_t* pSwapchainImageCount,
2432 VkImage* pSwapchainImages)
2433{
2434 auto resources = ResourceTracker::get();
2435 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2436 {
2437 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainImagesKHR", "VK_KHR_swapchain");
2438 }
2439 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002440 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002441 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002442 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002443 return vkGetSwapchainImagesKHR_VkResult_return;
2444}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002445static VkResult entry_vkAcquireNextImageKHR(
2446 VkDevice device,
2447 VkSwapchainKHR swapchain,
2448 uint64_t timeout,
2449 VkSemaphore semaphore,
2450 VkFence fence,
2451 uint32_t* pImageIndex)
2452{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002453 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002454 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002455 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002456 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002457 return vkAcquireNextImageKHR_VkResult_return;
2458}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002459static VkResult dynCheck_entry_vkAcquireNextImageKHR(
2460 VkDevice device,
2461 VkSwapchainKHR swapchain,
2462 uint64_t timeout,
2463 VkSemaphore semaphore,
2464 VkFence fence,
2465 uint32_t* pImageIndex)
2466{
2467 auto resources = ResourceTracker::get();
2468 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2469 {
2470 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImageKHR", "VK_KHR_swapchain");
2471 }
2472 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002473 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002474 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002475 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002476 return vkAcquireNextImageKHR_VkResult_return;
2477}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002478static VkResult entry_vkQueuePresentKHR(
2479 VkQueue queue,
2480 const VkPresentInfoKHR* pPresentInfo)
2481{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002482 AEMU_SCOPED_TRACE("vkQueuePresentKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002483 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002484 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002485 vkQueuePresentKHR_VkResult_return = vkEnc->vkQueuePresentKHR(queue, pPresentInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002486 return vkQueuePresentKHR_VkResult_return;
2487}
2488static VkResult entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2489 VkDevice device,
2490 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2491{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002492 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002493 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002494 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002495 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002496 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2497}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002498static VkResult dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2499 VkDevice device,
2500 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2501{
2502 auto resources = ResourceTracker::get();
2503 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2504 {
2505 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPresentCapabilitiesKHR", "VK_KHR_swapchain");
2506 }
2507 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002508 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002509 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002510 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002511 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2512}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002513static VkResult entry_vkGetDeviceGroupSurfacePresentModesKHR(
2514 VkDevice device,
2515 VkSurfaceKHR surface,
2516 VkDeviceGroupPresentModeFlagsKHR* pModes)
2517{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002518 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002519 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002520 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002521 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002522 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2523}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002524static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR(
2525 VkDevice device,
2526 VkSurfaceKHR surface,
2527 VkDeviceGroupPresentModeFlagsKHR* pModes)
2528{
2529 auto resources = ResourceTracker::get();
2530 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2531 {
2532 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModesKHR", "VK_KHR_swapchain");
2533 }
2534 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002535 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002536 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002537 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002538 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2539}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002540static VkResult entry_vkGetPhysicalDevicePresentRectanglesKHR(
2541 VkPhysicalDevice physicalDevice,
2542 VkSurfaceKHR surface,
2543 uint32_t* pRectCount,
2544 VkRect2D* pRects)
2545{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002546 AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002547 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002548 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002549 vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = vkEnc->vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002550 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
2551}
2552static VkResult entry_vkAcquireNextImage2KHR(
2553 VkDevice device,
2554 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2555 uint32_t* pImageIndex)
2556{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002557 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002558 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002559 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002560 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002561 return vkAcquireNextImage2KHR_VkResult_return;
2562}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002563static VkResult dynCheck_entry_vkAcquireNextImage2KHR(
2564 VkDevice device,
2565 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2566 uint32_t* pImageIndex)
2567{
2568 auto resources = ResourceTracker::get();
2569 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2570 {
2571 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImage2KHR", "VK_KHR_swapchain");
2572 }
2573 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002574 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002575 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002576 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002577 return vkAcquireNextImage2KHR_VkResult_return;
2578}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002579#endif
2580#ifdef VK_KHR_display
2581static VkResult entry_vkGetPhysicalDeviceDisplayPropertiesKHR(
2582 VkPhysicalDevice physicalDevice,
2583 uint32_t* pPropertyCount,
2584 VkDisplayPropertiesKHR* pProperties)
2585{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002586 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002587 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002588 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002589 vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002590 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
2591}
2592static VkResult entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
2593 VkPhysicalDevice physicalDevice,
2594 uint32_t* pPropertyCount,
2595 VkDisplayPlanePropertiesKHR* pProperties)
2596{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002597 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002598 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002599 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002600 vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002601 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
2602}
2603static VkResult entry_vkGetDisplayPlaneSupportedDisplaysKHR(
2604 VkPhysicalDevice physicalDevice,
2605 uint32_t planeIndex,
2606 uint32_t* pDisplayCount,
2607 VkDisplayKHR* pDisplays)
2608{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002609 AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002610 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002611 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002612 vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = vkEnc->vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002613 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
2614}
2615static VkResult entry_vkGetDisplayModePropertiesKHR(
2616 VkPhysicalDevice physicalDevice,
2617 VkDisplayKHR display,
2618 uint32_t* pPropertyCount,
2619 VkDisplayModePropertiesKHR* pProperties)
2620{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002621 AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002622 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002623 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002624 vkGetDisplayModePropertiesKHR_VkResult_return = vkEnc->vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002625 return vkGetDisplayModePropertiesKHR_VkResult_return;
2626}
2627static VkResult entry_vkCreateDisplayModeKHR(
2628 VkPhysicalDevice physicalDevice,
2629 VkDisplayKHR display,
2630 const VkDisplayModeCreateInfoKHR* pCreateInfo,
2631 const VkAllocationCallbacks* pAllocator,
2632 VkDisplayModeKHR* pMode)
2633{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002634 AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002635 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002636 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002637 vkCreateDisplayModeKHR_VkResult_return = vkEnc->vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002638 return vkCreateDisplayModeKHR_VkResult_return;
2639}
2640static VkResult entry_vkGetDisplayPlaneCapabilitiesKHR(
2641 VkPhysicalDevice physicalDevice,
2642 VkDisplayModeKHR mode,
2643 uint32_t planeIndex,
2644 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
2645{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002646 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002647 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002648 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002649 vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002650 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
2651}
2652static VkResult entry_vkCreateDisplayPlaneSurfaceKHR(
2653 VkInstance instance,
2654 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
2655 const VkAllocationCallbacks* pAllocator,
2656 VkSurfaceKHR* pSurface)
2657{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002658 AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002659 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002660 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002661 vkCreateDisplayPlaneSurfaceKHR_VkResult_return = vkEnc->vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002662 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
2663}
2664#endif
2665#ifdef VK_KHR_display_swapchain
2666static VkResult entry_vkCreateSharedSwapchainsKHR(
2667 VkDevice device,
2668 uint32_t swapchainCount,
2669 const VkSwapchainCreateInfoKHR* pCreateInfos,
2670 const VkAllocationCallbacks* pAllocator,
2671 VkSwapchainKHR* pSwapchains)
2672{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002673 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002674 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002675 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002676 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002677 return vkCreateSharedSwapchainsKHR_VkResult_return;
2678}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002679static VkResult dynCheck_entry_vkCreateSharedSwapchainsKHR(
2680 VkDevice device,
2681 uint32_t swapchainCount,
2682 const VkSwapchainCreateInfoKHR* pCreateInfos,
2683 const VkAllocationCallbacks* pAllocator,
2684 VkSwapchainKHR* pSwapchains)
2685{
2686 auto resources = ResourceTracker::get();
2687 if (!resources->hasDeviceExtension(device, "VK_KHR_display_swapchain"))
2688 {
2689 sOnInvalidDynamicallyCheckedCall("vkCreateSharedSwapchainsKHR", "VK_KHR_display_swapchain");
2690 }
2691 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002692 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002693 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002694 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002695 return vkCreateSharedSwapchainsKHR_VkResult_return;
2696}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002697#endif
2698#ifdef VK_KHR_xlib_surface
2699static VkResult entry_vkCreateXlibSurfaceKHR(
2700 VkInstance instance,
2701 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
2702 const VkAllocationCallbacks* pAllocator,
2703 VkSurfaceKHR* pSurface)
2704{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002705 AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002706 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002707 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002708 vkCreateXlibSurfaceKHR_VkResult_return = vkEnc->vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002709 return vkCreateXlibSurfaceKHR_VkResult_return;
2710}
2711static VkBool32 entry_vkGetPhysicalDeviceXlibPresentationSupportKHR(
2712 VkPhysicalDevice physicalDevice,
2713 uint32_t queueFamilyIndex,
2714 Display* dpy,
2715 VisualID visualID)
2716{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002717 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002718 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002719 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002720 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002721 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
2722}
2723#endif
2724#ifdef VK_KHR_xcb_surface
2725static VkResult entry_vkCreateXcbSurfaceKHR(
2726 VkInstance instance,
2727 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
2728 const VkAllocationCallbacks* pAllocator,
2729 VkSurfaceKHR* pSurface)
2730{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002731 AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002732 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002733 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002734 vkCreateXcbSurfaceKHR_VkResult_return = vkEnc->vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002735 return vkCreateXcbSurfaceKHR_VkResult_return;
2736}
2737static VkBool32 entry_vkGetPhysicalDeviceXcbPresentationSupportKHR(
2738 VkPhysicalDevice physicalDevice,
2739 uint32_t queueFamilyIndex,
2740 xcb_connection_t* connection,
2741 xcb_visualid_t visual_id)
2742{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002743 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002744 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002745 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002746 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002747 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
2748}
2749#endif
2750#ifdef VK_KHR_wayland_surface
2751static VkResult entry_vkCreateWaylandSurfaceKHR(
2752 VkInstance instance,
2753 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
2754 const VkAllocationCallbacks* pAllocator,
2755 VkSurfaceKHR* pSurface)
2756{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002757 AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002758 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002759 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002760 vkCreateWaylandSurfaceKHR_VkResult_return = vkEnc->vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002761 return vkCreateWaylandSurfaceKHR_VkResult_return;
2762}
2763static VkBool32 entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
2764 VkPhysicalDevice physicalDevice,
2765 uint32_t queueFamilyIndex,
2766 wl_display* display)
2767{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002768 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002769 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002770 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002771 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002772 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
2773}
2774#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002775#ifdef VK_KHR_android_surface
2776static VkResult entry_vkCreateAndroidSurfaceKHR(
2777 VkInstance instance,
2778 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
2779 const VkAllocationCallbacks* pAllocator,
2780 VkSurfaceKHR* pSurface)
2781{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002782 AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002783 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002784 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002785 vkCreateAndroidSurfaceKHR_VkResult_return = vkEnc->vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002786 return vkCreateAndroidSurfaceKHR_VkResult_return;
2787}
2788#endif
2789#ifdef VK_KHR_win32_surface
2790static VkResult entry_vkCreateWin32SurfaceKHR(
2791 VkInstance instance,
2792 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
2793 const VkAllocationCallbacks* pAllocator,
2794 VkSurfaceKHR* pSurface)
2795{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002796 AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002797 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002798 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002799 vkCreateWin32SurfaceKHR_VkResult_return = vkEnc->vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002800 return vkCreateWin32SurfaceKHR_VkResult_return;
2801}
2802static VkBool32 entry_vkGetPhysicalDeviceWin32PresentationSupportKHR(
2803 VkPhysicalDevice physicalDevice,
2804 uint32_t queueFamilyIndex)
2805{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002806 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002807 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002808 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002809 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002810 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
2811}
2812#endif
2813#ifdef VK_KHR_sampler_mirror_clamp_to_edge
2814#endif
2815#ifdef VK_KHR_multiview
2816#endif
2817#ifdef VK_KHR_get_physical_device_properties2
2818static void entry_vkGetPhysicalDeviceFeatures2KHR(
2819 VkPhysicalDevice physicalDevice,
2820 VkPhysicalDeviceFeatures2* pFeatures)
2821{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002822 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002823 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002824 vkEnc->vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002825}
2826static void entry_vkGetPhysicalDeviceProperties2KHR(
2827 VkPhysicalDevice physicalDevice,
2828 VkPhysicalDeviceProperties2* pProperties)
2829{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002830 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002831 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002832 vkEnc->vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002833}
2834static void entry_vkGetPhysicalDeviceFormatProperties2KHR(
2835 VkPhysicalDevice physicalDevice,
2836 VkFormat format,
2837 VkFormatProperties2* pFormatProperties)
2838{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002839 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002840 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002841 vkEnc->vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002842}
2843static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2KHR(
2844 VkPhysicalDevice physicalDevice,
2845 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
2846 VkImageFormatProperties2* pImageFormatProperties)
2847{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002848 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002849 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002850 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07002851 auto resources = ResourceTracker::get();
2852 vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2KHR(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002853 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
2854}
2855static void entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
2856 VkPhysicalDevice physicalDevice,
2857 uint32_t* pQueueFamilyPropertyCount,
2858 VkQueueFamilyProperties2* pQueueFamilyProperties)
2859{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002860 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002861 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002862 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002863}
2864static void entry_vkGetPhysicalDeviceMemoryProperties2KHR(
2865 VkPhysicalDevice physicalDevice,
2866 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
2867{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002868 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002869 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002870 vkEnc->vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002871}
2872static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
2873 VkPhysicalDevice physicalDevice,
2874 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
2875 uint32_t* pPropertyCount,
2876 VkSparseImageFormatProperties2* pProperties)
2877{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002878 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002879 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002880 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002881}
2882#endif
2883#ifdef VK_KHR_device_group
2884static void entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2885 VkDevice device,
2886 uint32_t heapIndex,
2887 uint32_t localDeviceIndex,
2888 uint32_t remoteDeviceIndex,
2889 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2890{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002891 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002892 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002893 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002894}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002895static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2896 VkDevice device,
2897 uint32_t heapIndex,
2898 uint32_t localDeviceIndex,
2899 uint32_t remoteDeviceIndex,
2900 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2901{
2902 auto resources = ResourceTracker::get();
2903 if (!resources->hasDeviceExtension(device, "VK_KHR_device_group"))
2904 {
2905 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeaturesKHR", "VK_KHR_device_group");
2906 }
2907 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002908 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002909 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002910}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002911static void entry_vkCmdSetDeviceMaskKHR(
2912 VkCommandBuffer commandBuffer,
2913 uint32_t deviceMask)
2914{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002915 AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002916 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002917 vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002918}
2919static void entry_vkCmdDispatchBaseKHR(
2920 VkCommandBuffer commandBuffer,
2921 uint32_t baseGroupX,
2922 uint32_t baseGroupY,
2923 uint32_t baseGroupZ,
2924 uint32_t groupCountX,
2925 uint32_t groupCountY,
2926 uint32_t groupCountZ)
2927{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002928 AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002929 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002930 vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002931}
2932#endif
2933#ifdef VK_KHR_shader_draw_parameters
2934#endif
2935#ifdef VK_KHR_maintenance1
2936static void entry_vkTrimCommandPoolKHR(
2937 VkDevice device,
2938 VkCommandPool commandPool,
2939 VkCommandPoolTrimFlags flags)
2940{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002941 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002942 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002943 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002944}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002945static void dynCheck_entry_vkTrimCommandPoolKHR(
2946 VkDevice device,
2947 VkCommandPool commandPool,
2948 VkCommandPoolTrimFlags flags)
2949{
2950 auto resources = ResourceTracker::get();
2951 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance1"))
2952 {
2953 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPoolKHR", "VK_KHR_maintenance1");
2954 }
2955 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002956 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002957 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002958}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002959#endif
2960#ifdef VK_KHR_device_group_creation
2961static VkResult entry_vkEnumeratePhysicalDeviceGroupsKHR(
2962 VkInstance instance,
2963 uint32_t* pPhysicalDeviceGroupCount,
2964 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
2965{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002966 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002967 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002968 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002969 vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002970 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
2971}
2972#endif
2973#ifdef VK_KHR_external_memory_capabilities
2974static void entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
2975 VkPhysicalDevice physicalDevice,
2976 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
2977 VkExternalBufferProperties* pExternalBufferProperties)
2978{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002979 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002980 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002981 vkEnc->vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002982}
2983#endif
2984#ifdef VK_KHR_external_memory
2985#endif
2986#ifdef VK_KHR_external_memory_win32
2987static VkResult entry_vkGetMemoryWin32HandleKHR(
2988 VkDevice device,
2989 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2990 HANDLE* pHandle)
2991{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002992 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002993 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002994 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002995 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002996 return vkGetMemoryWin32HandleKHR_VkResult_return;
2997}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002998static VkResult dynCheck_entry_vkGetMemoryWin32HandleKHR(
2999 VkDevice device,
3000 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3001 HANDLE* pHandle)
3002{
3003 auto resources = ResourceTracker::get();
3004 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
3005 {
3006 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleKHR", "VK_KHR_external_memory_win32");
3007 }
3008 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003009 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003010 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003011 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003012 return vkGetMemoryWin32HandleKHR_VkResult_return;
3013}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003014static VkResult entry_vkGetMemoryWin32HandlePropertiesKHR(
3015 VkDevice device,
3016 VkExternalMemoryHandleTypeFlagBits handleType,
3017 HANDLE handle,
3018 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
3019{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003020 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003021 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003022 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003023 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003024 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
3025}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003026static VkResult dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR(
3027 VkDevice device,
3028 VkExternalMemoryHandleTypeFlagBits handleType,
3029 HANDLE handle,
3030 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
3031{
3032 auto resources = ResourceTracker::get();
3033 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
3034 {
3035 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandlePropertiesKHR", "VK_KHR_external_memory_win32");
3036 }
3037 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003038 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003039 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003040 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003041 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
3042}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003043#endif
3044#ifdef VK_KHR_external_memory_fd
3045static VkResult entry_vkGetMemoryFdKHR(
3046 VkDevice device,
3047 const VkMemoryGetFdInfoKHR* pGetFdInfo,
3048 int* pFd)
3049{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003050 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003051 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003052 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003053 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003054 return vkGetMemoryFdKHR_VkResult_return;
3055}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003056static VkResult dynCheck_entry_vkGetMemoryFdKHR(
3057 VkDevice device,
3058 const VkMemoryGetFdInfoKHR* pGetFdInfo,
3059 int* pFd)
3060{
3061 auto resources = ResourceTracker::get();
3062 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
3063 {
3064 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdKHR", "VK_KHR_external_memory_fd");
3065 }
3066 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003067 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003068 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003069 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003070 return vkGetMemoryFdKHR_VkResult_return;
3071}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003072static VkResult entry_vkGetMemoryFdPropertiesKHR(
3073 VkDevice device,
3074 VkExternalMemoryHandleTypeFlagBits handleType,
3075 int fd,
3076 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
3077{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003078 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003079 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003080 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003081 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003082 return vkGetMemoryFdPropertiesKHR_VkResult_return;
3083}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003084static VkResult dynCheck_entry_vkGetMemoryFdPropertiesKHR(
3085 VkDevice device,
3086 VkExternalMemoryHandleTypeFlagBits handleType,
3087 int fd,
3088 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
3089{
3090 auto resources = ResourceTracker::get();
3091 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
3092 {
3093 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdPropertiesKHR", "VK_KHR_external_memory_fd");
3094 }
3095 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003096 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003097 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003098 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003099 return vkGetMemoryFdPropertiesKHR_VkResult_return;
3100}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003101#endif
3102#ifdef VK_KHR_win32_keyed_mutex
3103#endif
3104#ifdef VK_KHR_external_semaphore_capabilities
3105static void entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
3106 VkPhysicalDevice physicalDevice,
3107 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
3108 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
3109{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003110 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003111 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003112 vkEnc->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003113}
3114#endif
3115#ifdef VK_KHR_external_semaphore
3116#endif
3117#ifdef VK_KHR_external_semaphore_win32
3118static VkResult entry_vkImportSemaphoreWin32HandleKHR(
3119 VkDevice device,
3120 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
3121{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003122 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003123 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003124 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003125 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003126 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
3127}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003128static VkResult dynCheck_entry_vkImportSemaphoreWin32HandleKHR(
3129 VkDevice device,
3130 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
3131{
3132 auto resources = ResourceTracker::get();
3133 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
3134 {
3135 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
3136 }
3137 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003138 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003139 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003140 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003141 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
3142}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003143static VkResult entry_vkGetSemaphoreWin32HandleKHR(
3144 VkDevice device,
3145 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3146 HANDLE* pHandle)
3147{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003148 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003149 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003150 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003151 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003152 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
3153}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003154static VkResult dynCheck_entry_vkGetSemaphoreWin32HandleKHR(
3155 VkDevice device,
3156 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3157 HANDLE* pHandle)
3158{
3159 auto resources = ResourceTracker::get();
3160 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
3161 {
3162 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
3163 }
3164 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003165 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003166 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003167 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003168 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
3169}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003170#endif
3171#ifdef VK_KHR_external_semaphore_fd
3172static VkResult entry_vkImportSemaphoreFdKHR(
3173 VkDevice device,
3174 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
3175{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003176 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003177 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003178 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08003179 auto resources = ResourceTracker::get();
3180 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003181 return vkImportSemaphoreFdKHR_VkResult_return;
3182}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003183static VkResult dynCheck_entry_vkImportSemaphoreFdKHR(
3184 VkDevice device,
3185 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
3186{
3187 auto resources = ResourceTracker::get();
3188 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3189 {
3190 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3191 }
3192 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003193 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003194 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
3195 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
3196 return vkImportSemaphoreFdKHR_VkResult_return;
3197}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003198static VkResult entry_vkGetSemaphoreFdKHR(
3199 VkDevice device,
3200 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3201 int* pFd)
3202{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003203 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003204 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003205 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08003206 auto resources = ResourceTracker::get();
3207 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003208 return vkGetSemaphoreFdKHR_VkResult_return;
3209}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003210static VkResult dynCheck_entry_vkGetSemaphoreFdKHR(
3211 VkDevice device,
3212 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3213 int* pFd)
3214{
3215 auto resources = ResourceTracker::get();
3216 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3217 {
3218 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3219 }
3220 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003221 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003222 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
3223 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3224 return vkGetSemaphoreFdKHR_VkResult_return;
3225}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003226#endif
3227#ifdef VK_KHR_push_descriptor
3228static void entry_vkCmdPushDescriptorSetKHR(
3229 VkCommandBuffer commandBuffer,
3230 VkPipelineBindPoint pipelineBindPoint,
3231 VkPipelineLayout layout,
3232 uint32_t set,
3233 uint32_t descriptorWriteCount,
3234 const VkWriteDescriptorSet* pDescriptorWrites)
3235{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003236 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003237 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003238 vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003239}
3240static void entry_vkCmdPushDescriptorSetWithTemplateKHR(
3241 VkCommandBuffer commandBuffer,
3242 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3243 VkPipelineLayout layout,
3244 uint32_t set,
3245 const void* pData)
3246{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003247 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003248 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003249 vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003250}
3251#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003252#ifdef VK_KHR_shader_float16_int8
3253#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003254#ifdef VK_KHR_16bit_storage
3255#endif
3256#ifdef VK_KHR_incremental_present
3257#endif
3258#ifdef VK_KHR_descriptor_update_template
3259static VkResult entry_vkCreateDescriptorUpdateTemplateKHR(
3260 VkDevice device,
3261 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3262 const VkAllocationCallbacks* pAllocator,
3263 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3264{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003265 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003266 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003267 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003268 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003269 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3270}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003271static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR(
3272 VkDevice device,
3273 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3274 const VkAllocationCallbacks* pAllocator,
3275 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3276{
3277 auto resources = ResourceTracker::get();
3278 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3279 {
3280 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3281 }
3282 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003283 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003284 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003285 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003286 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3287}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003288static void entry_vkDestroyDescriptorUpdateTemplateKHR(
3289 VkDevice device,
3290 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3291 const VkAllocationCallbacks* pAllocator)
3292{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003293 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003294 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003295 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003296}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003297static void dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR(
3298 VkDevice device,
3299 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3300 const VkAllocationCallbacks* pAllocator)
3301{
3302 auto resources = ResourceTracker::get();
3303 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3304 {
3305 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3306 }
3307 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003308 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003309 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003310}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003311static void entry_vkUpdateDescriptorSetWithTemplateKHR(
3312 VkDevice device,
3313 VkDescriptorSet descriptorSet,
3314 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3315 const void* pData)
3316{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003317 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003318 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003319 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003320}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003321static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR(
3322 VkDevice device,
3323 VkDescriptorSet descriptorSet,
3324 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3325 const void* pData)
3326{
3327 auto resources = ResourceTracker::get();
3328 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3329 {
3330 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateKHR", "VK_KHR_descriptor_update_template");
3331 }
3332 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003333 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003334 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003335}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003336#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003337#ifdef VK_KHR_imageless_framebuffer
3338#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003339#ifdef VK_KHR_create_renderpass2
3340static VkResult entry_vkCreateRenderPass2KHR(
3341 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08003342 const VkRenderPassCreateInfo2* pCreateInfo,
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003343 const VkAllocationCallbacks* pAllocator,
3344 VkRenderPass* pRenderPass)
3345{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003346 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003347 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003348 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003349 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003350 return vkCreateRenderPass2KHR_VkResult_return;
3351}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003352static VkResult dynCheck_entry_vkCreateRenderPass2KHR(
3353 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08003354 const VkRenderPassCreateInfo2* pCreateInfo,
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003355 const VkAllocationCallbacks* pAllocator,
3356 VkRenderPass* pRenderPass)
3357{
3358 auto resources = ResourceTracker::get();
3359 if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"))
3360 {
3361 sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2KHR", "VK_KHR_create_renderpass2");
3362 }
3363 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003364 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003365 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003366 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003367 return vkCreateRenderPass2KHR_VkResult_return;
3368}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003369static void entry_vkCmdBeginRenderPass2KHR(
3370 VkCommandBuffer commandBuffer,
3371 const VkRenderPassBeginInfo* pRenderPassBegin,
Yilong Lia8d45f12021-02-07 02:30:21 -08003372 const VkSubpassBeginInfo* pSubpassBeginInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003373{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003374 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003375 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003376 vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003377}
3378static void entry_vkCmdNextSubpass2KHR(
3379 VkCommandBuffer commandBuffer,
Yilong Lia8d45f12021-02-07 02:30:21 -08003380 const VkSubpassBeginInfo* pSubpassBeginInfo,
3381 const VkSubpassEndInfo* pSubpassEndInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003382{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003383 AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003384 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003385 vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003386}
3387static void entry_vkCmdEndRenderPass2KHR(
3388 VkCommandBuffer commandBuffer,
Yilong Lia8d45f12021-02-07 02:30:21 -08003389 const VkSubpassEndInfo* pSubpassEndInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003390{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003391 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003392 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003393 vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003394}
3395#endif
3396#ifdef VK_KHR_shared_presentable_image
3397static VkResult entry_vkGetSwapchainStatusKHR(
3398 VkDevice device,
3399 VkSwapchainKHR swapchain)
3400{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003401 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003402 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003403 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003404 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003405 return vkGetSwapchainStatusKHR_VkResult_return;
3406}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003407static VkResult dynCheck_entry_vkGetSwapchainStatusKHR(
3408 VkDevice device,
3409 VkSwapchainKHR swapchain)
3410{
3411 auto resources = ResourceTracker::get();
3412 if (!resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image"))
3413 {
3414 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainStatusKHR", "VK_KHR_shared_presentable_image");
3415 }
3416 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003417 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003418 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003419 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003420 return vkGetSwapchainStatusKHR_VkResult_return;
3421}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003422#endif
3423#ifdef VK_KHR_external_fence_capabilities
3424static void entry_vkGetPhysicalDeviceExternalFencePropertiesKHR(
3425 VkPhysicalDevice physicalDevice,
3426 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
3427 VkExternalFenceProperties* pExternalFenceProperties)
3428{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003429 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003430 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003431 auto resources = ResourceTracker::get();
3432 resources->on_vkGetPhysicalDeviceExternalFencePropertiesKHR(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003433}
3434#endif
3435#ifdef VK_KHR_external_fence
3436#endif
3437#ifdef VK_KHR_external_fence_win32
3438static VkResult entry_vkImportFenceWin32HandleKHR(
3439 VkDevice device,
3440 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3441{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003442 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003443 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003444 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003445 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003446 return vkImportFenceWin32HandleKHR_VkResult_return;
3447}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003448static VkResult dynCheck_entry_vkImportFenceWin32HandleKHR(
3449 VkDevice device,
3450 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3451{
3452 auto resources = ResourceTracker::get();
3453 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3454 {
3455 sOnInvalidDynamicallyCheckedCall("vkImportFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3456 }
3457 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003458 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003459 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003460 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003461 return vkImportFenceWin32HandleKHR_VkResult_return;
3462}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003463static VkResult entry_vkGetFenceWin32HandleKHR(
3464 VkDevice device,
3465 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3466 HANDLE* pHandle)
3467{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003468 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003469 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003470 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003471 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003472 return vkGetFenceWin32HandleKHR_VkResult_return;
3473}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003474static VkResult dynCheck_entry_vkGetFenceWin32HandleKHR(
3475 VkDevice device,
3476 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3477 HANDLE* pHandle)
3478{
3479 auto resources = ResourceTracker::get();
3480 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3481 {
3482 sOnInvalidDynamicallyCheckedCall("vkGetFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3483 }
3484 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003485 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003486 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003487 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003488 return vkGetFenceWin32HandleKHR_VkResult_return;
3489}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003490#endif
3491#ifdef VK_KHR_external_fence_fd
3492static VkResult entry_vkImportFenceFdKHR(
3493 VkDevice device,
3494 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3495{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003496 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003497 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003498 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003499 auto resources = ResourceTracker::get();
3500 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003501 return vkImportFenceFdKHR_VkResult_return;
3502}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003503static VkResult dynCheck_entry_vkImportFenceFdKHR(
3504 VkDevice device,
3505 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3506{
3507 auto resources = ResourceTracker::get();
3508 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3509 {
3510 sOnInvalidDynamicallyCheckedCall("vkImportFenceFdKHR", "VK_KHR_external_fence_fd");
3511 }
3512 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003513 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003514 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
3515 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
3516 return vkImportFenceFdKHR_VkResult_return;
3517}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003518static VkResult entry_vkGetFenceFdKHR(
3519 VkDevice device,
3520 const VkFenceGetFdInfoKHR* pGetFdInfo,
3521 int* pFd)
3522{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003523 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003524 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003525 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003526 auto resources = ResourceTracker::get();
3527 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003528 return vkGetFenceFdKHR_VkResult_return;
3529}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003530static VkResult dynCheck_entry_vkGetFenceFdKHR(
3531 VkDevice device,
3532 const VkFenceGetFdInfoKHR* pGetFdInfo,
3533 int* pFd)
3534{
3535 auto resources = ResourceTracker::get();
3536 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3537 {
3538 sOnInvalidDynamicallyCheckedCall("vkGetFenceFdKHR", "VK_KHR_external_fence_fd");
3539 }
3540 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003541 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003542 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
3543 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3544 return vkGetFenceFdKHR_VkResult_return;
3545}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003546#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003547#ifdef VK_KHR_performance_query
3548static VkResult entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
3549 VkPhysicalDevice physicalDevice,
3550 uint32_t queueFamilyIndex,
3551 uint32_t* pCounterCount,
3552 VkPerformanceCounterKHR* pCounters,
3553 VkPerformanceCounterDescriptionKHR* pCounterDescriptions)
3554{
3555 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
3556 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3557 VkResult vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return = (VkResult)0;
3558 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, true /* do lock */);
3559 return vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return;
3560}
3561static void entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
3562 VkPhysicalDevice physicalDevice,
3563 const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo,
3564 uint32_t* pNumPasses)
3565{
3566 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
3567 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3568 vkEnc->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, true /* do lock */);
3569}
3570static VkResult entry_vkAcquireProfilingLockKHR(
3571 VkDevice device,
3572 const VkAcquireProfilingLockInfoKHR* pInfo)
3573{
3574 AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
3575 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3576 VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
3577 vkAcquireProfilingLockKHR_VkResult_return = vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
3578 return vkAcquireProfilingLockKHR_VkResult_return;
3579}
3580static VkResult dynCheck_entry_vkAcquireProfilingLockKHR(
3581 VkDevice device,
3582 const VkAcquireProfilingLockInfoKHR* pInfo)
3583{
3584 auto resources = ResourceTracker::get();
3585 if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query"))
3586 {
3587 sOnInvalidDynamicallyCheckedCall("vkAcquireProfilingLockKHR", "VK_KHR_performance_query");
3588 }
3589 AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
3590 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3591 VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
3592 vkAcquireProfilingLockKHR_VkResult_return = vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
3593 return vkAcquireProfilingLockKHR_VkResult_return;
3594}
3595static void entry_vkReleaseProfilingLockKHR(
3596 VkDevice device)
3597{
3598 AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
3599 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3600 vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
3601}
3602static void dynCheck_entry_vkReleaseProfilingLockKHR(
3603 VkDevice device)
3604{
3605 auto resources = ResourceTracker::get();
3606 if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query"))
3607 {
3608 sOnInvalidDynamicallyCheckedCall("vkReleaseProfilingLockKHR", "VK_KHR_performance_query");
3609 }
3610 AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
3611 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3612 vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
3613}
3614#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003615#ifdef VK_KHR_maintenance2
3616#endif
3617#ifdef VK_KHR_get_surface_capabilities2
3618static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
3619 VkPhysicalDevice physicalDevice,
3620 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3621 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
3622{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003623 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003624 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003625 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003626 vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003627 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
3628}
3629static VkResult entry_vkGetPhysicalDeviceSurfaceFormats2KHR(
3630 VkPhysicalDevice physicalDevice,
3631 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3632 uint32_t* pSurfaceFormatCount,
3633 VkSurfaceFormat2KHR* pSurfaceFormats)
3634{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003635 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003636 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003637 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003638 vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003639 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
3640}
3641#endif
3642#ifdef VK_KHR_variable_pointers
3643#endif
3644#ifdef VK_KHR_get_display_properties2
3645static VkResult entry_vkGetPhysicalDeviceDisplayProperties2KHR(
3646 VkPhysicalDevice physicalDevice,
3647 uint32_t* pPropertyCount,
3648 VkDisplayProperties2KHR* pProperties)
3649{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003650 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003651 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003652 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003653 vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003654 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
3655}
3656static VkResult entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
3657 VkPhysicalDevice physicalDevice,
3658 uint32_t* pPropertyCount,
3659 VkDisplayPlaneProperties2KHR* pProperties)
3660{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003661 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003662 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003663 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003664 vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003665 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
3666}
3667static VkResult entry_vkGetDisplayModeProperties2KHR(
3668 VkPhysicalDevice physicalDevice,
3669 VkDisplayKHR display,
3670 uint32_t* pPropertyCount,
3671 VkDisplayModeProperties2KHR* pProperties)
3672{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003673 AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003674 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003675 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003676 vkGetDisplayModeProperties2KHR_VkResult_return = vkEnc->vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003677 return vkGetDisplayModeProperties2KHR_VkResult_return;
3678}
3679static VkResult entry_vkGetDisplayPlaneCapabilities2KHR(
3680 VkPhysicalDevice physicalDevice,
3681 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
3682 VkDisplayPlaneCapabilities2KHR* pCapabilities)
3683{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003684 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003685 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003686 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003687 vkGetDisplayPlaneCapabilities2KHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003688 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
3689}
3690#endif
3691#ifdef VK_KHR_dedicated_allocation
3692#endif
3693#ifdef VK_KHR_storage_buffer_storage_class
3694#endif
3695#ifdef VK_KHR_relaxed_block_layout
3696#endif
3697#ifdef VK_KHR_get_memory_requirements2
3698static void entry_vkGetImageMemoryRequirements2KHR(
3699 VkDevice device,
3700 const VkImageMemoryRequirementsInfo2* pInfo,
3701 VkMemoryRequirements2* pMemoryRequirements)
3702{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003703 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003704 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003705 auto resources = ResourceTracker::get();
3706 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003707}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003708static void dynCheck_entry_vkGetImageMemoryRequirements2KHR(
3709 VkDevice device,
3710 const VkImageMemoryRequirementsInfo2* pInfo,
3711 VkMemoryRequirements2* pMemoryRequirements)
3712{
3713 auto resources = ResourceTracker::get();
3714 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3715 {
3716 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3717 }
3718 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003719 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003720 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3721}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003722static void entry_vkGetBufferMemoryRequirements2KHR(
3723 VkDevice device,
3724 const VkBufferMemoryRequirementsInfo2* pInfo,
3725 VkMemoryRequirements2* pMemoryRequirements)
3726{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003727 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003728 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003729 auto resources = ResourceTracker::get();
3730 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003731}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003732static void dynCheck_entry_vkGetBufferMemoryRequirements2KHR(
3733 VkDevice device,
3734 const VkBufferMemoryRequirementsInfo2* pInfo,
3735 VkMemoryRequirements2* pMemoryRequirements)
3736{
3737 auto resources = ResourceTracker::get();
3738 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3739 {
3740 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3741 }
3742 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003743 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003744 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3745}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003746static void entry_vkGetImageSparseMemoryRequirements2KHR(
3747 VkDevice device,
3748 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3749 uint32_t* pSparseMemoryRequirementCount,
3750 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3751{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003752 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003753 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003754 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003755}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003756static void dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR(
3757 VkDevice device,
3758 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3759 uint32_t* pSparseMemoryRequirementCount,
3760 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3761{
3762 auto resources = ResourceTracker::get();
3763 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3764 {
3765 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3766 }
3767 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003768 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003769 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003770}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003771#endif
3772#ifdef VK_KHR_image_format_list
3773#endif
3774#ifdef VK_KHR_sampler_ycbcr_conversion
3775static VkResult entry_vkCreateSamplerYcbcrConversionKHR(
3776 VkDevice device,
3777 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3778 const VkAllocationCallbacks* pAllocator,
3779 VkSamplerYcbcrConversion* pYcbcrConversion)
3780{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003781 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003782 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003783 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08003784 auto resources = ResourceTracker::get();
3785 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003786 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3787}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003788static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversionKHR(
3789 VkDevice device,
3790 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3791 const VkAllocationCallbacks* pAllocator,
3792 VkSamplerYcbcrConversion* pYcbcrConversion)
3793{
3794 auto resources = ResourceTracker::get();
3795 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3796 {
3797 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3798 }
3799 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003800 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003801 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
3802 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
3803 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3804}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003805static void entry_vkDestroySamplerYcbcrConversionKHR(
3806 VkDevice device,
3807 VkSamplerYcbcrConversion ycbcrConversion,
3808 const VkAllocationCallbacks* pAllocator)
3809{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003810 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003811 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07003812 auto resources = ResourceTracker::get();
3813 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003814}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003815static void dynCheck_entry_vkDestroySamplerYcbcrConversionKHR(
3816 VkDevice device,
3817 VkSamplerYcbcrConversion ycbcrConversion,
3818 const VkAllocationCallbacks* pAllocator)
3819{
3820 auto resources = ResourceTracker::get();
3821 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3822 {
3823 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3824 }
3825 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003826 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003827 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
3828}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003829#endif
3830#ifdef VK_KHR_bind_memory2
3831static VkResult entry_vkBindBufferMemory2KHR(
3832 VkDevice device,
3833 uint32_t bindInfoCount,
3834 const VkBindBufferMemoryInfo* pBindInfos)
3835{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003836 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003837 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003838 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003839 auto resources = ResourceTracker::get();
3840 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003841 return vkBindBufferMemory2KHR_VkResult_return;
3842}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003843static VkResult dynCheck_entry_vkBindBufferMemory2KHR(
3844 VkDevice device,
3845 uint32_t bindInfoCount,
3846 const VkBindBufferMemoryInfo* pBindInfos)
3847{
3848 auto resources = ResourceTracker::get();
3849 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3850 {
3851 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2KHR", "VK_KHR_bind_memory2");
3852 }
3853 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003854 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003855 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
3856 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3857 return vkBindBufferMemory2KHR_VkResult_return;
3858}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003859static VkResult entry_vkBindImageMemory2KHR(
3860 VkDevice device,
3861 uint32_t bindInfoCount,
3862 const VkBindImageMemoryInfo* pBindInfos)
3863{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003864 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003865 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003866 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003867 auto resources = ResourceTracker::get();
3868 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003869 return vkBindImageMemory2KHR_VkResult_return;
3870}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003871static VkResult dynCheck_entry_vkBindImageMemory2KHR(
3872 VkDevice device,
3873 uint32_t bindInfoCount,
3874 const VkBindImageMemoryInfo* pBindInfos)
3875{
3876 auto resources = ResourceTracker::get();
3877 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3878 {
3879 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2KHR", "VK_KHR_bind_memory2");
3880 }
3881 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003882 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003883 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
3884 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3885 return vkBindImageMemory2KHR_VkResult_return;
3886}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003887#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003888#ifdef VK_KHR_portability_subset
3889#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003890#ifdef VK_KHR_maintenance3
3891static void entry_vkGetDescriptorSetLayoutSupportKHR(
3892 VkDevice device,
3893 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3894 VkDescriptorSetLayoutSupport* pSupport)
3895{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003896 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003897 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003898 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003899}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003900static void dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR(
3901 VkDevice device,
3902 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3903 VkDescriptorSetLayoutSupport* pSupport)
3904{
3905 auto resources = ResourceTracker::get();
3906 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance3"))
3907 {
3908 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupportKHR", "VK_KHR_maintenance3");
3909 }
3910 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003911 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003912 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003913}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003914#endif
3915#ifdef VK_KHR_draw_indirect_count
3916static void entry_vkCmdDrawIndirectCountKHR(
3917 VkCommandBuffer commandBuffer,
3918 VkBuffer buffer,
3919 VkDeviceSize offset,
3920 VkBuffer countBuffer,
3921 VkDeviceSize countBufferOffset,
3922 uint32_t maxDrawCount,
3923 uint32_t stride)
3924{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003925 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003926 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003927 vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003928}
3929static void entry_vkCmdDrawIndexedIndirectCountKHR(
3930 VkCommandBuffer commandBuffer,
3931 VkBuffer buffer,
3932 VkDeviceSize offset,
3933 VkBuffer countBuffer,
3934 VkDeviceSize countBufferOffset,
3935 uint32_t maxDrawCount,
3936 uint32_t stride)
3937{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003938 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003939 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003940 vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003941}
3942#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003943#ifdef VK_KHR_shader_subgroup_extended_types
3944#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003945#ifdef VK_KHR_8bit_storage
3946#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003947#ifdef VK_KHR_shader_atomic_int64
3948#endif
3949#ifdef VK_KHR_shader_clock
3950#endif
3951#ifdef VK_KHR_driver_properties
3952#endif
3953#ifdef VK_KHR_shader_float_controls
3954#endif
3955#ifdef VK_KHR_depth_stencil_resolve
3956#endif
3957#ifdef VK_KHR_swapchain_mutable_format
3958#endif
3959#ifdef VK_KHR_timeline_semaphore
3960static VkResult entry_vkGetSemaphoreCounterValueKHR(
3961 VkDevice device,
3962 VkSemaphore semaphore,
3963 uint64_t* pValue)
3964{
3965 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
3966 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3967 VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
3968 vkGetSemaphoreCounterValueKHR_VkResult_return = vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
3969 return vkGetSemaphoreCounterValueKHR_VkResult_return;
3970}
3971static VkResult dynCheck_entry_vkGetSemaphoreCounterValueKHR(
3972 VkDevice device,
3973 VkSemaphore semaphore,
3974 uint64_t* pValue)
3975{
3976 auto resources = ResourceTracker::get();
3977 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
3978 {
3979 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreCounterValueKHR", "VK_KHR_timeline_semaphore");
3980 }
3981 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
3982 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3983 VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
3984 vkGetSemaphoreCounterValueKHR_VkResult_return = vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
3985 return vkGetSemaphoreCounterValueKHR_VkResult_return;
3986}
3987static VkResult entry_vkWaitSemaphoresKHR(
3988 VkDevice device,
3989 const VkSemaphoreWaitInfo* pWaitInfo,
3990 uint64_t timeout)
3991{
3992 AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
3993 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3994 VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
3995 vkWaitSemaphoresKHR_VkResult_return = vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
3996 return vkWaitSemaphoresKHR_VkResult_return;
3997}
3998static VkResult dynCheck_entry_vkWaitSemaphoresKHR(
3999 VkDevice device,
4000 const VkSemaphoreWaitInfo* pWaitInfo,
4001 uint64_t timeout)
4002{
4003 auto resources = ResourceTracker::get();
4004 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
4005 {
4006 sOnInvalidDynamicallyCheckedCall("vkWaitSemaphoresKHR", "VK_KHR_timeline_semaphore");
4007 }
4008 AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
4009 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4010 VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
4011 vkWaitSemaphoresKHR_VkResult_return = vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
4012 return vkWaitSemaphoresKHR_VkResult_return;
4013}
4014static VkResult entry_vkSignalSemaphoreKHR(
4015 VkDevice device,
4016 const VkSemaphoreSignalInfo* pSignalInfo)
4017{
4018 AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
4019 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4020 VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
4021 vkSignalSemaphoreKHR_VkResult_return = vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
4022 return vkSignalSemaphoreKHR_VkResult_return;
4023}
4024static VkResult dynCheck_entry_vkSignalSemaphoreKHR(
4025 VkDevice device,
4026 const VkSemaphoreSignalInfo* pSignalInfo)
4027{
4028 auto resources = ResourceTracker::get();
4029 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
4030 {
4031 sOnInvalidDynamicallyCheckedCall("vkSignalSemaphoreKHR", "VK_KHR_timeline_semaphore");
4032 }
4033 AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
4034 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4035 VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
4036 vkSignalSemaphoreKHR_VkResult_return = vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
4037 return vkSignalSemaphoreKHR_VkResult_return;
4038}
4039#endif
4040#ifdef VK_KHR_vulkan_memory_model
4041#endif
4042#ifdef VK_KHR_shader_terminate_invocation
4043#endif
4044#ifdef VK_KHR_fragment_shading_rate
4045static VkResult entry_vkGetPhysicalDeviceFragmentShadingRatesKHR(
4046 VkPhysicalDevice physicalDevice,
4047 uint32_t* pFragmentShadingRateCount,
4048 VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates)
4049{
4050 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFragmentShadingRatesKHR");
4051 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4052 VkResult vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return = (VkResult)0;
4053 vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, true /* do lock */);
4054 return vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return;
4055}
4056static void entry_vkCmdSetFragmentShadingRateKHR(
4057 VkCommandBuffer commandBuffer,
4058 const VkExtent2D* pFragmentSize,
4059 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
4060{
4061 AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateKHR");
4062 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4063 vkEnc->vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, true /* do lock */);
4064}
4065#endif
4066#ifdef VK_KHR_spirv_1_4
4067#endif
4068#ifdef VK_KHR_surface_protected_capabilities
4069#endif
4070#ifdef VK_KHR_separate_depth_stencil_layouts
4071#endif
4072#ifdef VK_KHR_uniform_buffer_standard_layout
4073#endif
4074#ifdef VK_KHR_buffer_device_address
4075static VkDeviceAddress entry_vkGetBufferDeviceAddressKHR(
4076 VkDevice device,
4077 const VkBufferDeviceAddressInfo* pInfo)
4078{
4079 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
4080 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4081 VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
4082 vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
4083 return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
4084}
4085static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressKHR(
4086 VkDevice device,
4087 const VkBufferDeviceAddressInfo* pInfo)
4088{
4089 auto resources = ResourceTracker::get();
4090 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4091 {
4092 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressKHR", "VK_KHR_buffer_device_address");
4093 }
4094 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
4095 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4096 VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
4097 vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
4098 return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
4099}
4100static uint64_t entry_vkGetBufferOpaqueCaptureAddressKHR(
4101 VkDevice device,
4102 const VkBufferDeviceAddressInfo* pInfo)
4103{
4104 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
4105 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4106 uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4107 vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4108 return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
4109}
4110static uint64_t dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR(
4111 VkDevice device,
4112 const VkBufferDeviceAddressInfo* pInfo)
4113{
4114 auto resources = ResourceTracker::get();
4115 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4116 {
4117 sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureAddressKHR", "VK_KHR_buffer_device_address");
4118 }
4119 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
4120 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4121 uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4122 vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4123 return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
4124}
4125static uint64_t entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
4126 VkDevice device,
4127 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
4128{
4129 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
4130 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4131 uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4132 vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4133 return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
4134}
4135static uint64_t dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
4136 VkDevice device,
4137 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
4138{
4139 auto resources = ResourceTracker::get();
4140 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4141 {
4142 sOnInvalidDynamicallyCheckedCall("vkGetDeviceMemoryOpaqueCaptureAddressKHR", "VK_KHR_buffer_device_address");
4143 }
4144 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
4145 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4146 uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4147 vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4148 return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
4149}
4150#endif
4151#ifdef VK_KHR_deferred_host_operations
4152static VkResult entry_vkCreateDeferredOperationKHR(
4153 VkDevice device,
4154 const VkAllocationCallbacks* pAllocator,
4155 VkDeferredOperationKHR* pDeferredOperation)
4156{
4157 AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
4158 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4159 VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
4160 vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, true /* do lock */);
4161 return vkCreateDeferredOperationKHR_VkResult_return;
4162}
4163static VkResult dynCheck_entry_vkCreateDeferredOperationKHR(
4164 VkDevice device,
4165 const VkAllocationCallbacks* pAllocator,
4166 VkDeferredOperationKHR* pDeferredOperation)
4167{
4168 auto resources = ResourceTracker::get();
4169 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4170 {
4171 sOnInvalidDynamicallyCheckedCall("vkCreateDeferredOperationKHR", "VK_KHR_deferred_host_operations");
4172 }
4173 AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
4174 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4175 VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
4176 vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, true /* do lock */);
4177 return vkCreateDeferredOperationKHR_VkResult_return;
4178}
4179static void entry_vkDestroyDeferredOperationKHR(
4180 VkDevice device,
4181 VkDeferredOperationKHR operation,
4182 const VkAllocationCallbacks* pAllocator)
4183{
4184 AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
4185 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4186 vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
4187}
4188static void dynCheck_entry_vkDestroyDeferredOperationKHR(
4189 VkDevice device,
4190 VkDeferredOperationKHR operation,
4191 const VkAllocationCallbacks* pAllocator)
4192{
4193 auto resources = ResourceTracker::get();
4194 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4195 {
4196 sOnInvalidDynamicallyCheckedCall("vkDestroyDeferredOperationKHR", "VK_KHR_deferred_host_operations");
4197 }
4198 AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
4199 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4200 vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
4201}
4202static uint32_t entry_vkGetDeferredOperationMaxConcurrencyKHR(
4203 VkDevice device,
4204 VkDeferredOperationKHR operation)
4205{
4206 AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
4207 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4208 uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
4209 vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
4210 return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
4211}
4212static uint32_t dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR(
4213 VkDevice device,
4214 VkDeferredOperationKHR operation)
4215{
4216 auto resources = ResourceTracker::get();
4217 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4218 {
4219 sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationMaxConcurrencyKHR", "VK_KHR_deferred_host_operations");
4220 }
4221 AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
4222 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4223 uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
4224 vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
4225 return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
4226}
4227static VkResult entry_vkGetDeferredOperationResultKHR(
4228 VkDevice device,
4229 VkDeferredOperationKHR operation)
4230{
4231 AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
4232 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4233 VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
4234 vkGetDeferredOperationResultKHR_VkResult_return = vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
4235 return vkGetDeferredOperationResultKHR_VkResult_return;
4236}
4237static VkResult dynCheck_entry_vkGetDeferredOperationResultKHR(
4238 VkDevice device,
4239 VkDeferredOperationKHR operation)
4240{
4241 auto resources = ResourceTracker::get();
4242 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4243 {
4244 sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationResultKHR", "VK_KHR_deferred_host_operations");
4245 }
4246 AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
4247 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4248 VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
4249 vkGetDeferredOperationResultKHR_VkResult_return = vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
4250 return vkGetDeferredOperationResultKHR_VkResult_return;
4251}
4252static VkResult entry_vkDeferredOperationJoinKHR(
4253 VkDevice device,
4254 VkDeferredOperationKHR operation)
4255{
4256 AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
4257 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4258 VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
4259 vkDeferredOperationJoinKHR_VkResult_return = vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
4260 return vkDeferredOperationJoinKHR_VkResult_return;
4261}
4262static VkResult dynCheck_entry_vkDeferredOperationJoinKHR(
4263 VkDevice device,
4264 VkDeferredOperationKHR operation)
4265{
4266 auto resources = ResourceTracker::get();
4267 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4268 {
4269 sOnInvalidDynamicallyCheckedCall("vkDeferredOperationJoinKHR", "VK_KHR_deferred_host_operations");
4270 }
4271 AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
4272 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4273 VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
4274 vkDeferredOperationJoinKHR_VkResult_return = vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
4275 return vkDeferredOperationJoinKHR_VkResult_return;
4276}
4277#endif
4278#ifdef VK_KHR_pipeline_executable_properties
4279static VkResult entry_vkGetPipelineExecutablePropertiesKHR(
4280 VkDevice device,
4281 const VkPipelineInfoKHR* pPipelineInfo,
4282 uint32_t* pExecutableCount,
4283 VkPipelineExecutablePropertiesKHR* pProperties)
4284{
4285 AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
4286 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4287 VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
4288 vkGetPipelineExecutablePropertiesKHR_VkResult_return = vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, true /* do lock */);
4289 return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
4290}
4291static VkResult dynCheck_entry_vkGetPipelineExecutablePropertiesKHR(
4292 VkDevice device,
4293 const VkPipelineInfoKHR* pPipelineInfo,
4294 uint32_t* pExecutableCount,
4295 VkPipelineExecutablePropertiesKHR* pProperties)
4296{
4297 auto resources = ResourceTracker::get();
4298 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4299 {
4300 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutablePropertiesKHR", "VK_KHR_pipeline_executable_properties");
4301 }
4302 AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
4303 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4304 VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
4305 vkGetPipelineExecutablePropertiesKHR_VkResult_return = vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, true /* do lock */);
4306 return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
4307}
4308static VkResult entry_vkGetPipelineExecutableStatisticsKHR(
4309 VkDevice device,
4310 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4311 uint32_t* pStatisticCount,
4312 VkPipelineExecutableStatisticKHR* pStatistics)
4313{
4314 AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
4315 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4316 VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
4317 vkGetPipelineExecutableStatisticsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, true /* do lock */);
4318 return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
4319}
4320static VkResult dynCheck_entry_vkGetPipelineExecutableStatisticsKHR(
4321 VkDevice device,
4322 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4323 uint32_t* pStatisticCount,
4324 VkPipelineExecutableStatisticKHR* pStatistics)
4325{
4326 auto resources = ResourceTracker::get();
4327 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4328 {
4329 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableStatisticsKHR", "VK_KHR_pipeline_executable_properties");
4330 }
4331 AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
4332 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4333 VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
4334 vkGetPipelineExecutableStatisticsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, true /* do lock */);
4335 return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
4336}
4337static VkResult entry_vkGetPipelineExecutableInternalRepresentationsKHR(
4338 VkDevice device,
4339 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4340 uint32_t* pInternalRepresentationCount,
4341 VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
4342{
4343 AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
4344 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4345 VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
4346 vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, true /* do lock */);
4347 return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
4348}
4349static VkResult dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR(
4350 VkDevice device,
4351 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4352 uint32_t* pInternalRepresentationCount,
4353 VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
4354{
4355 auto resources = ResourceTracker::get();
4356 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4357 {
4358 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableInternalRepresentationsKHR", "VK_KHR_pipeline_executable_properties");
4359 }
4360 AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
4361 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4362 VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
4363 vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, true /* do lock */);
4364 return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
4365}
4366#endif
4367#ifdef VK_KHR_pipeline_library
4368#endif
4369#ifdef VK_KHR_shader_non_semantic_info
4370#endif
4371#ifdef VK_KHR_copy_commands2
4372static void entry_vkCmdCopyBuffer2KHR(
4373 VkCommandBuffer commandBuffer,
4374 const VkCopyBufferInfo2KHR* pCopyBufferInfo)
4375{
4376 AEMU_SCOPED_TRACE("vkCmdCopyBuffer2KHR");
4377 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4378 vkEnc->vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, true /* do lock */);
4379}
4380static void entry_vkCmdCopyImage2KHR(
4381 VkCommandBuffer commandBuffer,
4382 const VkCopyImageInfo2KHR* pCopyImageInfo)
4383{
4384 AEMU_SCOPED_TRACE("vkCmdCopyImage2KHR");
4385 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4386 vkEnc->vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, true /* do lock */);
4387}
4388static void entry_vkCmdCopyBufferToImage2KHR(
4389 VkCommandBuffer commandBuffer,
4390 const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo)
4391{
4392 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage2KHR");
4393 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4394 vkEnc->vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, true /* do lock */);
4395}
4396static void entry_vkCmdCopyImageToBuffer2KHR(
4397 VkCommandBuffer commandBuffer,
4398 const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo)
4399{
4400 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer2KHR");
4401 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4402 vkEnc->vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, true /* do lock */);
4403}
4404static void entry_vkCmdBlitImage2KHR(
4405 VkCommandBuffer commandBuffer,
4406 const VkBlitImageInfo2KHR* pBlitImageInfo)
4407{
4408 AEMU_SCOPED_TRACE("vkCmdBlitImage2KHR");
4409 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4410 vkEnc->vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, true /* do lock */);
4411}
4412static void entry_vkCmdResolveImage2KHR(
4413 VkCommandBuffer commandBuffer,
4414 const VkResolveImageInfo2KHR* pResolveImageInfo)
4415{
4416 AEMU_SCOPED_TRACE("vkCmdResolveImage2KHR");
4417 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4418 vkEnc->vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, true /* do lock */);
4419}
Lingfeng Yang4c056b22020-07-02 11:43:57 -07004420#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08004421#ifdef VK_ANDROID_native_buffer
4422static VkResult entry_vkGetSwapchainGrallocUsageANDROID(
4423 VkDevice device,
4424 VkFormat format,
4425 VkImageUsageFlags imageUsage,
4426 int* grallocUsage)
4427{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004428 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004429 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang808a6312018-11-13 21:06:15 -08004430 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004431 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004432 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
4433}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004434static VkResult dynCheck_entry_vkGetSwapchainGrallocUsageANDROID(
4435 VkDevice device,
4436 VkFormat format,
4437 VkImageUsageFlags imageUsage,
4438 int* grallocUsage)
4439{
4440 auto resources = ResourceTracker::get();
4441 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
4442 {
4443 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainGrallocUsageANDROID", "VK_ANDROID_native_buffer");
4444 }
4445 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004446 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004447 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004448 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004449 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
4450}
Lingfeng Yang808a6312018-11-13 21:06:15 -08004451static VkResult entry_vkAcquireImageANDROID(
4452 VkDevice device,
4453 VkImage image,
4454 int nativeFenceFd,
4455 VkSemaphore semaphore,
4456 VkFence fence)
4457{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004458 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004459 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang808a6312018-11-13 21:06:15 -08004460 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004461 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004462 return vkAcquireImageANDROID_VkResult_return;
4463}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004464static VkResult dynCheck_entry_vkAcquireImageANDROID(
4465 VkDevice device,
4466 VkImage image,
4467 int nativeFenceFd,
4468 VkSemaphore semaphore,
4469 VkFence fence)
4470{
4471 auto resources = ResourceTracker::get();
4472 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
4473 {
4474 sOnInvalidDynamicallyCheckedCall("vkAcquireImageANDROID", "VK_ANDROID_native_buffer");
4475 }
4476 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004477 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004478 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004479 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004480 return vkAcquireImageANDROID_VkResult_return;
4481}
Lingfeng Yang808a6312018-11-13 21:06:15 -08004482static VkResult entry_vkQueueSignalReleaseImageANDROID(
4483 VkQueue queue,
4484 uint32_t waitSemaphoreCount,
4485 const VkSemaphore* pWaitSemaphores,
4486 VkImage image,
4487 int* pNativeFenceFd)
4488{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004489 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004490 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004491 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004492 vkQueueSignalReleaseImageANDROID_VkResult_return = vkEnc->vkQueueSignalReleaseImageANDROID(queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004493 return vkQueueSignalReleaseImageANDROID_VkResult_return;
4494}
4495#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004496#ifdef VK_EXT_debug_report
4497static VkResult entry_vkCreateDebugReportCallbackEXT(
4498 VkInstance instance,
4499 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
4500 const VkAllocationCallbacks* pAllocator,
4501 VkDebugReportCallbackEXT* pCallback)
4502{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004503 AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004504 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004505 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004506 vkCreateDebugReportCallbackEXT_VkResult_return = vkEnc->vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004507 return vkCreateDebugReportCallbackEXT_VkResult_return;
4508}
4509static void entry_vkDestroyDebugReportCallbackEXT(
4510 VkInstance instance,
4511 VkDebugReportCallbackEXT callback,
4512 const VkAllocationCallbacks* pAllocator)
4513{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004514 AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004515 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004516 vkEnc->vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004517}
4518static void entry_vkDebugReportMessageEXT(
4519 VkInstance instance,
4520 VkDebugReportFlagsEXT flags,
4521 VkDebugReportObjectTypeEXT objectType,
4522 uint64_t object,
4523 size_t location,
4524 int32_t messageCode,
4525 const char* pLayerPrefix,
4526 const char* pMessage)
4527{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004528 AEMU_SCOPED_TRACE("vkDebugReportMessageEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004529 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004530 vkEnc->vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004531}
4532#endif
4533#ifdef VK_NV_glsl_shader
4534#endif
4535#ifdef VK_EXT_depth_range_unrestricted
4536#endif
4537#ifdef VK_IMG_filter_cubic
4538#endif
4539#ifdef VK_AMD_rasterization_order
4540#endif
4541#ifdef VK_AMD_shader_trinary_minmax
4542#endif
4543#ifdef VK_AMD_shader_explicit_vertex_parameter
4544#endif
4545#ifdef VK_EXT_debug_marker
4546static VkResult entry_vkDebugMarkerSetObjectTagEXT(
4547 VkDevice device,
4548 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
4549{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004550 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004551 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004552 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004553 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004554 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
4555}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004556static VkResult dynCheck_entry_vkDebugMarkerSetObjectTagEXT(
4557 VkDevice device,
4558 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
4559{
4560 auto resources = ResourceTracker::get();
4561 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
4562 {
4563 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectTagEXT", "VK_EXT_debug_marker");
4564 }
4565 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004566 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004567 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004568 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004569 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
4570}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004571static VkResult entry_vkDebugMarkerSetObjectNameEXT(
4572 VkDevice device,
4573 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
4574{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004575 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004576 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004577 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004578 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004579 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
4580}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004581static VkResult dynCheck_entry_vkDebugMarkerSetObjectNameEXT(
4582 VkDevice device,
4583 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
4584{
4585 auto resources = ResourceTracker::get();
4586 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
4587 {
4588 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectNameEXT", "VK_EXT_debug_marker");
4589 }
4590 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004591 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004592 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004593 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004594 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
4595}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004596static void entry_vkCmdDebugMarkerBeginEXT(
4597 VkCommandBuffer commandBuffer,
4598 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
4599{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004600 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004601 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004602 vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004603}
4604static void entry_vkCmdDebugMarkerEndEXT(
4605 VkCommandBuffer commandBuffer)
4606{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004607 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004608 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004609 vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004610}
4611static void entry_vkCmdDebugMarkerInsertEXT(
4612 VkCommandBuffer commandBuffer,
4613 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
4614{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004615 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004616 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004617 vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004618}
4619#endif
4620#ifdef VK_AMD_gcn_shader
4621#endif
4622#ifdef VK_NV_dedicated_allocation
4623#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004624#ifdef VK_EXT_transform_feedback
4625static void entry_vkCmdBindTransformFeedbackBuffersEXT(
4626 VkCommandBuffer commandBuffer,
4627 uint32_t firstBinding,
4628 uint32_t bindingCount,
4629 const VkBuffer* pBuffers,
4630 const VkDeviceSize* pOffsets,
4631 const VkDeviceSize* pSizes)
4632{
4633 AEMU_SCOPED_TRACE("vkCmdBindTransformFeedbackBuffersEXT");
4634 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4635 vkEnc->vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, true /* do lock */);
4636}
4637static void entry_vkCmdBeginTransformFeedbackEXT(
4638 VkCommandBuffer commandBuffer,
4639 uint32_t firstCounterBuffer,
4640 uint32_t counterBufferCount,
4641 const VkBuffer* pCounterBuffers,
4642 const VkDeviceSize* pCounterBufferOffsets)
4643{
4644 AEMU_SCOPED_TRACE("vkCmdBeginTransformFeedbackEXT");
4645 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4646 vkEnc->vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
4647}
4648static void entry_vkCmdEndTransformFeedbackEXT(
4649 VkCommandBuffer commandBuffer,
4650 uint32_t firstCounterBuffer,
4651 uint32_t counterBufferCount,
4652 const VkBuffer* pCounterBuffers,
4653 const VkDeviceSize* pCounterBufferOffsets)
4654{
4655 AEMU_SCOPED_TRACE("vkCmdEndTransformFeedbackEXT");
4656 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4657 vkEnc->vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
4658}
4659static void entry_vkCmdBeginQueryIndexedEXT(
4660 VkCommandBuffer commandBuffer,
4661 VkQueryPool queryPool,
4662 uint32_t query,
4663 VkQueryControlFlags flags,
4664 uint32_t index)
4665{
4666 AEMU_SCOPED_TRACE("vkCmdBeginQueryIndexedEXT");
4667 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4668 vkEnc->vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, true /* do lock */);
4669}
4670static void entry_vkCmdEndQueryIndexedEXT(
4671 VkCommandBuffer commandBuffer,
4672 VkQueryPool queryPool,
4673 uint32_t query,
4674 uint32_t index)
4675{
4676 AEMU_SCOPED_TRACE("vkCmdEndQueryIndexedEXT");
4677 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4678 vkEnc->vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, true /* do lock */);
4679}
4680static void entry_vkCmdDrawIndirectByteCountEXT(
4681 VkCommandBuffer commandBuffer,
4682 uint32_t instanceCount,
4683 uint32_t firstInstance,
4684 VkBuffer counterBuffer,
4685 VkDeviceSize counterBufferOffset,
4686 uint32_t counterOffset,
4687 uint32_t vertexStride)
4688{
4689 AEMU_SCOPED_TRACE("vkCmdDrawIndirectByteCountEXT");
4690 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4691 vkEnc->vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, true /* do lock */);
4692}
4693#endif
4694#ifdef VK_NVX_image_view_handle
4695static uint32_t entry_vkGetImageViewHandleNVX(
4696 VkDevice device,
4697 const VkImageViewHandleInfoNVX* pInfo)
4698{
4699 AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
4700 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4701 uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
4702 vkGetImageViewHandleNVX_uint32_t_return = vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
4703 return vkGetImageViewHandleNVX_uint32_t_return;
4704}
4705static uint32_t dynCheck_entry_vkGetImageViewHandleNVX(
4706 VkDevice device,
4707 const VkImageViewHandleInfoNVX* pInfo)
4708{
4709 auto resources = ResourceTracker::get();
4710 if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle"))
4711 {
4712 sOnInvalidDynamicallyCheckedCall("vkGetImageViewHandleNVX", "VK_NVX_image_view_handle");
4713 }
4714 AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
4715 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4716 uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
4717 vkGetImageViewHandleNVX_uint32_t_return = vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
4718 return vkGetImageViewHandleNVX_uint32_t_return;
4719}
4720static VkResult entry_vkGetImageViewAddressNVX(
4721 VkDevice device,
4722 VkImageView imageView,
4723 VkImageViewAddressPropertiesNVX* pProperties)
4724{
4725 AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
4726 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4727 VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
4728 vkGetImageViewAddressNVX_VkResult_return = vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
4729 return vkGetImageViewAddressNVX_VkResult_return;
4730}
4731static VkResult dynCheck_entry_vkGetImageViewAddressNVX(
4732 VkDevice device,
4733 VkImageView imageView,
4734 VkImageViewAddressPropertiesNVX* pProperties)
4735{
4736 auto resources = ResourceTracker::get();
4737 if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle"))
4738 {
4739 sOnInvalidDynamicallyCheckedCall("vkGetImageViewAddressNVX", "VK_NVX_image_view_handle");
4740 }
4741 AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
4742 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4743 VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
4744 vkGetImageViewAddressNVX_VkResult_return = vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
4745 return vkGetImageViewAddressNVX_VkResult_return;
4746}
4747#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004748#ifdef VK_AMD_draw_indirect_count
4749static void entry_vkCmdDrawIndirectCountAMD(
4750 VkCommandBuffer commandBuffer,
4751 VkBuffer buffer,
4752 VkDeviceSize offset,
4753 VkBuffer countBuffer,
4754 VkDeviceSize countBufferOffset,
4755 uint32_t maxDrawCount,
4756 uint32_t stride)
4757{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004758 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004759 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004760 vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004761}
4762static void entry_vkCmdDrawIndexedIndirectCountAMD(
4763 VkCommandBuffer commandBuffer,
4764 VkBuffer buffer,
4765 VkDeviceSize offset,
4766 VkBuffer countBuffer,
4767 VkDeviceSize countBufferOffset,
4768 uint32_t maxDrawCount,
4769 uint32_t stride)
4770{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004771 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004772 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004773 vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004774}
4775#endif
4776#ifdef VK_AMD_negative_viewport_height
4777#endif
4778#ifdef VK_AMD_gpu_shader_half_float
4779#endif
4780#ifdef VK_AMD_shader_ballot
4781#endif
4782#ifdef VK_AMD_texture_gather_bias_lod
4783#endif
4784#ifdef VK_AMD_shader_info
4785static VkResult entry_vkGetShaderInfoAMD(
4786 VkDevice device,
4787 VkPipeline pipeline,
4788 VkShaderStageFlagBits shaderStage,
4789 VkShaderInfoTypeAMD infoType,
4790 size_t* pInfoSize,
4791 void* pInfo)
4792{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004793 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004794 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004795 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004796 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004797 return vkGetShaderInfoAMD_VkResult_return;
4798}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004799static VkResult dynCheck_entry_vkGetShaderInfoAMD(
4800 VkDevice device,
4801 VkPipeline pipeline,
4802 VkShaderStageFlagBits shaderStage,
4803 VkShaderInfoTypeAMD infoType,
4804 size_t* pInfoSize,
4805 void* pInfo)
4806{
4807 auto resources = ResourceTracker::get();
4808 if (!resources->hasDeviceExtension(device, "VK_AMD_shader_info"))
4809 {
4810 sOnInvalidDynamicallyCheckedCall("vkGetShaderInfoAMD", "VK_AMD_shader_info");
4811 }
4812 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004813 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004814 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004815 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004816 return vkGetShaderInfoAMD_VkResult_return;
4817}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004818#endif
4819#ifdef VK_AMD_shader_image_load_store_lod
4820#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004821#ifdef VK_GGP_stream_descriptor_surface
4822static VkResult entry_vkCreateStreamDescriptorSurfaceGGP(
4823 VkInstance instance,
4824 const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
4825 const VkAllocationCallbacks* pAllocator,
4826 VkSurfaceKHR* pSurface)
4827{
4828 AEMU_SCOPED_TRACE("vkCreateStreamDescriptorSurfaceGGP");
4829 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4830 VkResult vkCreateStreamDescriptorSurfaceGGP_VkResult_return = (VkResult)0;
4831 vkCreateStreamDescriptorSurfaceGGP_VkResult_return = vkEnc->vkCreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
4832 return vkCreateStreamDescriptorSurfaceGGP_VkResult_return;
4833}
4834#endif
4835#ifdef VK_NV_corner_sampled_image
4836#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004837#ifdef VK_IMG_format_pvrtc
4838#endif
4839#ifdef VK_NV_external_memory_capabilities
4840static VkResult entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
4841 VkPhysicalDevice physicalDevice,
4842 VkFormat format,
4843 VkImageType type,
4844 VkImageTiling tiling,
4845 VkImageUsageFlags usage,
4846 VkImageCreateFlags flags,
4847 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
4848 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
4849{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004850 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004851 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004852 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004853 vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004854 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
4855}
4856#endif
4857#ifdef VK_NV_external_memory
4858#endif
4859#ifdef VK_NV_external_memory_win32
4860static VkResult entry_vkGetMemoryWin32HandleNV(
4861 VkDevice device,
4862 VkDeviceMemory memory,
4863 VkExternalMemoryHandleTypeFlagsNV handleType,
4864 HANDLE* pHandle)
4865{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004866 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004867 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004868 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004869 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004870 return vkGetMemoryWin32HandleNV_VkResult_return;
4871}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004872static VkResult dynCheck_entry_vkGetMemoryWin32HandleNV(
4873 VkDevice device,
4874 VkDeviceMemory memory,
4875 VkExternalMemoryHandleTypeFlagsNV handleType,
4876 HANDLE* pHandle)
4877{
4878 auto resources = ResourceTracker::get();
4879 if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_win32"))
4880 {
4881 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleNV", "VK_NV_external_memory_win32");
4882 }
4883 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004884 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004885 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004886 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004887 return vkGetMemoryWin32HandleNV_VkResult_return;
4888}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004889#endif
4890#ifdef VK_NV_win32_keyed_mutex
4891#endif
4892#ifdef VK_EXT_validation_flags
4893#endif
4894#ifdef VK_NN_vi_surface
4895static VkResult entry_vkCreateViSurfaceNN(
4896 VkInstance instance,
4897 const VkViSurfaceCreateInfoNN* pCreateInfo,
4898 const VkAllocationCallbacks* pAllocator,
4899 VkSurfaceKHR* pSurface)
4900{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004901 AEMU_SCOPED_TRACE("vkCreateViSurfaceNN");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004902 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004903 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004904 vkCreateViSurfaceNN_VkResult_return = vkEnc->vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004905 return vkCreateViSurfaceNN_VkResult_return;
4906}
4907#endif
4908#ifdef VK_EXT_shader_subgroup_ballot
4909#endif
4910#ifdef VK_EXT_shader_subgroup_vote
4911#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004912#ifdef VK_EXT_texture_compression_astc_hdr
4913#endif
4914#ifdef VK_EXT_astc_decode_mode
4915#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004916#ifdef VK_EXT_conditional_rendering
4917static void entry_vkCmdBeginConditionalRenderingEXT(
4918 VkCommandBuffer commandBuffer,
4919 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
4920{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004921 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004922 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004923 vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004924}
4925static void entry_vkCmdEndConditionalRenderingEXT(
4926 VkCommandBuffer commandBuffer)
4927{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004928 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004929 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004930 vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004931}
4932#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004933#ifdef VK_NV_clip_space_w_scaling
4934static void entry_vkCmdSetViewportWScalingNV(
4935 VkCommandBuffer commandBuffer,
4936 uint32_t firstViewport,
4937 uint32_t viewportCount,
4938 const VkViewportWScalingNV* pViewportWScalings)
4939{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004940 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004941 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004942 vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004943}
4944#endif
4945#ifdef VK_EXT_direct_mode_display
4946static VkResult entry_vkReleaseDisplayEXT(
4947 VkPhysicalDevice physicalDevice,
4948 VkDisplayKHR display)
4949{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004950 AEMU_SCOPED_TRACE("vkReleaseDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004951 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004952 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004953 vkReleaseDisplayEXT_VkResult_return = vkEnc->vkReleaseDisplayEXT(physicalDevice, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004954 return vkReleaseDisplayEXT_VkResult_return;
4955}
4956#endif
4957#ifdef VK_EXT_acquire_xlib_display
4958static VkResult entry_vkAcquireXlibDisplayEXT(
4959 VkPhysicalDevice physicalDevice,
4960 Display* dpy,
4961 VkDisplayKHR display)
4962{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004963 AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004964 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004965 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004966 vkAcquireXlibDisplayEXT_VkResult_return = vkEnc->vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004967 return vkAcquireXlibDisplayEXT_VkResult_return;
4968}
4969static VkResult entry_vkGetRandROutputDisplayEXT(
4970 VkPhysicalDevice physicalDevice,
4971 Display* dpy,
4972 RROutput rrOutput,
4973 VkDisplayKHR* pDisplay)
4974{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004975 AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004976 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004977 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004978 vkGetRandROutputDisplayEXT_VkResult_return = vkEnc->vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004979 return vkGetRandROutputDisplayEXT_VkResult_return;
4980}
4981#endif
4982#ifdef VK_EXT_display_surface_counter
4983static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
4984 VkPhysicalDevice physicalDevice,
4985 VkSurfaceKHR surface,
4986 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
4987{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004988 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004989 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004990 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004991 vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004992 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
4993}
4994#endif
4995#ifdef VK_EXT_display_control
4996static VkResult entry_vkDisplayPowerControlEXT(
4997 VkDevice device,
4998 VkDisplayKHR display,
4999 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
5000{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005001 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005002 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005003 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005004 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005005 return vkDisplayPowerControlEXT_VkResult_return;
5006}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005007static VkResult dynCheck_entry_vkDisplayPowerControlEXT(
5008 VkDevice device,
5009 VkDisplayKHR display,
5010 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
5011{
5012 auto resources = ResourceTracker::get();
5013 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5014 {
5015 sOnInvalidDynamicallyCheckedCall("vkDisplayPowerControlEXT", "VK_EXT_display_control");
5016 }
5017 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005018 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005019 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005020 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005021 return vkDisplayPowerControlEXT_VkResult_return;
5022}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005023static VkResult entry_vkRegisterDeviceEventEXT(
5024 VkDevice device,
5025 const VkDeviceEventInfoEXT* pDeviceEventInfo,
5026 const VkAllocationCallbacks* pAllocator,
5027 VkFence* pFence)
5028{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005029 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005030 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005031 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005032 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005033 return vkRegisterDeviceEventEXT_VkResult_return;
5034}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005035static VkResult dynCheck_entry_vkRegisterDeviceEventEXT(
5036 VkDevice device,
5037 const VkDeviceEventInfoEXT* pDeviceEventInfo,
5038 const VkAllocationCallbacks* pAllocator,
5039 VkFence* pFence)
5040{
5041 auto resources = ResourceTracker::get();
5042 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5043 {
5044 sOnInvalidDynamicallyCheckedCall("vkRegisterDeviceEventEXT", "VK_EXT_display_control");
5045 }
5046 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005047 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005048 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005049 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005050 return vkRegisterDeviceEventEXT_VkResult_return;
5051}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005052static VkResult entry_vkRegisterDisplayEventEXT(
5053 VkDevice device,
5054 VkDisplayKHR display,
5055 const VkDisplayEventInfoEXT* pDisplayEventInfo,
5056 const VkAllocationCallbacks* pAllocator,
5057 VkFence* pFence)
5058{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005059 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005060 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005061 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005062 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005063 return vkRegisterDisplayEventEXT_VkResult_return;
5064}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005065static VkResult dynCheck_entry_vkRegisterDisplayEventEXT(
5066 VkDevice device,
5067 VkDisplayKHR display,
5068 const VkDisplayEventInfoEXT* pDisplayEventInfo,
5069 const VkAllocationCallbacks* pAllocator,
5070 VkFence* pFence)
5071{
5072 auto resources = ResourceTracker::get();
5073 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5074 {
5075 sOnInvalidDynamicallyCheckedCall("vkRegisterDisplayEventEXT", "VK_EXT_display_control");
5076 }
5077 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005078 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005079 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005080 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005081 return vkRegisterDisplayEventEXT_VkResult_return;
5082}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005083static VkResult entry_vkGetSwapchainCounterEXT(
5084 VkDevice device,
5085 VkSwapchainKHR swapchain,
5086 VkSurfaceCounterFlagBitsEXT counter,
5087 uint64_t* pCounterValue)
5088{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005089 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005090 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005091 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005092 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005093 return vkGetSwapchainCounterEXT_VkResult_return;
5094}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005095static VkResult dynCheck_entry_vkGetSwapchainCounterEXT(
5096 VkDevice device,
5097 VkSwapchainKHR swapchain,
5098 VkSurfaceCounterFlagBitsEXT counter,
5099 uint64_t* pCounterValue)
5100{
5101 auto resources = ResourceTracker::get();
5102 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5103 {
5104 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainCounterEXT", "VK_EXT_display_control");
5105 }
5106 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005107 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005108 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005109 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005110 return vkGetSwapchainCounterEXT_VkResult_return;
5111}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005112#endif
5113#ifdef VK_GOOGLE_display_timing
5114static VkResult entry_vkGetRefreshCycleDurationGOOGLE(
5115 VkDevice device,
5116 VkSwapchainKHR swapchain,
5117 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
5118{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005119 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005120 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005121 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005122 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005123 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
5124}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005125static VkResult dynCheck_entry_vkGetRefreshCycleDurationGOOGLE(
5126 VkDevice device,
5127 VkSwapchainKHR swapchain,
5128 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
5129{
5130 auto resources = ResourceTracker::get();
5131 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
5132 {
5133 sOnInvalidDynamicallyCheckedCall("vkGetRefreshCycleDurationGOOGLE", "VK_GOOGLE_display_timing");
5134 }
5135 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005136 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005137 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005138 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005139 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
5140}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005141static VkResult entry_vkGetPastPresentationTimingGOOGLE(
5142 VkDevice device,
5143 VkSwapchainKHR swapchain,
5144 uint32_t* pPresentationTimingCount,
5145 VkPastPresentationTimingGOOGLE* pPresentationTimings)
5146{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005147 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005148 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005149 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005150 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005151 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
5152}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005153static VkResult dynCheck_entry_vkGetPastPresentationTimingGOOGLE(
5154 VkDevice device,
5155 VkSwapchainKHR swapchain,
5156 uint32_t* pPresentationTimingCount,
5157 VkPastPresentationTimingGOOGLE* pPresentationTimings)
5158{
5159 auto resources = ResourceTracker::get();
5160 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
5161 {
5162 sOnInvalidDynamicallyCheckedCall("vkGetPastPresentationTimingGOOGLE", "VK_GOOGLE_display_timing");
5163 }
5164 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005165 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005166 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005167 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005168 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
5169}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005170#endif
5171#ifdef VK_NV_sample_mask_override_coverage
5172#endif
5173#ifdef VK_NV_geometry_shader_passthrough
5174#endif
5175#ifdef VK_NV_viewport_array2
5176#endif
5177#ifdef VK_NVX_multiview_per_view_attributes
5178#endif
5179#ifdef VK_NV_viewport_swizzle
5180#endif
5181#ifdef VK_EXT_discard_rectangles
5182static void entry_vkCmdSetDiscardRectangleEXT(
5183 VkCommandBuffer commandBuffer,
5184 uint32_t firstDiscardRectangle,
5185 uint32_t discardRectangleCount,
5186 const VkRect2D* pDiscardRectangles)
5187{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005188 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005189 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005190 vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005191}
5192#endif
5193#ifdef VK_EXT_conservative_rasterization
5194#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005195#ifdef VK_EXT_depth_clip_enable
5196#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005197#ifdef VK_EXT_swapchain_colorspace
5198#endif
5199#ifdef VK_EXT_hdr_metadata
5200static void entry_vkSetHdrMetadataEXT(
5201 VkDevice device,
5202 uint32_t swapchainCount,
5203 const VkSwapchainKHR* pSwapchains,
5204 const VkHdrMetadataEXT* pMetadata)
5205{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005206 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005207 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005208 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005209}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005210static void dynCheck_entry_vkSetHdrMetadataEXT(
5211 VkDevice device,
5212 uint32_t swapchainCount,
5213 const VkSwapchainKHR* pSwapchains,
5214 const VkHdrMetadataEXT* pMetadata)
5215{
5216 auto resources = ResourceTracker::get();
5217 if (!resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata"))
5218 {
5219 sOnInvalidDynamicallyCheckedCall("vkSetHdrMetadataEXT", "VK_EXT_hdr_metadata");
5220 }
5221 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005222 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005223 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005224}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005225#endif
5226#ifdef VK_MVK_ios_surface
5227static VkResult entry_vkCreateIOSSurfaceMVK(
5228 VkInstance instance,
5229 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
5230 const VkAllocationCallbacks* pAllocator,
5231 VkSurfaceKHR* pSurface)
5232{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005233 AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005234 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005235 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005236 vkCreateIOSSurfaceMVK_VkResult_return = vkEnc->vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005237 return vkCreateIOSSurfaceMVK_VkResult_return;
5238}
5239#endif
5240#ifdef VK_MVK_macos_surface
5241static VkResult entry_vkCreateMacOSSurfaceMVK(
5242 VkInstance instance,
5243 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
5244 const VkAllocationCallbacks* pAllocator,
5245 VkSurfaceKHR* pSurface)
5246{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005247 AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005248 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005249 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005250 vkCreateMacOSSurfaceMVK_VkResult_return = vkEnc->vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005251 return vkCreateMacOSSurfaceMVK_VkResult_return;
5252}
5253#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005254#ifdef VK_MVK_moltenvk
5255static void entry_vkGetMTLDeviceMVK(
5256 VkPhysicalDevice physicalDevice,
5257 void** pMTLDevice)
5258{
5259 AEMU_SCOPED_TRACE("vkGetMTLDeviceMVK");
5260 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5261 vkEnc->vkGetMTLDeviceMVK(physicalDevice, pMTLDevice, true /* do lock */);
5262}
5263static VkResult entry_vkSetMTLTextureMVK(
5264 VkImage image,
5265 void* mtlTexture)
5266{
5267 AEMU_SCOPED_TRACE("vkSetMTLTextureMVK");
5268 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5269 VkResult vkSetMTLTextureMVK_VkResult_return = (VkResult)0;
5270 vkSetMTLTextureMVK_VkResult_return = vkEnc->vkSetMTLTextureMVK(image, mtlTexture, true /* do lock */);
5271 return vkSetMTLTextureMVK_VkResult_return;
5272}
5273static void entry_vkGetMTLTextureMVK(
5274 VkImage image,
5275 void** pMTLTexture)
5276{
5277 AEMU_SCOPED_TRACE("vkGetMTLTextureMVK");
5278 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5279 vkEnc->vkGetMTLTextureMVK(image, pMTLTexture, true /* do lock */);
5280}
5281static void entry_vkGetMTLBufferMVK(
5282 VkBuffer buffer,
5283 void** pMTLBuffer)
5284{
5285 AEMU_SCOPED_TRACE("vkGetMTLBufferMVK");
5286 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5287 vkEnc->vkGetMTLBufferMVK(buffer, pMTLBuffer, true /* do lock */);
5288}
5289static VkResult entry_vkUseIOSurfaceMVK(
5290 VkImage image,
5291 void* ioSurface)
5292{
5293 AEMU_SCOPED_TRACE("vkUseIOSurfaceMVK");
5294 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5295 VkResult vkUseIOSurfaceMVK_VkResult_return = (VkResult)0;
5296 vkUseIOSurfaceMVK_VkResult_return = vkEnc->vkUseIOSurfaceMVK(image, ioSurface, true /* do lock */);
5297 return vkUseIOSurfaceMVK_VkResult_return;
5298}
5299static void entry_vkGetIOSurfaceMVK(
5300 VkImage image,
5301 void** pIOSurface)
5302{
5303 AEMU_SCOPED_TRACE("vkGetIOSurfaceMVK");
5304 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5305 vkEnc->vkGetIOSurfaceMVK(image, pIOSurface, true /* do lock */);
5306}
5307#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005308#ifdef VK_EXT_external_memory_dma_buf
5309#endif
5310#ifdef VK_EXT_queue_family_foreign
5311#endif
5312#ifdef VK_EXT_debug_utils
5313static VkResult entry_vkSetDebugUtilsObjectNameEXT(
5314 VkDevice device,
5315 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
5316{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005317 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005318 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005319 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005320 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005321 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
5322}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005323static VkResult dynCheck_entry_vkSetDebugUtilsObjectNameEXT(
5324 VkDevice device,
5325 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
5326{
5327 auto resources = ResourceTracker::get();
5328 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
5329 {
5330 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectNameEXT", "VK_EXT_debug_utils");
5331 }
5332 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005333 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005334 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005335 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005336 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
5337}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005338static VkResult entry_vkSetDebugUtilsObjectTagEXT(
5339 VkDevice device,
5340 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
5341{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005342 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005343 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005344 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005345 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005346 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
5347}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005348static VkResult dynCheck_entry_vkSetDebugUtilsObjectTagEXT(
5349 VkDevice device,
5350 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
5351{
5352 auto resources = ResourceTracker::get();
5353 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
5354 {
5355 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectTagEXT", "VK_EXT_debug_utils");
5356 }
5357 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005358 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005359 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005360 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005361 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
5362}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005363static void entry_vkQueueBeginDebugUtilsLabelEXT(
5364 VkQueue queue,
5365 const VkDebugUtilsLabelEXT* pLabelInfo)
5366{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005367 AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005368 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005369 vkEnc->vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005370}
5371static void entry_vkQueueEndDebugUtilsLabelEXT(
5372 VkQueue queue)
5373{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005374 AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005375 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005376 vkEnc->vkQueueEndDebugUtilsLabelEXT(queue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005377}
5378static void entry_vkQueueInsertDebugUtilsLabelEXT(
5379 VkQueue queue,
5380 const VkDebugUtilsLabelEXT* pLabelInfo)
5381{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005382 AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005383 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005384 vkEnc->vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005385}
5386static void entry_vkCmdBeginDebugUtilsLabelEXT(
5387 VkCommandBuffer commandBuffer,
5388 const VkDebugUtilsLabelEXT* pLabelInfo)
5389{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005390 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005391 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005392 vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005393}
5394static void entry_vkCmdEndDebugUtilsLabelEXT(
5395 VkCommandBuffer commandBuffer)
5396{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005397 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005398 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005399 vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005400}
5401static void entry_vkCmdInsertDebugUtilsLabelEXT(
5402 VkCommandBuffer commandBuffer,
5403 const VkDebugUtilsLabelEXT* pLabelInfo)
5404{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005405 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005406 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005407 vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005408}
5409static VkResult entry_vkCreateDebugUtilsMessengerEXT(
5410 VkInstance instance,
5411 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
5412 const VkAllocationCallbacks* pAllocator,
5413 VkDebugUtilsMessengerEXT* pMessenger)
5414{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005415 AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005416 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005417 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005418 vkCreateDebugUtilsMessengerEXT_VkResult_return = vkEnc->vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005419 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
5420}
5421static void entry_vkDestroyDebugUtilsMessengerEXT(
5422 VkInstance instance,
5423 VkDebugUtilsMessengerEXT messenger,
5424 const VkAllocationCallbacks* pAllocator)
5425{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005426 AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005427 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005428 vkEnc->vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005429}
5430static void entry_vkSubmitDebugUtilsMessageEXT(
5431 VkInstance instance,
5432 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
5433 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
5434 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
5435{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005436 AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005437 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005438 vkEnc->vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005439}
5440#endif
5441#ifdef VK_ANDROID_external_memory_android_hardware_buffer
5442static VkResult entry_vkGetAndroidHardwareBufferPropertiesANDROID(
5443 VkDevice device,
5444 const AHardwareBuffer* buffer,
5445 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
5446{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005447 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005448 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005449 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08005450 auto resources = ResourceTracker::get();
5451 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005452 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
5453}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005454static VkResult dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID(
5455 VkDevice device,
5456 const AHardwareBuffer* buffer,
5457 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
5458{
5459 auto resources = ResourceTracker::get();
5460 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
5461 {
5462 sOnInvalidDynamicallyCheckedCall("vkGetAndroidHardwareBufferPropertiesANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
5463 }
5464 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005465 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005466 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
5467 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
5468 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
5469}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005470static VkResult entry_vkGetMemoryAndroidHardwareBufferANDROID(
5471 VkDevice device,
5472 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
5473 AHardwareBuffer** pBuffer)
5474{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005475 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005476 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005477 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08005478 auto resources = ResourceTracker::get();
5479 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005480 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
5481}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005482static VkResult dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID(
5483 VkDevice device,
5484 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
5485 AHardwareBuffer** pBuffer)
5486{
5487 auto resources = ResourceTracker::get();
5488 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
5489 {
5490 sOnInvalidDynamicallyCheckedCall("vkGetMemoryAndroidHardwareBufferANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
5491 }
5492 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005493 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005494 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
5495 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
5496 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
5497}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005498#endif
5499#ifdef VK_EXT_sampler_filter_minmax
5500#endif
5501#ifdef VK_AMD_gpu_shader_int16
5502#endif
5503#ifdef VK_AMD_mixed_attachment_samples
5504#endif
5505#ifdef VK_AMD_shader_fragment_mask
5506#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005507#ifdef VK_EXT_inline_uniform_block
5508#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005509#ifdef VK_EXT_shader_stencil_export
5510#endif
5511#ifdef VK_EXT_sample_locations
5512static void entry_vkCmdSetSampleLocationsEXT(
5513 VkCommandBuffer commandBuffer,
5514 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
5515{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005516 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005517 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005518 vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005519}
5520static void entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(
5521 VkPhysicalDevice physicalDevice,
5522 VkSampleCountFlagBits samples,
5523 VkMultisamplePropertiesEXT* pMultisampleProperties)
5524{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005525 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005526 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005527 vkEnc->vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005528}
5529#endif
5530#ifdef VK_EXT_blend_operation_advanced
5531#endif
5532#ifdef VK_NV_fragment_coverage_to_color
5533#endif
5534#ifdef VK_NV_framebuffer_mixed_samples
5535#endif
5536#ifdef VK_NV_fill_rectangle
5537#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005538#ifdef VK_NV_shader_sm_builtins
5539#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005540#ifdef VK_EXT_post_depth_coverage
5541#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005542#ifdef VK_EXT_image_drm_format_modifier
5543static VkResult entry_vkGetImageDrmFormatModifierPropertiesEXT(
5544 VkDevice device,
5545 VkImage image,
5546 VkImageDrmFormatModifierPropertiesEXT* pProperties)
5547{
5548 AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
5549 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5550 VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
5551 vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, true /* do lock */);
5552 return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
5553}
5554static VkResult dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT(
5555 VkDevice device,
5556 VkImage image,
5557 VkImageDrmFormatModifierPropertiesEXT* pProperties)
5558{
5559 auto resources = ResourceTracker::get();
5560 if (!resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier"))
5561 {
5562 sOnInvalidDynamicallyCheckedCall("vkGetImageDrmFormatModifierPropertiesEXT", "VK_EXT_image_drm_format_modifier");
5563 }
5564 AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
5565 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5566 VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
5567 vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, true /* do lock */);
5568 return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
5569}
5570#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005571#ifdef VK_EXT_validation_cache
5572static VkResult entry_vkCreateValidationCacheEXT(
5573 VkDevice device,
5574 const VkValidationCacheCreateInfoEXT* pCreateInfo,
5575 const VkAllocationCallbacks* pAllocator,
5576 VkValidationCacheEXT* pValidationCache)
5577{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005578 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005579 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005580 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005581 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005582 return vkCreateValidationCacheEXT_VkResult_return;
5583}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005584static VkResult dynCheck_entry_vkCreateValidationCacheEXT(
5585 VkDevice device,
5586 const VkValidationCacheCreateInfoEXT* pCreateInfo,
5587 const VkAllocationCallbacks* pAllocator,
5588 VkValidationCacheEXT* pValidationCache)
5589{
5590 auto resources = ResourceTracker::get();
5591 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5592 {
5593 sOnInvalidDynamicallyCheckedCall("vkCreateValidationCacheEXT", "VK_EXT_validation_cache");
5594 }
5595 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005596 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005597 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005598 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005599 return vkCreateValidationCacheEXT_VkResult_return;
5600}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005601static void entry_vkDestroyValidationCacheEXT(
5602 VkDevice device,
5603 VkValidationCacheEXT validationCache,
5604 const VkAllocationCallbacks* pAllocator)
5605{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005606 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005607 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005608 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005609}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005610static void dynCheck_entry_vkDestroyValidationCacheEXT(
5611 VkDevice device,
5612 VkValidationCacheEXT validationCache,
5613 const VkAllocationCallbacks* pAllocator)
5614{
5615 auto resources = ResourceTracker::get();
5616 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5617 {
5618 sOnInvalidDynamicallyCheckedCall("vkDestroyValidationCacheEXT", "VK_EXT_validation_cache");
5619 }
5620 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005621 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005622 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005623}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005624static VkResult entry_vkMergeValidationCachesEXT(
5625 VkDevice device,
5626 VkValidationCacheEXT dstCache,
5627 uint32_t srcCacheCount,
5628 const VkValidationCacheEXT* pSrcCaches)
5629{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005630 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005631 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005632 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005633 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005634 return vkMergeValidationCachesEXT_VkResult_return;
5635}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005636static VkResult dynCheck_entry_vkMergeValidationCachesEXT(
5637 VkDevice device,
5638 VkValidationCacheEXT dstCache,
5639 uint32_t srcCacheCount,
5640 const VkValidationCacheEXT* pSrcCaches)
5641{
5642 auto resources = ResourceTracker::get();
5643 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5644 {
5645 sOnInvalidDynamicallyCheckedCall("vkMergeValidationCachesEXT", "VK_EXT_validation_cache");
5646 }
5647 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005648 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005649 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005650 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005651 return vkMergeValidationCachesEXT_VkResult_return;
5652}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005653static VkResult entry_vkGetValidationCacheDataEXT(
5654 VkDevice device,
5655 VkValidationCacheEXT validationCache,
5656 size_t* pDataSize,
5657 void* pData)
5658{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005659 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005660 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005661 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005662 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005663 return vkGetValidationCacheDataEXT_VkResult_return;
5664}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005665static VkResult dynCheck_entry_vkGetValidationCacheDataEXT(
5666 VkDevice device,
5667 VkValidationCacheEXT validationCache,
5668 size_t* pDataSize,
5669 void* pData)
5670{
5671 auto resources = ResourceTracker::get();
5672 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5673 {
5674 sOnInvalidDynamicallyCheckedCall("vkGetValidationCacheDataEXT", "VK_EXT_validation_cache");
5675 }
5676 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005677 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005678 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005679 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005680 return vkGetValidationCacheDataEXT_VkResult_return;
5681}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005682#endif
5683#ifdef VK_EXT_descriptor_indexing
5684#endif
5685#ifdef VK_EXT_shader_viewport_index_layer
5686#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005687#ifdef VK_NV_shading_rate_image
5688static void entry_vkCmdBindShadingRateImageNV(
5689 VkCommandBuffer commandBuffer,
5690 VkImageView imageView,
5691 VkImageLayout imageLayout)
5692{
5693 AEMU_SCOPED_TRACE("vkCmdBindShadingRateImageNV");
5694 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5695 vkEnc->vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, true /* do lock */);
5696}
5697static void entry_vkCmdSetViewportShadingRatePaletteNV(
5698 VkCommandBuffer commandBuffer,
5699 uint32_t firstViewport,
5700 uint32_t viewportCount,
5701 const VkShadingRatePaletteNV* pShadingRatePalettes)
5702{
5703 AEMU_SCOPED_TRACE("vkCmdSetViewportShadingRatePaletteNV");
5704 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5705 vkEnc->vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, true /* do lock */);
5706}
5707static void entry_vkCmdSetCoarseSampleOrderNV(
5708 VkCommandBuffer commandBuffer,
5709 VkCoarseSampleOrderTypeNV sampleOrderType,
5710 uint32_t customSampleOrderCount,
5711 const VkCoarseSampleOrderCustomNV* pCustomSampleOrders)
5712{
5713 AEMU_SCOPED_TRACE("vkCmdSetCoarseSampleOrderNV");
5714 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5715 vkEnc->vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, true /* do lock */);
5716}
5717#endif
5718#ifdef VK_NV_ray_tracing
5719static VkResult entry_vkCreateAccelerationStructureNV(
5720 VkDevice device,
5721 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
5722 const VkAllocationCallbacks* pAllocator,
5723 VkAccelerationStructureNV* pAccelerationStructure)
5724{
5725 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
5726 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5727 VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
5728 vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
5729 return vkCreateAccelerationStructureNV_VkResult_return;
5730}
5731static VkResult dynCheck_entry_vkCreateAccelerationStructureNV(
5732 VkDevice device,
5733 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
5734 const VkAllocationCallbacks* pAllocator,
5735 VkAccelerationStructureNV* pAccelerationStructure)
5736{
5737 auto resources = ResourceTracker::get();
5738 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5739 {
5740 sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureNV", "VK_NV_ray_tracing");
5741 }
5742 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
5743 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5744 VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
5745 vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
5746 return vkCreateAccelerationStructureNV_VkResult_return;
5747}
5748static void entry_vkDestroyAccelerationStructureNV(
5749 VkDevice device,
5750 VkAccelerationStructureNV accelerationStructure,
5751 const VkAllocationCallbacks* pAllocator)
5752{
5753 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
5754 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5755 vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, true /* do lock */);
5756}
5757static void dynCheck_entry_vkDestroyAccelerationStructureNV(
5758 VkDevice device,
5759 VkAccelerationStructureNV accelerationStructure,
5760 const VkAllocationCallbacks* pAllocator)
5761{
5762 auto resources = ResourceTracker::get();
5763 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5764 {
5765 sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureNV", "VK_NV_ray_tracing");
5766 }
5767 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
5768 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5769 vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, true /* do lock */);
5770}
5771static void entry_vkGetAccelerationStructureMemoryRequirementsNV(
5772 VkDevice device,
5773 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
5774 VkMemoryRequirements2KHR* pMemoryRequirements)
5775{
5776 AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
5777 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5778 vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
5779}
5780static void dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV(
5781 VkDevice device,
5782 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
5783 VkMemoryRequirements2KHR* pMemoryRequirements)
5784{
5785 auto resources = ResourceTracker::get();
5786 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5787 {
5788 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureMemoryRequirementsNV", "VK_NV_ray_tracing");
5789 }
5790 AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
5791 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5792 vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
5793}
5794static VkResult entry_vkBindAccelerationStructureMemoryNV(
5795 VkDevice device,
5796 uint32_t bindInfoCount,
5797 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
5798{
5799 AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
5800 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5801 VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
5802 vkBindAccelerationStructureMemoryNV_VkResult_return = vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, true /* do lock */);
5803 return vkBindAccelerationStructureMemoryNV_VkResult_return;
5804}
5805static VkResult dynCheck_entry_vkBindAccelerationStructureMemoryNV(
5806 VkDevice device,
5807 uint32_t bindInfoCount,
5808 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
5809{
5810 auto resources = ResourceTracker::get();
5811 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5812 {
5813 sOnInvalidDynamicallyCheckedCall("vkBindAccelerationStructureMemoryNV", "VK_NV_ray_tracing");
5814 }
5815 AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
5816 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5817 VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
5818 vkBindAccelerationStructureMemoryNV_VkResult_return = vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, true /* do lock */);
5819 return vkBindAccelerationStructureMemoryNV_VkResult_return;
5820}
5821static void entry_vkCmdBuildAccelerationStructureNV(
5822 VkCommandBuffer commandBuffer,
5823 const VkAccelerationStructureInfoNV* pInfo,
5824 VkBuffer instanceData,
5825 VkDeviceSize instanceOffset,
5826 VkBool32 update,
5827 VkAccelerationStructureNV dst,
5828 VkAccelerationStructureNV src,
5829 VkBuffer scratch,
5830 VkDeviceSize scratchOffset)
5831{
5832 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructureNV");
5833 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5834 vkEnc->vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, true /* do lock */);
5835}
5836static void entry_vkCmdCopyAccelerationStructureNV(
5837 VkCommandBuffer commandBuffer,
5838 VkAccelerationStructureNV dst,
5839 VkAccelerationStructureNV src,
5840 VkCopyAccelerationStructureModeKHR mode)
5841{
5842 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureNV");
5843 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5844 vkEnc->vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, true /* do lock */);
5845}
5846static void entry_vkCmdTraceRaysNV(
5847 VkCommandBuffer commandBuffer,
5848 VkBuffer raygenShaderBindingTableBuffer,
5849 VkDeviceSize raygenShaderBindingOffset,
5850 VkBuffer missShaderBindingTableBuffer,
5851 VkDeviceSize missShaderBindingOffset,
5852 VkDeviceSize missShaderBindingStride,
5853 VkBuffer hitShaderBindingTableBuffer,
5854 VkDeviceSize hitShaderBindingOffset,
5855 VkDeviceSize hitShaderBindingStride,
5856 VkBuffer callableShaderBindingTableBuffer,
5857 VkDeviceSize callableShaderBindingOffset,
5858 VkDeviceSize callableShaderBindingStride,
5859 uint32_t width,
5860 uint32_t height,
5861 uint32_t depth)
5862{
5863 AEMU_SCOPED_TRACE("vkCmdTraceRaysNV");
5864 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5865 vkEnc->vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, true /* do lock */);
5866}
5867static VkResult entry_vkCreateRayTracingPipelinesNV(
5868 VkDevice device,
5869 VkPipelineCache pipelineCache,
5870 uint32_t createInfoCount,
5871 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
5872 const VkAllocationCallbacks* pAllocator,
5873 VkPipeline* pPipelines)
5874{
5875 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
5876 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5877 VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
5878 vkCreateRayTracingPipelinesNV_VkResult_return = vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
5879 return vkCreateRayTracingPipelinesNV_VkResult_return;
5880}
5881static VkResult dynCheck_entry_vkCreateRayTracingPipelinesNV(
5882 VkDevice device,
5883 VkPipelineCache pipelineCache,
5884 uint32_t createInfoCount,
5885 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
5886 const VkAllocationCallbacks* pAllocator,
5887 VkPipeline* pPipelines)
5888{
5889 auto resources = ResourceTracker::get();
5890 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5891 {
5892 sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesNV", "VK_NV_ray_tracing");
5893 }
5894 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
5895 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5896 VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
5897 vkCreateRayTracingPipelinesNV_VkResult_return = vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
5898 return vkCreateRayTracingPipelinesNV_VkResult_return;
5899}
5900static VkResult entry_vkGetRayTracingShaderGroupHandlesKHR(
5901 VkDevice device,
5902 VkPipeline pipeline,
5903 uint32_t firstGroup,
5904 uint32_t groupCount,
5905 size_t dataSize,
5906 void* pData)
5907{
5908 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
5909 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5910 VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
5911 vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5912 return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
5913}
5914static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR(
5915 VkDevice device,
5916 VkPipeline pipeline,
5917 uint32_t firstGroup,
5918 uint32_t groupCount,
5919 size_t dataSize,
5920 void* pData)
5921{
5922 auto resources = ResourceTracker::get();
5923 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5924 {
5925 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesKHR", "VK_NV_ray_tracing");
5926 }
5927 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
5928 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5929 VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
5930 vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5931 return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
5932}
5933static VkResult entry_vkGetRayTracingShaderGroupHandlesNV(
5934 VkDevice device,
5935 VkPipeline pipeline,
5936 uint32_t firstGroup,
5937 uint32_t groupCount,
5938 size_t dataSize,
5939 void* pData)
5940{
5941 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
5942 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5943 VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
5944 vkGetRayTracingShaderGroupHandlesNV_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5945 return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
5946}
5947static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV(
5948 VkDevice device,
5949 VkPipeline pipeline,
5950 uint32_t firstGroup,
5951 uint32_t groupCount,
5952 size_t dataSize,
5953 void* pData)
5954{
5955 auto resources = ResourceTracker::get();
5956 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5957 {
5958 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesNV", "VK_NV_ray_tracing");
5959 }
5960 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
5961 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5962 VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
5963 vkGetRayTracingShaderGroupHandlesNV_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5964 return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
5965}
5966static VkResult entry_vkGetAccelerationStructureHandleNV(
5967 VkDevice device,
5968 VkAccelerationStructureNV accelerationStructure,
5969 size_t dataSize,
5970 void* pData)
5971{
5972 AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
5973 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5974 VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
5975 vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, true /* do lock */);
5976 return vkGetAccelerationStructureHandleNV_VkResult_return;
5977}
5978static VkResult dynCheck_entry_vkGetAccelerationStructureHandleNV(
5979 VkDevice device,
5980 VkAccelerationStructureNV accelerationStructure,
5981 size_t dataSize,
5982 void* pData)
5983{
5984 auto resources = ResourceTracker::get();
5985 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5986 {
5987 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureHandleNV", "VK_NV_ray_tracing");
5988 }
5989 AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
5990 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5991 VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
5992 vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, true /* do lock */);
5993 return vkGetAccelerationStructureHandleNV_VkResult_return;
5994}
5995static void entry_vkCmdWriteAccelerationStructuresPropertiesNV(
5996 VkCommandBuffer commandBuffer,
5997 uint32_t accelerationStructureCount,
5998 const VkAccelerationStructureNV* pAccelerationStructures,
5999 VkQueryType queryType,
6000 VkQueryPool queryPool,
6001 uint32_t firstQuery)
6002{
6003 AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesNV");
6004 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6005 vkEnc->vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
6006}
6007static VkResult entry_vkCompileDeferredNV(
6008 VkDevice device,
6009 VkPipeline pipeline,
6010 uint32_t shader)
6011{
6012 AEMU_SCOPED_TRACE("vkCompileDeferredNV");
6013 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6014 VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
6015 vkCompileDeferredNV_VkResult_return = vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
6016 return vkCompileDeferredNV_VkResult_return;
6017}
6018static VkResult dynCheck_entry_vkCompileDeferredNV(
6019 VkDevice device,
6020 VkPipeline pipeline,
6021 uint32_t shader)
6022{
6023 auto resources = ResourceTracker::get();
6024 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6025 {
6026 sOnInvalidDynamicallyCheckedCall("vkCompileDeferredNV", "VK_NV_ray_tracing");
6027 }
6028 AEMU_SCOPED_TRACE("vkCompileDeferredNV");
6029 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6030 VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
6031 vkCompileDeferredNV_VkResult_return = vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
6032 return vkCompileDeferredNV_VkResult_return;
6033}
6034#endif
6035#ifdef VK_NV_representative_fragment_test
6036#endif
6037#ifdef VK_EXT_filter_cubic
6038#endif
6039#ifdef VK_QCOM_render_pass_shader_resolve
6040#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006041#ifdef VK_EXT_global_priority
6042#endif
6043#ifdef VK_EXT_external_memory_host
6044static VkResult entry_vkGetMemoryHostPointerPropertiesEXT(
6045 VkDevice device,
6046 VkExternalMemoryHandleTypeFlagBits handleType,
6047 const void* pHostPointer,
6048 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
6049{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006050 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006051 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006052 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006053 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006054 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
6055}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006056static VkResult dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT(
6057 VkDevice device,
6058 VkExternalMemoryHandleTypeFlagBits handleType,
6059 const void* pHostPointer,
6060 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
6061{
6062 auto resources = ResourceTracker::get();
6063 if (!resources->hasDeviceExtension(device, "VK_EXT_external_memory_host"))
6064 {
6065 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostPointerPropertiesEXT", "VK_EXT_external_memory_host");
6066 }
6067 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006068 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006069 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006070 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006071 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
6072}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006073#endif
6074#ifdef VK_AMD_buffer_marker
6075static void entry_vkCmdWriteBufferMarkerAMD(
6076 VkCommandBuffer commandBuffer,
6077 VkPipelineStageFlagBits pipelineStage,
6078 VkBuffer dstBuffer,
6079 VkDeviceSize dstOffset,
6080 uint32_t marker)
6081{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006082 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006083 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006084 vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006085}
6086#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006087#ifdef VK_AMD_pipeline_compiler_control
6088#endif
6089#ifdef VK_EXT_calibrated_timestamps
6090static VkResult entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
6091 VkPhysicalDevice physicalDevice,
6092 uint32_t* pTimeDomainCount,
6093 VkTimeDomainEXT* pTimeDomains)
6094{
6095 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCalibrateableTimeDomainsEXT");
6096 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6097 VkResult vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return = (VkResult)0;
6098 vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return = vkEnc->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, true /* do lock */);
6099 return vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return;
6100}
6101static VkResult entry_vkGetCalibratedTimestampsEXT(
6102 VkDevice device,
6103 uint32_t timestampCount,
6104 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
6105 uint64_t* pTimestamps,
6106 uint64_t* pMaxDeviation)
6107{
6108 AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
6109 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6110 VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
6111 vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
6112 return vkGetCalibratedTimestampsEXT_VkResult_return;
6113}
6114static VkResult dynCheck_entry_vkGetCalibratedTimestampsEXT(
6115 VkDevice device,
6116 uint32_t timestampCount,
6117 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
6118 uint64_t* pTimestamps,
6119 uint64_t* pMaxDeviation)
6120{
6121 auto resources = ResourceTracker::get();
6122 if (!resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps"))
6123 {
6124 sOnInvalidDynamicallyCheckedCall("vkGetCalibratedTimestampsEXT", "VK_EXT_calibrated_timestamps");
6125 }
6126 AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
6127 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6128 VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
6129 vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
6130 return vkGetCalibratedTimestampsEXT_VkResult_return;
6131}
6132#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006133#ifdef VK_AMD_shader_core_properties
6134#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006135#ifdef VK_AMD_memory_overallocation_behavior
6136#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006137#ifdef VK_EXT_vertex_attribute_divisor
6138#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006139#ifdef VK_GGP_frame_token
6140#endif
6141#ifdef VK_EXT_pipeline_creation_feedback
6142#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006143#ifdef VK_NV_shader_subgroup_partitioned
6144#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006145#ifdef VK_NV_compute_shader_derivatives
6146#endif
6147#ifdef VK_NV_mesh_shader
6148static void entry_vkCmdDrawMeshTasksNV(
6149 VkCommandBuffer commandBuffer,
6150 uint32_t taskCount,
6151 uint32_t firstTask)
6152{
6153 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksNV");
6154 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6155 vkEnc->vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, true /* do lock */);
6156}
6157static void entry_vkCmdDrawMeshTasksIndirectNV(
6158 VkCommandBuffer commandBuffer,
6159 VkBuffer buffer,
6160 VkDeviceSize offset,
6161 uint32_t drawCount,
6162 uint32_t stride)
6163{
6164 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectNV");
6165 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6166 vkEnc->vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
6167}
6168static void entry_vkCmdDrawMeshTasksIndirectCountNV(
6169 VkCommandBuffer commandBuffer,
6170 VkBuffer buffer,
6171 VkDeviceSize offset,
6172 VkBuffer countBuffer,
6173 VkDeviceSize countBufferOffset,
6174 uint32_t maxDrawCount,
6175 uint32_t stride)
6176{
6177 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectCountNV");
6178 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6179 vkEnc->vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
6180}
6181#endif
6182#ifdef VK_NV_fragment_shader_barycentric
6183#endif
6184#ifdef VK_NV_shader_image_footprint
6185#endif
6186#ifdef VK_NV_scissor_exclusive
6187static void entry_vkCmdSetExclusiveScissorNV(
6188 VkCommandBuffer commandBuffer,
6189 uint32_t firstExclusiveScissor,
6190 uint32_t exclusiveScissorCount,
6191 const VkRect2D* pExclusiveScissors)
6192{
6193 AEMU_SCOPED_TRACE("vkCmdSetExclusiveScissorNV");
6194 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6195 vkEnc->vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, true /* do lock */);
6196}
6197#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006198#ifdef VK_NV_device_diagnostic_checkpoints
6199static void entry_vkCmdSetCheckpointNV(
6200 VkCommandBuffer commandBuffer,
6201 const void* pCheckpointMarker)
6202{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006203 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006204 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006205 vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006206}
6207static void entry_vkGetQueueCheckpointDataNV(
6208 VkQueue queue,
6209 uint32_t* pCheckpointDataCount,
6210 VkCheckpointDataNV* pCheckpointData)
6211{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006212 AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006213 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006214 vkEnc->vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006215}
6216#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006217#ifdef VK_INTEL_shader_integer_functions2
6218#endif
6219#ifdef VK_INTEL_performance_query
6220static VkResult entry_vkInitializePerformanceApiINTEL(
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006221 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08006222 const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006223{
Yilong Lia8d45f12021-02-07 02:30:21 -08006224 AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006225 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Yilong Lia8d45f12021-02-07 02:30:21 -08006226 VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
6227 vkInitializePerformanceApiINTEL_VkResult_return = vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
6228 return vkInitializePerformanceApiINTEL_VkResult_return;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006229}
Yilong Lia8d45f12021-02-07 02:30:21 -08006230static VkResult dynCheck_entry_vkInitializePerformanceApiINTEL(
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006231 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08006232 const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006233{
6234 auto resources = ResourceTracker::get();
Yilong Lia8d45f12021-02-07 02:30:21 -08006235 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006236 {
Yilong Lia8d45f12021-02-07 02:30:21 -08006237 sOnInvalidDynamicallyCheckedCall("vkInitializePerformanceApiINTEL", "VK_INTEL_performance_query");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006238 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006239 AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006240 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Yilong Lia8d45f12021-02-07 02:30:21 -08006241 VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
6242 vkInitializePerformanceApiINTEL_VkResult_return = vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
6243 return vkInitializePerformanceApiINTEL_VkResult_return;
6244}
6245static void entry_vkUninitializePerformanceApiINTEL(
6246 VkDevice device)
6247{
6248 AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
6249 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6250 vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
6251}
6252static void dynCheck_entry_vkUninitializePerformanceApiINTEL(
6253 VkDevice device)
6254{
6255 auto resources = ResourceTracker::get();
6256 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6257 {
6258 sOnInvalidDynamicallyCheckedCall("vkUninitializePerformanceApiINTEL", "VK_INTEL_performance_query");
6259 }
6260 AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
6261 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6262 vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
6263}
6264static VkResult entry_vkCmdSetPerformanceMarkerINTEL(
6265 VkCommandBuffer commandBuffer,
6266 const VkPerformanceMarkerInfoINTEL* pMarkerInfo)
6267{
6268 AEMU_SCOPED_TRACE("vkCmdSetPerformanceMarkerINTEL");
6269 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6270 VkResult vkCmdSetPerformanceMarkerINTEL_VkResult_return = (VkResult)0;
6271 vkCmdSetPerformanceMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
6272 return vkCmdSetPerformanceMarkerINTEL_VkResult_return;
6273}
6274static VkResult entry_vkCmdSetPerformanceStreamMarkerINTEL(
6275 VkCommandBuffer commandBuffer,
6276 const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo)
6277{
6278 AEMU_SCOPED_TRACE("vkCmdSetPerformanceStreamMarkerINTEL");
6279 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6280 VkResult vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = (VkResult)0;
6281 vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
6282 return vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return;
6283}
6284static VkResult entry_vkCmdSetPerformanceOverrideINTEL(
6285 VkCommandBuffer commandBuffer,
6286 const VkPerformanceOverrideInfoINTEL* pOverrideInfo)
6287{
6288 AEMU_SCOPED_TRACE("vkCmdSetPerformanceOverrideINTEL");
6289 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6290 VkResult vkCmdSetPerformanceOverrideINTEL_VkResult_return = (VkResult)0;
6291 vkCmdSetPerformanceOverrideINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, true /* do lock */);
6292 return vkCmdSetPerformanceOverrideINTEL_VkResult_return;
6293}
6294static VkResult entry_vkAcquirePerformanceConfigurationINTEL(
6295 VkDevice device,
6296 const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
6297 VkPerformanceConfigurationINTEL* pConfiguration)
6298{
6299 AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
6300 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6301 VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6302 vkAcquirePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, true /* do lock */);
6303 return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
6304}
6305static VkResult dynCheck_entry_vkAcquirePerformanceConfigurationINTEL(
6306 VkDevice device,
6307 const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
6308 VkPerformanceConfigurationINTEL* pConfiguration)
6309{
6310 auto resources = ResourceTracker::get();
6311 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6312 {
6313 sOnInvalidDynamicallyCheckedCall("vkAcquirePerformanceConfigurationINTEL", "VK_INTEL_performance_query");
6314 }
6315 AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
6316 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6317 VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6318 vkAcquirePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, true /* do lock */);
6319 return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
6320}
6321static VkResult entry_vkReleasePerformanceConfigurationINTEL(
6322 VkDevice device,
6323 VkPerformanceConfigurationINTEL configuration)
6324{
6325 AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
6326 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6327 VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6328 vkReleasePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
6329 return vkReleasePerformanceConfigurationINTEL_VkResult_return;
6330}
6331static VkResult dynCheck_entry_vkReleasePerformanceConfigurationINTEL(
6332 VkDevice device,
6333 VkPerformanceConfigurationINTEL configuration)
6334{
6335 auto resources = ResourceTracker::get();
6336 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6337 {
6338 sOnInvalidDynamicallyCheckedCall("vkReleasePerformanceConfigurationINTEL", "VK_INTEL_performance_query");
6339 }
6340 AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
6341 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6342 VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6343 vkReleasePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
6344 return vkReleasePerformanceConfigurationINTEL_VkResult_return;
6345}
6346static VkResult entry_vkQueueSetPerformanceConfigurationINTEL(
6347 VkQueue queue,
6348 VkPerformanceConfigurationINTEL configuration)
6349{
6350 AEMU_SCOPED_TRACE("vkQueueSetPerformanceConfigurationINTEL");
6351 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
6352 VkResult vkQueueSetPerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6353 vkQueueSetPerformanceConfigurationINTEL_VkResult_return = vkEnc->vkQueueSetPerformanceConfigurationINTEL(queue, configuration, true /* do lock */);
6354 return vkQueueSetPerformanceConfigurationINTEL_VkResult_return;
6355}
6356static VkResult entry_vkGetPerformanceParameterINTEL(
6357 VkDevice device,
6358 VkPerformanceParameterTypeINTEL parameter,
6359 VkPerformanceValueINTEL* pValue)
6360{
6361 AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
6362 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6363 VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
6364 vkGetPerformanceParameterINTEL_VkResult_return = vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
6365 return vkGetPerformanceParameterINTEL_VkResult_return;
6366}
6367static VkResult dynCheck_entry_vkGetPerformanceParameterINTEL(
6368 VkDevice device,
6369 VkPerformanceParameterTypeINTEL parameter,
6370 VkPerformanceValueINTEL* pValue)
6371{
6372 auto resources = ResourceTracker::get();
6373 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6374 {
6375 sOnInvalidDynamicallyCheckedCall("vkGetPerformanceParameterINTEL", "VK_INTEL_performance_query");
6376 }
6377 AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
6378 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6379 VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
6380 vkGetPerformanceParameterINTEL_VkResult_return = vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
6381 return vkGetPerformanceParameterINTEL_VkResult_return;
6382}
6383#endif
6384#ifdef VK_EXT_pci_bus_info
6385#endif
6386#ifdef VK_AMD_display_native_hdr
6387static void entry_vkSetLocalDimmingAMD(
6388 VkDevice device,
6389 VkSwapchainKHR swapChain,
6390 VkBool32 localDimmingEnable)
6391{
6392 AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
6393 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6394 vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
6395}
6396static void dynCheck_entry_vkSetLocalDimmingAMD(
6397 VkDevice device,
6398 VkSwapchainKHR swapChain,
6399 VkBool32 localDimmingEnable)
6400{
6401 auto resources = ResourceTracker::get();
6402 if (!resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr"))
6403 {
6404 sOnInvalidDynamicallyCheckedCall("vkSetLocalDimmingAMD", "VK_AMD_display_native_hdr");
6405 }
6406 AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
6407 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6408 vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
6409}
6410#endif
6411#ifdef VK_FUCHSIA_imagepipe_surface
6412static VkResult entry_vkCreateImagePipeSurfaceFUCHSIA(
6413 VkInstance instance,
6414 const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
6415 const VkAllocationCallbacks* pAllocator,
6416 VkSurfaceKHR* pSurface)
6417{
6418 AEMU_SCOPED_TRACE("vkCreateImagePipeSurfaceFUCHSIA");
6419 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6420 VkResult vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = (VkResult)0;
6421 vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = vkEnc->vkCreateImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
6422 return vkCreateImagePipeSurfaceFUCHSIA_VkResult_return;
6423}
6424#endif
6425#ifdef VK_EXT_metal_surface
6426static VkResult entry_vkCreateMetalSurfaceEXT(
6427 VkInstance instance,
6428 const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
6429 const VkAllocationCallbacks* pAllocator,
6430 VkSurfaceKHR* pSurface)
6431{
6432 AEMU_SCOPED_TRACE("vkCreateMetalSurfaceEXT");
6433 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6434 VkResult vkCreateMetalSurfaceEXT_VkResult_return = (VkResult)0;
6435 vkCreateMetalSurfaceEXT_VkResult_return = vkEnc->vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
6436 return vkCreateMetalSurfaceEXT_VkResult_return;
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006437}
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006438#endif
Yilong Li48081632021-04-13 22:38:10 -07006439#ifdef VK_EXT_fragment_density_map
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006440#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006441#ifdef VK_EXT_scalar_block_layout
6442#endif
6443#ifdef VK_GOOGLE_hlsl_functionality1
6444#endif
6445#ifdef VK_GOOGLE_decorate_string
6446#endif
6447#ifdef VK_EXT_subgroup_size_control
6448#endif
6449#ifdef VK_AMD_shader_core_properties2
6450#endif
6451#ifdef VK_AMD_device_coherent_memory
6452#endif
6453#ifdef VK_EXT_shader_image_atomic_int64
6454#endif
6455#ifdef VK_EXT_memory_budget
6456#endif
6457#ifdef VK_EXT_memory_priority
6458#endif
6459#ifdef VK_NV_dedicated_allocation_image_aliasing
6460#endif
6461#ifdef VK_EXT_buffer_device_address
6462static VkDeviceAddress entry_vkGetBufferDeviceAddressEXT(
6463 VkDevice device,
6464 const VkBufferDeviceAddressInfo* pInfo)
6465{
6466 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
6467 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6468 VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
6469 vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
6470 return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
6471}
6472static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressEXT(
6473 VkDevice device,
6474 const VkBufferDeviceAddressInfo* pInfo)
6475{
6476 auto resources = ResourceTracker::get();
6477 if (!resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address"))
6478 {
6479 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressEXT", "VK_EXT_buffer_device_address");
6480 }
6481 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
6482 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6483 VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
6484 vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
6485 return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
6486}
6487#endif
6488#ifdef VK_EXT_tooling_info
6489static VkResult entry_vkGetPhysicalDeviceToolPropertiesEXT(
6490 VkPhysicalDevice physicalDevice,
6491 uint32_t* pToolCount,
6492 VkPhysicalDeviceToolPropertiesEXT* pToolProperties)
6493{
6494 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceToolPropertiesEXT");
6495 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6496 VkResult vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = (VkResult)0;
6497 vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = vkEnc->vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, true /* do lock */);
6498 return vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return;
6499}
6500#endif
6501#ifdef VK_EXT_separate_stencil_usage
6502#endif
6503#ifdef VK_EXT_validation_features
6504#endif
6505#ifdef VK_NV_cooperative_matrix
6506static VkResult entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
6507 VkPhysicalDevice physicalDevice,
6508 uint32_t* pPropertyCount,
6509 VkCooperativeMatrixPropertiesNV* pProperties)
6510{
6511 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
6512 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6513 VkResult vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return = (VkResult)0;
6514 vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
6515 return vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return;
6516}
6517#endif
6518#ifdef VK_NV_coverage_reduction_mode
6519static VkResult entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
6520 VkPhysicalDevice physicalDevice,
6521 uint32_t* pCombinationCount,
6522 VkFramebufferMixedSamplesCombinationNV* pCombinations)
6523{
6524 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
6525 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6526 VkResult vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return = (VkResult)0;
6527 vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return = vkEnc->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, true /* do lock */);
6528 return vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return;
6529}
6530#endif
6531#ifdef VK_EXT_fragment_shader_interlock
6532#endif
6533#ifdef VK_EXT_ycbcr_image_arrays
6534#endif
6535#ifdef VK_EXT_full_screen_exclusive
6536static VkResult entry_vkGetPhysicalDeviceSurfacePresentModes2EXT(
6537 VkPhysicalDevice physicalDevice,
6538 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
6539 uint32_t* pPresentModeCount,
6540 VkPresentModeKHR* pPresentModes)
6541{
6542 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModes2EXT");
6543 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6544 VkResult vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
6545 vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes, true /* do lock */);
6546 return vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return;
6547}
6548static VkResult entry_vkAcquireFullScreenExclusiveModeEXT(
6549 VkDevice device,
6550 VkSwapchainKHR swapchain)
6551{
6552 AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
6553 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6554 VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6555 vkAcquireFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6556 return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
6557}
6558static VkResult dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT(
6559 VkDevice device,
6560 VkSwapchainKHR swapchain)
6561{
6562 auto resources = ResourceTracker::get();
6563 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
6564 {
6565 sOnInvalidDynamicallyCheckedCall("vkAcquireFullScreenExclusiveModeEXT", "VK_EXT_full_screen_exclusive");
6566 }
6567 AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
6568 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6569 VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6570 vkAcquireFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6571 return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
6572}
6573static VkResult entry_vkReleaseFullScreenExclusiveModeEXT(
6574 VkDevice device,
6575 VkSwapchainKHR swapchain)
6576{
6577 AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
6578 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6579 VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6580 vkReleaseFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6581 return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
6582}
6583static VkResult dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT(
6584 VkDevice device,
6585 VkSwapchainKHR swapchain)
6586{
6587 auto resources = ResourceTracker::get();
6588 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
6589 {
6590 sOnInvalidDynamicallyCheckedCall("vkReleaseFullScreenExclusiveModeEXT", "VK_EXT_full_screen_exclusive");
6591 }
6592 AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
6593 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6594 VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6595 vkReleaseFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6596 return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
6597}
6598static VkResult entry_vkGetDeviceGroupSurfacePresentModes2EXT(
6599 VkDevice device,
6600 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
6601 VkDeviceGroupPresentModeFlagsKHR* pModes)
6602{
6603 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
6604 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6605 VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
6606 vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, true /* do lock */);
6607 return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
6608}
6609static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT(
6610 VkDevice device,
6611 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
6612 VkDeviceGroupPresentModeFlagsKHR* pModes)
6613{
6614 auto resources = ResourceTracker::get();
6615 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
6616 {
6617 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModes2EXT", "VK_EXT_full_screen_exclusive");
6618 }
6619 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
6620 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6621 VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
6622 vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, true /* do lock */);
6623 return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
6624}
6625#endif
6626#ifdef VK_EXT_headless_surface
6627static VkResult entry_vkCreateHeadlessSurfaceEXT(
6628 VkInstance instance,
6629 const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo,
6630 const VkAllocationCallbacks* pAllocator,
6631 VkSurfaceKHR* pSurface)
6632{
6633 AEMU_SCOPED_TRACE("vkCreateHeadlessSurfaceEXT");
6634 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6635 VkResult vkCreateHeadlessSurfaceEXT_VkResult_return = (VkResult)0;
6636 vkCreateHeadlessSurfaceEXT_VkResult_return = vkEnc->vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
6637 return vkCreateHeadlessSurfaceEXT_VkResult_return;
6638}
6639#endif
6640#ifdef VK_EXT_line_rasterization
6641static void entry_vkCmdSetLineStippleEXT(
6642 VkCommandBuffer commandBuffer,
6643 uint32_t lineStippleFactor,
6644 uint16_t lineStipplePattern)
6645{
6646 AEMU_SCOPED_TRACE("vkCmdSetLineStippleEXT");
6647 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6648 vkEnc->vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, true /* do lock */);
6649}
6650#endif
6651#ifdef VK_EXT_shader_atomic_float
6652#endif
6653#ifdef VK_EXT_host_query_reset
6654static void entry_vkResetQueryPoolEXT(
6655 VkDevice device,
6656 VkQueryPool queryPool,
6657 uint32_t firstQuery,
6658 uint32_t queryCount)
6659{
6660 AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
6661 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6662 vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
6663}
6664static void dynCheck_entry_vkResetQueryPoolEXT(
6665 VkDevice device,
6666 VkQueryPool queryPool,
6667 uint32_t firstQuery,
6668 uint32_t queryCount)
6669{
6670 auto resources = ResourceTracker::get();
6671 if (!resources->hasDeviceExtension(device, "VK_EXT_host_query_reset"))
6672 {
6673 sOnInvalidDynamicallyCheckedCall("vkResetQueryPoolEXT", "VK_EXT_host_query_reset");
6674 }
6675 AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
6676 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6677 vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
6678}
6679#endif
6680#ifdef VK_EXT_index_type_uint8
6681#endif
6682#ifdef VK_EXT_extended_dynamic_state
6683static void entry_vkCmdSetCullModeEXT(
6684 VkCommandBuffer commandBuffer,
6685 VkCullModeFlags cullMode)
6686{
6687 AEMU_SCOPED_TRACE("vkCmdSetCullModeEXT");
6688 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6689 vkEnc->vkCmdSetCullModeEXT(commandBuffer, cullMode, true /* do lock */);
6690}
6691static void entry_vkCmdSetFrontFaceEXT(
6692 VkCommandBuffer commandBuffer,
6693 VkFrontFace frontFace)
6694{
6695 AEMU_SCOPED_TRACE("vkCmdSetFrontFaceEXT");
6696 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6697 vkEnc->vkCmdSetFrontFaceEXT(commandBuffer, frontFace, true /* do lock */);
6698}
6699static void entry_vkCmdSetPrimitiveTopologyEXT(
6700 VkCommandBuffer commandBuffer,
6701 VkPrimitiveTopology primitiveTopology)
6702{
6703 AEMU_SCOPED_TRACE("vkCmdSetPrimitiveTopologyEXT");
6704 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6705 vkEnc->vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, true /* do lock */);
6706}
6707static void entry_vkCmdSetViewportWithCountEXT(
6708 VkCommandBuffer commandBuffer,
6709 uint32_t viewportCount,
6710 const VkViewport* pViewports)
6711{
6712 AEMU_SCOPED_TRACE("vkCmdSetViewportWithCountEXT");
6713 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6714 vkEnc->vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, true /* do lock */);
6715}
6716static void entry_vkCmdSetScissorWithCountEXT(
6717 VkCommandBuffer commandBuffer,
6718 uint32_t scissorCount,
6719 const VkRect2D* pScissors)
6720{
6721 AEMU_SCOPED_TRACE("vkCmdSetScissorWithCountEXT");
6722 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6723 vkEnc->vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, true /* do lock */);
6724}
6725static void entry_vkCmdBindVertexBuffers2EXT(
6726 VkCommandBuffer commandBuffer,
6727 uint32_t firstBinding,
6728 uint32_t bindingCount,
6729 const VkBuffer* pBuffers,
6730 const VkDeviceSize* pOffsets,
6731 const VkDeviceSize* pSizes,
6732 const VkDeviceSize* pStrides)
6733{
6734 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers2EXT");
6735 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6736 vkEnc->vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, true /* do lock */);
6737}
6738static void entry_vkCmdSetDepthTestEnableEXT(
6739 VkCommandBuffer commandBuffer,
6740 VkBool32 depthTestEnable)
6741{
6742 AEMU_SCOPED_TRACE("vkCmdSetDepthTestEnableEXT");
6743 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6744 vkEnc->vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, true /* do lock */);
6745}
6746static void entry_vkCmdSetDepthWriteEnableEXT(
6747 VkCommandBuffer commandBuffer,
6748 VkBool32 depthWriteEnable)
6749{
6750 AEMU_SCOPED_TRACE("vkCmdSetDepthWriteEnableEXT");
6751 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6752 vkEnc->vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, true /* do lock */);
6753}
6754static void entry_vkCmdSetDepthCompareOpEXT(
6755 VkCommandBuffer commandBuffer,
6756 VkCompareOp depthCompareOp)
6757{
6758 AEMU_SCOPED_TRACE("vkCmdSetDepthCompareOpEXT");
6759 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6760 vkEnc->vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, true /* do lock */);
6761}
6762static void entry_vkCmdSetDepthBoundsTestEnableEXT(
6763 VkCommandBuffer commandBuffer,
6764 VkBool32 depthBoundsTestEnable)
6765{
6766 AEMU_SCOPED_TRACE("vkCmdSetDepthBoundsTestEnableEXT");
6767 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6768 vkEnc->vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, true /* do lock */);
6769}
6770static void entry_vkCmdSetStencilTestEnableEXT(
6771 VkCommandBuffer commandBuffer,
6772 VkBool32 stencilTestEnable)
6773{
6774 AEMU_SCOPED_TRACE("vkCmdSetStencilTestEnableEXT");
6775 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6776 vkEnc->vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, true /* do lock */);
6777}
6778static void entry_vkCmdSetStencilOpEXT(
6779 VkCommandBuffer commandBuffer,
6780 VkStencilFaceFlags faceMask,
6781 VkStencilOp failOp,
6782 VkStencilOp passOp,
6783 VkStencilOp depthFailOp,
6784 VkCompareOp compareOp)
6785{
6786 AEMU_SCOPED_TRACE("vkCmdSetStencilOpEXT");
6787 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6788 vkEnc->vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, true /* do lock */);
6789}
6790#endif
6791#ifdef VK_EXT_shader_demote_to_helper_invocation
6792#endif
6793#ifdef VK_NV_device_generated_commands
6794static void entry_vkGetGeneratedCommandsMemoryRequirementsNV(
6795 VkDevice device,
6796 const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
6797 VkMemoryRequirements2* pMemoryRequirements)
6798{
6799 AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
6800 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6801 vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
6802}
6803static void dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV(
6804 VkDevice device,
6805 const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
6806 VkMemoryRequirements2* pMemoryRequirements)
6807{
6808 auto resources = ResourceTracker::get();
6809 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
6810 {
6811 sOnInvalidDynamicallyCheckedCall("vkGetGeneratedCommandsMemoryRequirementsNV", "VK_NV_device_generated_commands");
6812 }
6813 AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
6814 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6815 vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
6816}
6817static void entry_vkCmdPreprocessGeneratedCommandsNV(
6818 VkCommandBuffer commandBuffer,
6819 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
6820{
6821 AEMU_SCOPED_TRACE("vkCmdPreprocessGeneratedCommandsNV");
6822 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6823 vkEnc->vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, true /* do lock */);
6824}
6825static void entry_vkCmdExecuteGeneratedCommandsNV(
6826 VkCommandBuffer commandBuffer,
6827 VkBool32 isPreprocessed,
6828 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
6829{
6830 AEMU_SCOPED_TRACE("vkCmdExecuteGeneratedCommandsNV");
6831 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6832 vkEnc->vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, true /* do lock */);
6833}
6834static void entry_vkCmdBindPipelineShaderGroupNV(
6835 VkCommandBuffer commandBuffer,
6836 VkPipelineBindPoint pipelineBindPoint,
6837 VkPipeline pipeline,
6838 uint32_t groupIndex)
6839{
6840 AEMU_SCOPED_TRACE("vkCmdBindPipelineShaderGroupNV");
6841 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6842 vkEnc->vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, true /* do lock */);
6843}
6844static VkResult entry_vkCreateIndirectCommandsLayoutNV(
6845 VkDevice device,
6846 const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
6847 const VkAllocationCallbacks* pAllocator,
6848 VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
6849{
6850 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
6851 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6852 VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
6853 vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
6854 return vkCreateIndirectCommandsLayoutNV_VkResult_return;
6855}
6856static VkResult dynCheck_entry_vkCreateIndirectCommandsLayoutNV(
6857 VkDevice device,
6858 const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
6859 const VkAllocationCallbacks* pAllocator,
6860 VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
6861{
6862 auto resources = ResourceTracker::get();
6863 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
6864 {
6865 sOnInvalidDynamicallyCheckedCall("vkCreateIndirectCommandsLayoutNV", "VK_NV_device_generated_commands");
6866 }
6867 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
6868 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6869 VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
6870 vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
6871 return vkCreateIndirectCommandsLayoutNV_VkResult_return;
6872}
6873static void entry_vkDestroyIndirectCommandsLayoutNV(
6874 VkDevice device,
6875 VkIndirectCommandsLayoutNV indirectCommandsLayout,
6876 const VkAllocationCallbacks* pAllocator)
6877{
6878 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
6879 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6880 vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, true /* do lock */);
6881}
6882static void dynCheck_entry_vkDestroyIndirectCommandsLayoutNV(
6883 VkDevice device,
6884 VkIndirectCommandsLayoutNV indirectCommandsLayout,
6885 const VkAllocationCallbacks* pAllocator)
6886{
6887 auto resources = ResourceTracker::get();
6888 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
6889 {
6890 sOnInvalidDynamicallyCheckedCall("vkDestroyIndirectCommandsLayoutNV", "VK_NV_device_generated_commands");
6891 }
6892 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
6893 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6894 vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, true /* do lock */);
6895}
6896#endif
6897#ifdef VK_EXT_texel_buffer_alignment
6898#endif
6899#ifdef VK_QCOM_render_pass_transform
6900#endif
6901#ifdef VK_EXT_device_memory_report
6902#endif
6903#ifdef VK_EXT_robustness2
6904#endif
6905#ifdef VK_EXT_custom_border_color
6906#endif
6907#ifdef VK_GOOGLE_user_type
6908#endif
6909#ifdef VK_EXT_private_data
6910static VkResult entry_vkCreatePrivateDataSlotEXT(
6911 VkDevice device,
6912 const VkPrivateDataSlotCreateInfoEXT* pCreateInfo,
6913 const VkAllocationCallbacks* pAllocator,
6914 VkPrivateDataSlotEXT* pPrivateDataSlot)
6915{
6916 AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
6917 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6918 VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
6919 vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
6920 return vkCreatePrivateDataSlotEXT_VkResult_return;
6921}
6922static VkResult dynCheck_entry_vkCreatePrivateDataSlotEXT(
6923 VkDevice device,
6924 const VkPrivateDataSlotCreateInfoEXT* pCreateInfo,
6925 const VkAllocationCallbacks* pAllocator,
6926 VkPrivateDataSlotEXT* pPrivateDataSlot)
6927{
6928 auto resources = ResourceTracker::get();
6929 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
6930 {
6931 sOnInvalidDynamicallyCheckedCall("vkCreatePrivateDataSlotEXT", "VK_EXT_private_data");
6932 }
6933 AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
6934 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6935 VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
6936 vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
6937 return vkCreatePrivateDataSlotEXT_VkResult_return;
6938}
6939static void entry_vkDestroyPrivateDataSlotEXT(
6940 VkDevice device,
6941 VkPrivateDataSlotEXT privateDataSlot,
6942 const VkAllocationCallbacks* pAllocator)
6943{
6944 AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
6945 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6946 vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
6947}
6948static void dynCheck_entry_vkDestroyPrivateDataSlotEXT(
6949 VkDevice device,
6950 VkPrivateDataSlotEXT privateDataSlot,
6951 const VkAllocationCallbacks* pAllocator)
6952{
6953 auto resources = ResourceTracker::get();
6954 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
6955 {
6956 sOnInvalidDynamicallyCheckedCall("vkDestroyPrivateDataSlotEXT", "VK_EXT_private_data");
6957 }
6958 AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
6959 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6960 vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
6961}
6962static VkResult entry_vkSetPrivateDataEXT(
6963 VkDevice device,
6964 VkObjectType objectType,
6965 uint64_t objectHandle,
6966 VkPrivateDataSlotEXT privateDataSlot,
6967 uint64_t data)
6968{
6969 AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
6970 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6971 VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
6972 vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
6973 return vkSetPrivateDataEXT_VkResult_return;
6974}
6975static VkResult dynCheck_entry_vkSetPrivateDataEXT(
6976 VkDevice device,
6977 VkObjectType objectType,
6978 uint64_t objectHandle,
6979 VkPrivateDataSlotEXT privateDataSlot,
6980 uint64_t data)
6981{
6982 auto resources = ResourceTracker::get();
6983 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
6984 {
6985 sOnInvalidDynamicallyCheckedCall("vkSetPrivateDataEXT", "VK_EXT_private_data");
6986 }
6987 AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
6988 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6989 VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
6990 vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
6991 return vkSetPrivateDataEXT_VkResult_return;
6992}
6993static void entry_vkGetPrivateDataEXT(
6994 VkDevice device,
6995 VkObjectType objectType,
6996 uint64_t objectHandle,
6997 VkPrivateDataSlotEXT privateDataSlot,
6998 uint64_t* pData)
6999{
7000 AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
7001 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7002 vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, true /* do lock */);
7003}
7004static void dynCheck_entry_vkGetPrivateDataEXT(
7005 VkDevice device,
7006 VkObjectType objectType,
7007 uint64_t objectHandle,
7008 VkPrivateDataSlotEXT privateDataSlot,
7009 uint64_t* pData)
7010{
7011 auto resources = ResourceTracker::get();
7012 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
7013 {
7014 sOnInvalidDynamicallyCheckedCall("vkGetPrivateDataEXT", "VK_EXT_private_data");
7015 }
7016 AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
7017 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7018 vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, true /* do lock */);
7019}
7020#endif
7021#ifdef VK_EXT_pipeline_creation_cache_control
7022#endif
7023#ifdef VK_NV_device_diagnostics_config
7024#endif
7025#ifdef VK_QCOM_render_pass_store_ops
7026#endif
7027#ifdef VK_NV_fragment_shading_rate_enums
7028static void entry_vkCmdSetFragmentShadingRateEnumNV(
7029 VkCommandBuffer commandBuffer,
7030 VkFragmentShadingRateNV shadingRate,
7031 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
7032{
7033 AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateEnumNV");
7034 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7035 vkEnc->vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, true /* do lock */);
7036}
7037#endif
7038#ifdef VK_EXT_fragment_density_map2
7039#endif
7040#ifdef VK_QCOM_rotated_copy_commands
7041#endif
7042#ifdef VK_EXT_image_robustness
7043#endif
7044#ifdef VK_EXT_4444_formats
7045#endif
7046#ifdef VK_EXT_directfb_surface
7047static VkResult entry_vkCreateDirectFBSurfaceEXT(
7048 VkInstance instance,
7049 const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo,
7050 const VkAllocationCallbacks* pAllocator,
7051 VkSurfaceKHR* pSurface)
7052{
7053 AEMU_SCOPED_TRACE("vkCreateDirectFBSurfaceEXT");
7054 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7055 VkResult vkCreateDirectFBSurfaceEXT_VkResult_return = (VkResult)0;
7056 vkCreateDirectFBSurfaceEXT_VkResult_return = vkEnc->vkCreateDirectFBSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
7057 return vkCreateDirectFBSurfaceEXT_VkResult_return;
7058}
7059static VkBool32 entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT(
7060 VkPhysicalDevice physicalDevice,
7061 uint32_t queueFamilyIndex,
7062 IDirectFB* dfb)
7063{
7064 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDirectFBPresentationSupportEXT");
7065 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7066 VkBool32 vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return = (VkBool32)0;
7067 vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return = vkEnc->vkGetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice, queueFamilyIndex, dfb, true /* do lock */);
7068 return vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return;
7069}
7070#endif
Yilong Li71c43c52021-02-10 02:50:43 -08007071#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -07007072static VkResult entry_vkRegisterImageColorBufferGOOGLE(
7073 VkDevice device,
7074 VkImage image,
7075 uint32_t colorBuffer)
7076{
7077 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
7078 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7079 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
7080 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
7081 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
7082}
7083static VkResult dynCheck_entry_vkRegisterImageColorBufferGOOGLE(
7084 VkDevice device,
7085 VkImage image,
7086 uint32_t colorBuffer)
7087{
7088 auto resources = ResourceTracker::get();
7089 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
7090 {
7091 sOnInvalidDynamicallyCheckedCall("vkRegisterImageColorBufferGOOGLE", "VK_GOOGLE_gfxstream");
7092 }
7093 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
7094 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7095 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
7096 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
7097 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
7098}
7099static VkResult entry_vkRegisterBufferColorBufferGOOGLE(
7100 VkDevice device,
7101 VkBuffer buffer,
7102 uint32_t colorBuffer)
7103{
7104 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
7105 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7106 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
7107 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
7108 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
7109}
7110static VkResult dynCheck_entry_vkRegisterBufferColorBufferGOOGLE(
7111 VkDevice device,
7112 VkBuffer buffer,
7113 uint32_t colorBuffer)
7114{
7115 auto resources = ResourceTracker::get();
7116 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
7117 {
7118 sOnInvalidDynamicallyCheckedCall("vkRegisterBufferColorBufferGOOGLE", "VK_GOOGLE_gfxstream");
7119 }
7120 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
7121 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7122 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
7123 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
7124 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
7125}
Yilong Lia8d45f12021-02-07 02:30:21 -08007126static VkResult entry_vkMapMemoryIntoAddressSpaceGOOGLE(
7127 VkDevice device,
7128 VkDeviceMemory memory,
7129 uint64_t* pAddress)
7130{
7131 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
7132 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7133 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
7134 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
7135 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
7136}
7137static VkResult dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE(
7138 VkDevice device,
7139 VkDeviceMemory memory,
7140 uint64_t* pAddress)
7141{
7142 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007143 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Yilong Lia8d45f12021-02-07 02:30:21 -08007144 {
Yilong Li71c43c52021-02-10 02:50:43 -08007145 sOnInvalidDynamicallyCheckedCall("vkMapMemoryIntoAddressSpaceGOOGLE", "VK_GOOGLE_gfxstream");
Yilong Lia8d45f12021-02-07 02:30:21 -08007146 }
7147 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
7148 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7149 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
7150 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
7151 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
7152}
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07007153static void entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
7154 VkDevice device,
7155 VkDescriptorSet descriptorSet,
7156 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
7157 uint32_t imageInfoCount,
7158 uint32_t bufferInfoCount,
7159 uint32_t bufferViewCount,
7160 const uint32_t* pImageInfoEntryIndices,
7161 const uint32_t* pBufferInfoEntryIndices,
7162 const uint32_t* pBufferViewEntryIndices,
7163 const VkDescriptorImageInfo* pImageInfos,
7164 const VkDescriptorBufferInfo* pBufferInfos,
7165 const VkBufferView* pBufferViews)
7166{
7167 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007168 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007169 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07007170}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007171static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
7172 VkDevice device,
7173 VkDescriptorSet descriptorSet,
7174 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
7175 uint32_t imageInfoCount,
7176 uint32_t bufferInfoCount,
7177 uint32_t bufferViewCount,
7178 const uint32_t* pImageInfoEntryIndices,
7179 const uint32_t* pBufferInfoEntryIndices,
7180 const uint32_t* pBufferViewEntryIndices,
7181 const VkDescriptorImageInfo* pImageInfos,
7182 const VkDescriptorBufferInfo* pBufferInfos,
7183 const VkBufferView* pBufferViews)
7184{
7185 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007186 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007187 {
Yilong Li71c43c52021-02-10 02:50:43 -08007188 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateSizedGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007189 }
7190 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007191 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007192 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007193}
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007194static void entry_vkBeginCommandBufferAsyncGOOGLE(
7195 VkCommandBuffer commandBuffer,
7196 const VkCommandBufferBeginInfo* pBeginInfo)
7197{
7198 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007199 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007200 vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007201}
7202static void entry_vkEndCommandBufferAsyncGOOGLE(
7203 VkCommandBuffer commandBuffer)
7204{
7205 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007206 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007207 vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007208}
7209static void entry_vkResetCommandBufferAsyncGOOGLE(
7210 VkCommandBuffer commandBuffer,
7211 VkCommandBufferResetFlags flags)
7212{
7213 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007214 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007215 vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007216}
Lingfeng Yang39a276e2019-06-17 13:27:22 -07007217static void entry_vkCommandBufferHostSyncGOOGLE(
7218 VkCommandBuffer commandBuffer,
7219 uint32_t needHostSync,
7220 uint32_t sequenceNumber)
7221{
7222 AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007223 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007224 vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber, true /* do lock */);
Lingfeng Yang39a276e2019-06-17 13:27:22 -07007225}
Lingfeng Yang87f11962019-06-27 16:28:53 +00007226static VkResult entry_vkCreateImageWithRequirementsGOOGLE(
7227 VkDevice device,
7228 const VkImageCreateInfo* pCreateInfo,
7229 const VkAllocationCallbacks* pAllocator,
7230 VkImage* pImage,
7231 VkMemoryRequirements* pMemoryRequirements)
7232{
7233 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007234 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang87f11962019-06-27 16:28:53 +00007235 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007236 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
Lingfeng Yang87f11962019-06-27 16:28:53 +00007237 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
7238}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007239static VkResult dynCheck_entry_vkCreateImageWithRequirementsGOOGLE(
7240 VkDevice device,
7241 const VkImageCreateInfo* pCreateInfo,
7242 const VkAllocationCallbacks* pAllocator,
7243 VkImage* pImage,
7244 VkMemoryRequirements* pMemoryRequirements)
7245{
7246 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007247 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007248 {
Yilong Li71c43c52021-02-10 02:50:43 -08007249 sOnInvalidDynamicallyCheckedCall("vkCreateImageWithRequirementsGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007250 }
7251 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007252 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007253 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007254 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007255 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
7256}
Lingfeng Yang87f11962019-06-27 16:28:53 +00007257static VkResult entry_vkCreateBufferWithRequirementsGOOGLE(
7258 VkDevice device,
7259 const VkBufferCreateInfo* pCreateInfo,
7260 const VkAllocationCallbacks* pAllocator,
7261 VkBuffer* pBuffer,
7262 VkMemoryRequirements* pMemoryRequirements)
7263{
7264 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007265 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang87f11962019-06-27 16:28:53 +00007266 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007267 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
Lingfeng Yang87f11962019-06-27 16:28:53 +00007268 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
7269}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007270static VkResult dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE(
7271 VkDevice device,
7272 const VkBufferCreateInfo* pCreateInfo,
7273 const VkAllocationCallbacks* pAllocator,
7274 VkBuffer* pBuffer,
7275 VkMemoryRequirements* pMemoryRequirements)
7276{
7277 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007278 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007279 {
Yilong Li71c43c52021-02-10 02:50:43 -08007280 sOnInvalidDynamicallyCheckedCall("vkCreateBufferWithRequirementsGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007281 }
7282 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007283 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007284 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007285 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007286 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
7287}
Lingfeng Yang4c542412020-02-04 18:18:32 -08007288static VkResult entry_vkGetMemoryHostAddressInfoGOOGLE(
7289 VkDevice device,
7290 VkDeviceMemory memory,
7291 uint64_t* pAddress,
7292 uint64_t* pSize,
7293 uint64_t* pHostmemId)
7294{
7295 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007296 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4c542412020-02-04 18:18:32 -08007297 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007298 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
Lingfeng Yang4c542412020-02-04 18:18:32 -08007299 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
7300}
7301static VkResult dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE(
7302 VkDevice device,
7303 VkDeviceMemory memory,
7304 uint64_t* pAddress,
7305 uint64_t* pSize,
7306 uint64_t* pHostmemId)
7307{
7308 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007309 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang4c542412020-02-04 18:18:32 -08007310 {
Yilong Li71c43c52021-02-10 02:50:43 -08007311 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostAddressInfoGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang4c542412020-02-04 18:18:32 -08007312 }
7313 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007314 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4c542412020-02-04 18:18:32 -08007315 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007316 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
Lingfeng Yang4c542412020-02-04 18:18:32 -08007317 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
7318}
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007319static VkResult entry_vkFreeMemorySyncGOOGLE(
7320 VkDevice device,
7321 VkDeviceMemory memory,
7322 const VkAllocationCallbacks* pAllocator)
7323{
7324 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007325 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007326 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007327 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007328 return vkFreeMemorySyncGOOGLE_VkResult_return;
7329}
7330static VkResult dynCheck_entry_vkFreeMemorySyncGOOGLE(
7331 VkDevice device,
7332 VkDeviceMemory memory,
7333 const VkAllocationCallbacks* pAllocator)
7334{
7335 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007336 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007337 {
Yilong Li71c43c52021-02-10 02:50:43 -08007338 sOnInvalidDynamicallyCheckedCall("vkFreeMemorySyncGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007339 }
7340 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007341 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007342 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007343 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007344 return vkFreeMemorySyncGOOGLE_VkResult_return;
7345}
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007346static void entry_vkQueueHostSyncGOOGLE(
7347 VkQueue queue,
7348 uint32_t needHostSync,
7349 uint32_t sequenceNumber)
7350{
7351 AEMU_SCOPED_TRACE("vkQueueHostSyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007352 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007353 vkEnc->vkQueueHostSyncGOOGLE(queue, needHostSync, sequenceNumber, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007354}
7355static void entry_vkQueueSubmitAsyncGOOGLE(
7356 VkQueue queue,
7357 uint32_t submitCount,
7358 const VkSubmitInfo* pSubmits,
7359 VkFence fence)
7360{
7361 AEMU_SCOPED_TRACE("vkQueueSubmitAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007362 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007363 vkEnc->vkQueueSubmitAsyncGOOGLE(queue, submitCount, pSubmits, fence, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007364}
7365static void entry_vkQueueWaitIdleAsyncGOOGLE(
7366 VkQueue queue)
7367{
7368 AEMU_SCOPED_TRACE("vkQueueWaitIdleAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007369 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007370 vkEnc->vkQueueWaitIdleAsyncGOOGLE(queue, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007371}
7372static void entry_vkQueueBindSparseAsyncGOOGLE(
7373 VkQueue queue,
7374 uint32_t bindInfoCount,
7375 const VkBindSparseInfo* pBindInfo,
7376 VkFence fence)
7377{
7378 AEMU_SCOPED_TRACE("vkQueueBindSparseAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007379 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007380 vkEnc->vkQueueBindSparseAsyncGOOGLE(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007381}
Yilong Lia48b0102020-09-15 15:08:28 -07007382static void entry_vkGetLinearImageLayoutGOOGLE(
7383 VkDevice device,
7384 VkFormat format,
7385 VkDeviceSize* pOffset,
7386 VkDeviceSize* pRowPitchAlignment)
7387{
7388 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007389 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007390 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
Yilong Lia48b0102020-09-15 15:08:28 -07007391}
7392static void dynCheck_entry_vkGetLinearImageLayoutGOOGLE(
7393 VkDevice device,
7394 VkFormat format,
7395 VkDeviceSize* pOffset,
7396 VkDeviceSize* pRowPitchAlignment)
7397{
7398 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007399 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Yilong Lia48b0102020-09-15 15:08:28 -07007400 {
Yilong Li71c43c52021-02-10 02:50:43 -08007401 sOnInvalidDynamicallyCheckedCall("vkGetLinearImageLayoutGOOGLE", "VK_GOOGLE_gfxstream");
Yilong Lia48b0102020-09-15 15:08:28 -07007402 }
7403 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007404 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007405 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
Yilong Lia48b0102020-09-15 15:08:28 -07007406}
Lingfeng Yangded34672021-01-22 23:17:47 -08007407static void entry_vkQueueFlushCommandsGOOGLE(
7408 VkQueue queue,
7409 VkCommandBuffer commandBuffer,
7410 VkDeviceSize dataSize,
7411 const void* pData)
7412{
7413 AEMU_SCOPED_TRACE("vkQueueFlushCommandsGOOGLE");
7414 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
7415 vkEnc->vkQueueFlushCommandsGOOGLE(queue, commandBuffer, dataSize, pData, true /* do lock */);
7416}
Lingfeng Yang55676e02021-02-08 08:39:45 -08007417static void entry_vkQueueCommitDescriptorSetUpdatesGOOGLE(
7418 VkQueue queue,
7419 uint32_t descriptorPoolCount,
7420 const VkDescriptorPool* pDescriptorPools,
7421 uint32_t descriptorSetCount,
7422 const VkDescriptorSetLayout* pSetLayouts,
7423 const uint64_t* pDescriptorSetPoolIds,
7424 const uint32_t* pDescriptorSetWhichPool,
7425 const uint32_t* pDescriptorSetPendingAllocation,
7426 const uint32_t* pDescriptorWriteStartingIndices,
7427 uint32_t pendingDescriptorWriteCount,
7428 const VkWriteDescriptorSet* pPendingDescriptorWrites)
7429{
7430 AEMU_SCOPED_TRACE("vkQueueCommitDescriptorSetUpdatesGOOGLE");
7431 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
7432 vkEnc->vkQueueCommitDescriptorSetUpdatesGOOGLE(queue, descriptorPoolCount, pDescriptorPools, descriptorSetCount, pSetLayouts, pDescriptorSetPoolIds, pDescriptorSetWhichPool, pDescriptorSetPendingAllocation, pDescriptorWriteStartingIndices, pendingDescriptorWriteCount, pPendingDescriptorWrites, true /* do lock */);
7433}
7434static void entry_vkCollectDescriptorPoolIdsGOOGLE(
7435 VkDevice device,
7436 VkDescriptorPool descriptorPool,
7437 uint32_t* pPoolIdCount,
7438 uint64_t* pPoolIds)
7439{
7440 AEMU_SCOPED_TRACE("vkCollectDescriptorPoolIdsGOOGLE");
7441 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7442 vkEnc->vkCollectDescriptorPoolIdsGOOGLE(device, descriptorPool, pPoolIdCount, pPoolIds, true /* do lock */);
7443}
7444static void dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE(
7445 VkDevice device,
7446 VkDescriptorPool descriptorPool,
7447 uint32_t* pPoolIdCount,
7448 uint64_t* pPoolIds)
7449{
7450 auto resources = ResourceTracker::get();
7451 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
7452 {
7453 sOnInvalidDynamicallyCheckedCall("vkCollectDescriptorPoolIdsGOOGLE", "VK_GOOGLE_gfxstream");
7454 }
7455 AEMU_SCOPED_TRACE("vkCollectDescriptorPoolIdsGOOGLE");
7456 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7457 vkEnc->vkCollectDescriptorPoolIdsGOOGLE(device, descriptorPool, pPoolIdCount, pPoolIds, true /* do lock */);
7458}
Lingfeng Yangded34672021-01-22 23:17:47 -08007459#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007460#ifdef VK_KHR_acceleration_structure
7461static VkResult entry_vkCreateAccelerationStructureKHR(
7462 VkDevice device,
7463 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
7464 const VkAllocationCallbacks* pAllocator,
7465 VkAccelerationStructureKHR* pAccelerationStructure)
7466{
7467 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
7468 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7469 VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
7470 vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
7471 return vkCreateAccelerationStructureKHR_VkResult_return;
7472}
7473static VkResult dynCheck_entry_vkCreateAccelerationStructureKHR(
7474 VkDevice device,
7475 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
7476 const VkAllocationCallbacks* pAllocator,
7477 VkAccelerationStructureKHR* pAccelerationStructure)
7478{
7479 auto resources = ResourceTracker::get();
7480 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7481 {
7482 sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7483 }
7484 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
7485 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7486 VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
7487 vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
7488 return vkCreateAccelerationStructureKHR_VkResult_return;
7489}
7490static void entry_vkDestroyAccelerationStructureKHR(
7491 VkDevice device,
7492 VkAccelerationStructureKHR accelerationStructure,
7493 const VkAllocationCallbacks* pAllocator)
7494{
7495 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
7496 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7497 vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
7498}
7499static void dynCheck_entry_vkDestroyAccelerationStructureKHR(
7500 VkDevice device,
7501 VkAccelerationStructureKHR accelerationStructure,
7502 const VkAllocationCallbacks* pAllocator)
7503{
7504 auto resources = ResourceTracker::get();
7505 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7506 {
7507 sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7508 }
7509 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
7510 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7511 vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
7512}
7513static void entry_vkCmdBuildAccelerationStructuresKHR(
7514 VkCommandBuffer commandBuffer,
7515 uint32_t infoCount,
7516 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7517 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
7518{
7519 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresKHR");
7520 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7521 vkEnc->vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
7522}
7523static void entry_vkCmdBuildAccelerationStructuresIndirectKHR(
7524 VkCommandBuffer commandBuffer,
7525 uint32_t infoCount,
7526 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7527 const VkDeviceAddress* pIndirectDeviceAddresses,
7528 const uint32_t* pIndirectStrides,
7529 const uint32_t* const* ppMaxPrimitiveCounts)
7530{
7531 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresIndirectKHR");
7532 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7533 vkEnc->vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, true /* do lock */);
7534}
7535static VkResult entry_vkBuildAccelerationStructuresKHR(
7536 VkDevice device,
7537 VkDeferredOperationKHR deferredOperation,
7538 uint32_t infoCount,
7539 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7540 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
7541{
7542 AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
7543 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7544 VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
7545 vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
7546 return vkBuildAccelerationStructuresKHR_VkResult_return;
7547}
7548static VkResult dynCheck_entry_vkBuildAccelerationStructuresKHR(
7549 VkDevice device,
7550 VkDeferredOperationKHR deferredOperation,
7551 uint32_t infoCount,
7552 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7553 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
7554{
7555 auto resources = ResourceTracker::get();
7556 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7557 {
7558 sOnInvalidDynamicallyCheckedCall("vkBuildAccelerationStructuresKHR", "VK_KHR_acceleration_structure");
7559 }
7560 AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
7561 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7562 VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
7563 vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
7564 return vkBuildAccelerationStructuresKHR_VkResult_return;
7565}
7566static VkResult entry_vkCopyAccelerationStructureKHR(
7567 VkDevice device,
7568 VkDeferredOperationKHR deferredOperation,
7569 const VkCopyAccelerationStructureInfoKHR* pInfo)
7570{
7571 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
7572 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7573 VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
7574 vkCopyAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7575 return vkCopyAccelerationStructureKHR_VkResult_return;
7576}
7577static VkResult dynCheck_entry_vkCopyAccelerationStructureKHR(
7578 VkDevice device,
7579 VkDeferredOperationKHR deferredOperation,
7580 const VkCopyAccelerationStructureInfoKHR* pInfo)
7581{
7582 auto resources = ResourceTracker::get();
7583 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7584 {
7585 sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7586 }
7587 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
7588 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7589 VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
7590 vkCopyAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7591 return vkCopyAccelerationStructureKHR_VkResult_return;
7592}
7593static VkResult entry_vkCopyAccelerationStructureToMemoryKHR(
7594 VkDevice device,
7595 VkDeferredOperationKHR deferredOperation,
7596 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
7597{
7598 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
7599 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7600 VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
7601 vkCopyAccelerationStructureToMemoryKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, true /* do lock */);
7602 return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
7603}
7604static VkResult dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR(
7605 VkDevice device,
7606 VkDeferredOperationKHR deferredOperation,
7607 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
7608{
7609 auto resources = ResourceTracker::get();
7610 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7611 {
7612 sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureToMemoryKHR", "VK_KHR_acceleration_structure");
7613 }
7614 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
7615 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7616 VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
7617 vkCopyAccelerationStructureToMemoryKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, true /* do lock */);
7618 return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
7619}
7620static VkResult entry_vkCopyMemoryToAccelerationStructureKHR(
7621 VkDevice device,
7622 VkDeferredOperationKHR deferredOperation,
7623 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
7624{
7625 AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
7626 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7627 VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
7628 vkCopyMemoryToAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7629 return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
7630}
7631static VkResult dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR(
7632 VkDevice device,
7633 VkDeferredOperationKHR deferredOperation,
7634 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
7635{
7636 auto resources = ResourceTracker::get();
7637 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7638 {
7639 sOnInvalidDynamicallyCheckedCall("vkCopyMemoryToAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7640 }
7641 AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
7642 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7643 VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
7644 vkCopyMemoryToAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7645 return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
7646}
7647static VkResult entry_vkWriteAccelerationStructuresPropertiesKHR(
7648 VkDevice device,
7649 uint32_t accelerationStructureCount,
7650 const VkAccelerationStructureKHR* pAccelerationStructures,
7651 VkQueryType queryType,
7652 size_t dataSize,
7653 void* pData,
7654 size_t stride)
7655{
7656 AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
7657 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7658 VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
7659 vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
7660 return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
7661}
7662static VkResult dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR(
7663 VkDevice device,
7664 uint32_t accelerationStructureCount,
7665 const VkAccelerationStructureKHR* pAccelerationStructures,
7666 VkQueryType queryType,
7667 size_t dataSize,
7668 void* pData,
7669 size_t stride)
7670{
7671 auto resources = ResourceTracker::get();
7672 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7673 {
7674 sOnInvalidDynamicallyCheckedCall("vkWriteAccelerationStructuresPropertiesKHR", "VK_KHR_acceleration_structure");
7675 }
7676 AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
7677 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7678 VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
7679 vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
7680 return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
7681}
7682static void entry_vkCmdCopyAccelerationStructureKHR(
7683 VkCommandBuffer commandBuffer,
7684 const VkCopyAccelerationStructureInfoKHR* pInfo)
7685{
7686 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureKHR");
7687 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7688 vkEnc->vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
7689}
7690static void entry_vkCmdCopyAccelerationStructureToMemoryKHR(
7691 VkCommandBuffer commandBuffer,
7692 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
7693{
7694 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureToMemoryKHR");
7695 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7696 vkEnc->vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, true /* do lock */);
7697}
7698static void entry_vkCmdCopyMemoryToAccelerationStructureKHR(
7699 VkCommandBuffer commandBuffer,
7700 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
7701{
7702 AEMU_SCOPED_TRACE("vkCmdCopyMemoryToAccelerationStructureKHR");
7703 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7704 vkEnc->vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
7705}
7706static VkDeviceAddress entry_vkGetAccelerationStructureDeviceAddressKHR(
7707 VkDevice device,
7708 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
7709{
7710 AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
7711 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7712 VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
7713 vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
7714 return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
7715}
7716static VkDeviceAddress dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR(
7717 VkDevice device,
7718 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
7719{
7720 auto resources = ResourceTracker::get();
7721 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7722 {
7723 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureDeviceAddressKHR", "VK_KHR_acceleration_structure");
7724 }
7725 AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
7726 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7727 VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
7728 vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
7729 return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
7730}
7731static void entry_vkCmdWriteAccelerationStructuresPropertiesKHR(
7732 VkCommandBuffer commandBuffer,
7733 uint32_t accelerationStructureCount,
7734 const VkAccelerationStructureKHR* pAccelerationStructures,
7735 VkQueryType queryType,
7736 VkQueryPool queryPool,
7737 uint32_t firstQuery)
7738{
7739 AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesKHR");
7740 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7741 vkEnc->vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
7742}
7743static void entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
7744 VkDevice device,
7745 const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
7746 VkAccelerationStructureCompatibilityKHR* pCompatibility)
7747{
7748 AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
7749 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7750 vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
7751}
7752static void dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
7753 VkDevice device,
7754 const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
7755 VkAccelerationStructureCompatibilityKHR* pCompatibility)
7756{
7757 auto resources = ResourceTracker::get();
7758 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7759 {
7760 sOnInvalidDynamicallyCheckedCall("vkGetDeviceAccelerationStructureCompatibilityKHR", "VK_KHR_acceleration_structure");
7761 }
7762 AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
7763 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7764 vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
7765}
7766static void entry_vkGetAccelerationStructureBuildSizesKHR(
7767 VkDevice device,
7768 VkAccelerationStructureBuildTypeKHR buildType,
7769 const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
7770 const uint32_t* pMaxPrimitiveCounts,
7771 VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
7772{
7773 AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
7774 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7775 vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
7776}
7777static void dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR(
7778 VkDevice device,
7779 VkAccelerationStructureBuildTypeKHR buildType,
7780 const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
7781 const uint32_t* pMaxPrimitiveCounts,
7782 VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
7783{
7784 auto resources = ResourceTracker::get();
7785 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7786 {
7787 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureBuildSizesKHR", "VK_KHR_acceleration_structure");
7788 }
7789 AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
7790 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7791 vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
7792}
7793#endif
7794#ifdef VK_KHR_ray_tracing_pipeline
7795static void entry_vkCmdTraceRaysKHR(
7796 VkCommandBuffer commandBuffer,
7797 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
7798 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
7799 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
7800 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
7801 uint32_t width,
7802 uint32_t height,
7803 uint32_t depth)
7804{
7805 AEMU_SCOPED_TRACE("vkCmdTraceRaysKHR");
7806 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7807 vkEnc->vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, true /* do lock */);
7808}
7809static VkResult entry_vkCreateRayTracingPipelinesKHR(
7810 VkDevice device,
7811 VkDeferredOperationKHR deferredOperation,
7812 VkPipelineCache pipelineCache,
7813 uint32_t createInfoCount,
7814 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
7815 const VkAllocationCallbacks* pAllocator,
7816 VkPipeline* pPipelines)
7817{
7818 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
7819 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7820 VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
7821 vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
7822 return vkCreateRayTracingPipelinesKHR_VkResult_return;
7823}
7824static VkResult dynCheck_entry_vkCreateRayTracingPipelinesKHR(
7825 VkDevice device,
7826 VkDeferredOperationKHR deferredOperation,
7827 VkPipelineCache pipelineCache,
7828 uint32_t createInfoCount,
7829 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
7830 const VkAllocationCallbacks* pAllocator,
7831 VkPipeline* pPipelines)
7832{
7833 auto resources = ResourceTracker::get();
7834 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
7835 {
7836 sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesKHR", "VK_KHR_ray_tracing_pipeline");
7837 }
7838 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
7839 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7840 VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
7841 vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
7842 return vkCreateRayTracingPipelinesKHR_VkResult_return;
7843}
7844static VkResult entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
7845 VkDevice device,
7846 VkPipeline pipeline,
7847 uint32_t firstGroup,
7848 uint32_t groupCount,
7849 size_t dataSize,
7850 void* pData)
7851{
7852 AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
7853 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7854 VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
7855 vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
7856 return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
7857}
7858static VkResult dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
7859 VkDevice device,
7860 VkPipeline pipeline,
7861 uint32_t firstGroup,
7862 uint32_t groupCount,
7863 size_t dataSize,
7864 void* pData)
7865{
7866 auto resources = ResourceTracker::get();
7867 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
7868 {
7869 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR", "VK_KHR_ray_tracing_pipeline");
7870 }
7871 AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
7872 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7873 VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
7874 vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
7875 return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
7876}
7877static void entry_vkCmdTraceRaysIndirectKHR(
7878 VkCommandBuffer commandBuffer,
7879 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
7880 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
7881 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
7882 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
7883 VkDeviceAddress indirectDeviceAddress)
7884{
7885 AEMU_SCOPED_TRACE("vkCmdTraceRaysIndirectKHR");
7886 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7887 vkEnc->vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, true /* do lock */);
7888}
7889static VkDeviceSize entry_vkGetRayTracingShaderGroupStackSizeKHR(
7890 VkDevice device,
7891 VkPipeline pipeline,
7892 uint32_t group,
7893 VkShaderGroupShaderKHR groupShader)
7894{
7895 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
7896 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7897 VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
7898 vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
7899 return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
7900}
7901static VkDeviceSize dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR(
7902 VkDevice device,
7903 VkPipeline pipeline,
7904 uint32_t group,
7905 VkShaderGroupShaderKHR groupShader)
7906{
7907 auto resources = ResourceTracker::get();
7908 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
7909 {
7910 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupStackSizeKHR", "VK_KHR_ray_tracing_pipeline");
7911 }
7912 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
7913 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7914 VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
7915 vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
7916 return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
7917}
7918static void entry_vkCmdSetRayTracingPipelineStackSizeKHR(
7919 VkCommandBuffer commandBuffer,
7920 uint32_t pipelineStackSize)
7921{
7922 AEMU_SCOPED_TRACE("vkCmdSetRayTracingPipelineStackSizeKHR");
7923 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7924 vkEnc->vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, true /* do lock */);
7925}
7926#endif
7927#ifdef VK_KHR_ray_query
7928#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007929void* goldfish_vulkan_get_proc_address(const char* name){
7930#ifdef VK_VERSION_1_0
7931 if (!strcmp(name, "vkCreateInstance"))
7932 {
7933 return (void*)entry_vkCreateInstance;
7934 }
7935 if (!strcmp(name, "vkDestroyInstance"))
7936 {
7937 return (void*)entry_vkDestroyInstance;
7938 }
7939 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
7940 {
7941 return (void*)entry_vkEnumeratePhysicalDevices;
7942 }
7943 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
7944 {
7945 return (void*)entry_vkGetPhysicalDeviceFeatures;
7946 }
7947 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
7948 {
7949 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
7950 }
7951 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
7952 {
7953 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
7954 }
7955 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
7956 {
7957 return (void*)entry_vkGetPhysicalDeviceProperties;
7958 }
7959 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
7960 {
7961 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
7962 }
7963 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
7964 {
7965 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
7966 }
7967 if (!strcmp(name, "vkGetInstanceProcAddr"))
7968 {
7969 return (void*)entry_vkGetInstanceProcAddr;
7970 }
7971 if (!strcmp(name, "vkGetDeviceProcAddr"))
7972 {
7973 return (void*)entry_vkGetDeviceProcAddr;
7974 }
7975 if (!strcmp(name, "vkCreateDevice"))
7976 {
7977 return (void*)entry_vkCreateDevice;
7978 }
7979 if (!strcmp(name, "vkDestroyDevice"))
7980 {
7981 return (void*)entry_vkDestroyDevice;
7982 }
7983 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
7984 {
7985 return (void*)entry_vkEnumerateInstanceExtensionProperties;
7986 }
7987 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
7988 {
7989 return (void*)entry_vkEnumerateDeviceExtensionProperties;
7990 }
7991 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
7992 {
7993 return (void*)entry_vkEnumerateInstanceLayerProperties;
7994 }
7995 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
7996 {
7997 return (void*)entry_vkEnumerateDeviceLayerProperties;
7998 }
7999 if (!strcmp(name, "vkGetDeviceQueue"))
8000 {
8001 return (void*)entry_vkGetDeviceQueue;
8002 }
8003 if (!strcmp(name, "vkQueueSubmit"))
8004 {
8005 return (void*)entry_vkQueueSubmit;
8006 }
8007 if (!strcmp(name, "vkQueueWaitIdle"))
8008 {
8009 return (void*)entry_vkQueueWaitIdle;
8010 }
8011 if (!strcmp(name, "vkDeviceWaitIdle"))
8012 {
8013 return (void*)entry_vkDeviceWaitIdle;
8014 }
8015 if (!strcmp(name, "vkAllocateMemory"))
8016 {
8017 return (void*)entry_vkAllocateMemory;
8018 }
8019 if (!strcmp(name, "vkFreeMemory"))
8020 {
8021 return (void*)entry_vkFreeMemory;
8022 }
8023 if (!strcmp(name, "vkMapMemory"))
8024 {
8025 return (void*)entry_vkMapMemory;
8026 }
8027 if (!strcmp(name, "vkUnmapMemory"))
8028 {
8029 return (void*)entry_vkUnmapMemory;
8030 }
8031 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
8032 {
8033 return (void*)entry_vkFlushMappedMemoryRanges;
8034 }
8035 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
8036 {
8037 return (void*)entry_vkInvalidateMappedMemoryRanges;
8038 }
8039 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
8040 {
8041 return (void*)entry_vkGetDeviceMemoryCommitment;
8042 }
8043 if (!strcmp(name, "vkBindBufferMemory"))
8044 {
8045 return (void*)entry_vkBindBufferMemory;
8046 }
8047 if (!strcmp(name, "vkBindImageMemory"))
8048 {
8049 return (void*)entry_vkBindImageMemory;
8050 }
8051 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
8052 {
8053 return (void*)entry_vkGetBufferMemoryRequirements;
8054 }
8055 if (!strcmp(name, "vkGetImageMemoryRequirements"))
8056 {
8057 return (void*)entry_vkGetImageMemoryRequirements;
8058 }
8059 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
8060 {
8061 return (void*)entry_vkGetImageSparseMemoryRequirements;
8062 }
8063 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
8064 {
8065 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
8066 }
8067 if (!strcmp(name, "vkQueueBindSparse"))
8068 {
8069 return (void*)entry_vkQueueBindSparse;
8070 }
8071 if (!strcmp(name, "vkCreateFence"))
8072 {
8073 return (void*)entry_vkCreateFence;
8074 }
8075 if (!strcmp(name, "vkDestroyFence"))
8076 {
8077 return (void*)entry_vkDestroyFence;
8078 }
8079 if (!strcmp(name, "vkResetFences"))
8080 {
8081 return (void*)entry_vkResetFences;
8082 }
8083 if (!strcmp(name, "vkGetFenceStatus"))
8084 {
8085 return (void*)entry_vkGetFenceStatus;
8086 }
8087 if (!strcmp(name, "vkWaitForFences"))
8088 {
8089 return (void*)entry_vkWaitForFences;
8090 }
8091 if (!strcmp(name, "vkCreateSemaphore"))
8092 {
8093 return (void*)entry_vkCreateSemaphore;
8094 }
8095 if (!strcmp(name, "vkDestroySemaphore"))
8096 {
8097 return (void*)entry_vkDestroySemaphore;
8098 }
8099 if (!strcmp(name, "vkCreateEvent"))
8100 {
8101 return (void*)entry_vkCreateEvent;
8102 }
8103 if (!strcmp(name, "vkDestroyEvent"))
8104 {
8105 return (void*)entry_vkDestroyEvent;
8106 }
8107 if (!strcmp(name, "vkGetEventStatus"))
8108 {
8109 return (void*)entry_vkGetEventStatus;
8110 }
8111 if (!strcmp(name, "vkSetEvent"))
8112 {
8113 return (void*)entry_vkSetEvent;
8114 }
8115 if (!strcmp(name, "vkResetEvent"))
8116 {
8117 return (void*)entry_vkResetEvent;
8118 }
8119 if (!strcmp(name, "vkCreateQueryPool"))
8120 {
8121 return (void*)entry_vkCreateQueryPool;
8122 }
8123 if (!strcmp(name, "vkDestroyQueryPool"))
8124 {
8125 return (void*)entry_vkDestroyQueryPool;
8126 }
8127 if (!strcmp(name, "vkGetQueryPoolResults"))
8128 {
8129 return (void*)entry_vkGetQueryPoolResults;
8130 }
8131 if (!strcmp(name, "vkCreateBuffer"))
8132 {
8133 return (void*)entry_vkCreateBuffer;
8134 }
8135 if (!strcmp(name, "vkDestroyBuffer"))
8136 {
8137 return (void*)entry_vkDestroyBuffer;
8138 }
8139 if (!strcmp(name, "vkCreateBufferView"))
8140 {
8141 return (void*)entry_vkCreateBufferView;
8142 }
8143 if (!strcmp(name, "vkDestroyBufferView"))
8144 {
8145 return (void*)entry_vkDestroyBufferView;
8146 }
8147 if (!strcmp(name, "vkCreateImage"))
8148 {
8149 return (void*)entry_vkCreateImage;
8150 }
8151 if (!strcmp(name, "vkDestroyImage"))
8152 {
8153 return (void*)entry_vkDestroyImage;
8154 }
8155 if (!strcmp(name, "vkGetImageSubresourceLayout"))
8156 {
8157 return (void*)entry_vkGetImageSubresourceLayout;
8158 }
8159 if (!strcmp(name, "vkCreateImageView"))
8160 {
8161 return (void*)entry_vkCreateImageView;
8162 }
8163 if (!strcmp(name, "vkDestroyImageView"))
8164 {
8165 return (void*)entry_vkDestroyImageView;
8166 }
8167 if (!strcmp(name, "vkCreateShaderModule"))
8168 {
8169 return (void*)entry_vkCreateShaderModule;
8170 }
8171 if (!strcmp(name, "vkDestroyShaderModule"))
8172 {
8173 return (void*)entry_vkDestroyShaderModule;
8174 }
8175 if (!strcmp(name, "vkCreatePipelineCache"))
8176 {
8177 return (void*)entry_vkCreatePipelineCache;
8178 }
8179 if (!strcmp(name, "vkDestroyPipelineCache"))
8180 {
8181 return (void*)entry_vkDestroyPipelineCache;
8182 }
8183 if (!strcmp(name, "vkGetPipelineCacheData"))
8184 {
8185 return (void*)entry_vkGetPipelineCacheData;
8186 }
8187 if (!strcmp(name, "vkMergePipelineCaches"))
8188 {
8189 return (void*)entry_vkMergePipelineCaches;
8190 }
8191 if (!strcmp(name, "vkCreateGraphicsPipelines"))
8192 {
8193 return (void*)entry_vkCreateGraphicsPipelines;
8194 }
8195 if (!strcmp(name, "vkCreateComputePipelines"))
8196 {
8197 return (void*)entry_vkCreateComputePipelines;
8198 }
8199 if (!strcmp(name, "vkDestroyPipeline"))
8200 {
8201 return (void*)entry_vkDestroyPipeline;
8202 }
8203 if (!strcmp(name, "vkCreatePipelineLayout"))
8204 {
8205 return (void*)entry_vkCreatePipelineLayout;
8206 }
8207 if (!strcmp(name, "vkDestroyPipelineLayout"))
8208 {
8209 return (void*)entry_vkDestroyPipelineLayout;
8210 }
8211 if (!strcmp(name, "vkCreateSampler"))
8212 {
8213 return (void*)entry_vkCreateSampler;
8214 }
8215 if (!strcmp(name, "vkDestroySampler"))
8216 {
8217 return (void*)entry_vkDestroySampler;
8218 }
8219 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
8220 {
8221 return (void*)entry_vkCreateDescriptorSetLayout;
8222 }
8223 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
8224 {
8225 return (void*)entry_vkDestroyDescriptorSetLayout;
8226 }
8227 if (!strcmp(name, "vkCreateDescriptorPool"))
8228 {
8229 return (void*)entry_vkCreateDescriptorPool;
8230 }
8231 if (!strcmp(name, "vkDestroyDescriptorPool"))
8232 {
8233 return (void*)entry_vkDestroyDescriptorPool;
8234 }
8235 if (!strcmp(name, "vkResetDescriptorPool"))
8236 {
8237 return (void*)entry_vkResetDescriptorPool;
8238 }
8239 if (!strcmp(name, "vkAllocateDescriptorSets"))
8240 {
8241 return (void*)entry_vkAllocateDescriptorSets;
8242 }
8243 if (!strcmp(name, "vkFreeDescriptorSets"))
8244 {
8245 return (void*)entry_vkFreeDescriptorSets;
8246 }
8247 if (!strcmp(name, "vkUpdateDescriptorSets"))
8248 {
8249 return (void*)entry_vkUpdateDescriptorSets;
8250 }
8251 if (!strcmp(name, "vkCreateFramebuffer"))
8252 {
8253 return (void*)entry_vkCreateFramebuffer;
8254 }
8255 if (!strcmp(name, "vkDestroyFramebuffer"))
8256 {
8257 return (void*)entry_vkDestroyFramebuffer;
8258 }
8259 if (!strcmp(name, "vkCreateRenderPass"))
8260 {
8261 return (void*)entry_vkCreateRenderPass;
8262 }
8263 if (!strcmp(name, "vkDestroyRenderPass"))
8264 {
8265 return (void*)entry_vkDestroyRenderPass;
8266 }
8267 if (!strcmp(name, "vkGetRenderAreaGranularity"))
8268 {
8269 return (void*)entry_vkGetRenderAreaGranularity;
8270 }
8271 if (!strcmp(name, "vkCreateCommandPool"))
8272 {
8273 return (void*)entry_vkCreateCommandPool;
8274 }
8275 if (!strcmp(name, "vkDestroyCommandPool"))
8276 {
8277 return (void*)entry_vkDestroyCommandPool;
8278 }
8279 if (!strcmp(name, "vkResetCommandPool"))
8280 {
8281 return (void*)entry_vkResetCommandPool;
8282 }
8283 if (!strcmp(name, "vkAllocateCommandBuffers"))
8284 {
8285 return (void*)entry_vkAllocateCommandBuffers;
8286 }
8287 if (!strcmp(name, "vkFreeCommandBuffers"))
8288 {
8289 return (void*)entry_vkFreeCommandBuffers;
8290 }
8291 if (!strcmp(name, "vkBeginCommandBuffer"))
8292 {
8293 return (void*)entry_vkBeginCommandBuffer;
8294 }
8295 if (!strcmp(name, "vkEndCommandBuffer"))
8296 {
8297 return (void*)entry_vkEndCommandBuffer;
8298 }
8299 if (!strcmp(name, "vkResetCommandBuffer"))
8300 {
8301 return (void*)entry_vkResetCommandBuffer;
8302 }
8303 if (!strcmp(name, "vkCmdBindPipeline"))
8304 {
8305 return (void*)entry_vkCmdBindPipeline;
8306 }
8307 if (!strcmp(name, "vkCmdSetViewport"))
8308 {
8309 return (void*)entry_vkCmdSetViewport;
8310 }
8311 if (!strcmp(name, "vkCmdSetScissor"))
8312 {
8313 return (void*)entry_vkCmdSetScissor;
8314 }
8315 if (!strcmp(name, "vkCmdSetLineWidth"))
8316 {
8317 return (void*)entry_vkCmdSetLineWidth;
8318 }
8319 if (!strcmp(name, "vkCmdSetDepthBias"))
8320 {
8321 return (void*)entry_vkCmdSetDepthBias;
8322 }
8323 if (!strcmp(name, "vkCmdSetBlendConstants"))
8324 {
8325 return (void*)entry_vkCmdSetBlendConstants;
8326 }
8327 if (!strcmp(name, "vkCmdSetDepthBounds"))
8328 {
8329 return (void*)entry_vkCmdSetDepthBounds;
8330 }
8331 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
8332 {
8333 return (void*)entry_vkCmdSetStencilCompareMask;
8334 }
8335 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
8336 {
8337 return (void*)entry_vkCmdSetStencilWriteMask;
8338 }
8339 if (!strcmp(name, "vkCmdSetStencilReference"))
8340 {
8341 return (void*)entry_vkCmdSetStencilReference;
8342 }
8343 if (!strcmp(name, "vkCmdBindDescriptorSets"))
8344 {
8345 return (void*)entry_vkCmdBindDescriptorSets;
8346 }
8347 if (!strcmp(name, "vkCmdBindIndexBuffer"))
8348 {
8349 return (void*)entry_vkCmdBindIndexBuffer;
8350 }
8351 if (!strcmp(name, "vkCmdBindVertexBuffers"))
8352 {
8353 return (void*)entry_vkCmdBindVertexBuffers;
8354 }
8355 if (!strcmp(name, "vkCmdDraw"))
8356 {
8357 return (void*)entry_vkCmdDraw;
8358 }
8359 if (!strcmp(name, "vkCmdDrawIndexed"))
8360 {
8361 return (void*)entry_vkCmdDrawIndexed;
8362 }
8363 if (!strcmp(name, "vkCmdDrawIndirect"))
8364 {
8365 return (void*)entry_vkCmdDrawIndirect;
8366 }
8367 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
8368 {
8369 return (void*)entry_vkCmdDrawIndexedIndirect;
8370 }
8371 if (!strcmp(name, "vkCmdDispatch"))
8372 {
8373 return (void*)entry_vkCmdDispatch;
8374 }
8375 if (!strcmp(name, "vkCmdDispatchIndirect"))
8376 {
8377 return (void*)entry_vkCmdDispatchIndirect;
8378 }
8379 if (!strcmp(name, "vkCmdCopyBuffer"))
8380 {
8381 return (void*)entry_vkCmdCopyBuffer;
8382 }
8383 if (!strcmp(name, "vkCmdCopyImage"))
8384 {
8385 return (void*)entry_vkCmdCopyImage;
8386 }
8387 if (!strcmp(name, "vkCmdBlitImage"))
8388 {
8389 return (void*)entry_vkCmdBlitImage;
8390 }
8391 if (!strcmp(name, "vkCmdCopyBufferToImage"))
8392 {
8393 return (void*)entry_vkCmdCopyBufferToImage;
8394 }
8395 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
8396 {
8397 return (void*)entry_vkCmdCopyImageToBuffer;
8398 }
8399 if (!strcmp(name, "vkCmdUpdateBuffer"))
8400 {
8401 return (void*)entry_vkCmdUpdateBuffer;
8402 }
8403 if (!strcmp(name, "vkCmdFillBuffer"))
8404 {
8405 return (void*)entry_vkCmdFillBuffer;
8406 }
8407 if (!strcmp(name, "vkCmdClearColorImage"))
8408 {
8409 return (void*)entry_vkCmdClearColorImage;
8410 }
8411 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
8412 {
8413 return (void*)entry_vkCmdClearDepthStencilImage;
8414 }
8415 if (!strcmp(name, "vkCmdClearAttachments"))
8416 {
8417 return (void*)entry_vkCmdClearAttachments;
8418 }
8419 if (!strcmp(name, "vkCmdResolveImage"))
8420 {
8421 return (void*)entry_vkCmdResolveImage;
8422 }
8423 if (!strcmp(name, "vkCmdSetEvent"))
8424 {
8425 return (void*)entry_vkCmdSetEvent;
8426 }
8427 if (!strcmp(name, "vkCmdResetEvent"))
8428 {
8429 return (void*)entry_vkCmdResetEvent;
8430 }
8431 if (!strcmp(name, "vkCmdWaitEvents"))
8432 {
8433 return (void*)entry_vkCmdWaitEvents;
8434 }
8435 if (!strcmp(name, "vkCmdPipelineBarrier"))
8436 {
8437 return (void*)entry_vkCmdPipelineBarrier;
8438 }
8439 if (!strcmp(name, "vkCmdBeginQuery"))
8440 {
8441 return (void*)entry_vkCmdBeginQuery;
8442 }
8443 if (!strcmp(name, "vkCmdEndQuery"))
8444 {
8445 return (void*)entry_vkCmdEndQuery;
8446 }
8447 if (!strcmp(name, "vkCmdResetQueryPool"))
8448 {
8449 return (void*)entry_vkCmdResetQueryPool;
8450 }
8451 if (!strcmp(name, "vkCmdWriteTimestamp"))
8452 {
8453 return (void*)entry_vkCmdWriteTimestamp;
8454 }
8455 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
8456 {
8457 return (void*)entry_vkCmdCopyQueryPoolResults;
8458 }
8459 if (!strcmp(name, "vkCmdPushConstants"))
8460 {
8461 return (void*)entry_vkCmdPushConstants;
8462 }
8463 if (!strcmp(name, "vkCmdBeginRenderPass"))
8464 {
8465 return (void*)entry_vkCmdBeginRenderPass;
8466 }
8467 if (!strcmp(name, "vkCmdNextSubpass"))
8468 {
8469 return (void*)entry_vkCmdNextSubpass;
8470 }
8471 if (!strcmp(name, "vkCmdEndRenderPass"))
8472 {
8473 return (void*)entry_vkCmdEndRenderPass;
8474 }
8475 if (!strcmp(name, "vkCmdExecuteCommands"))
8476 {
8477 return (void*)entry_vkCmdExecuteCommands;
8478 }
8479#endif
8480#ifdef VK_VERSION_1_1
8481 if (!strcmp(name, "vkEnumerateInstanceVersion"))
8482 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008483 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008484 }
8485 if (!strcmp(name, "vkBindBufferMemory2"))
8486 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008487 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008488 }
8489 if (!strcmp(name, "vkBindImageMemory2"))
8490 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008491 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008492 }
8493 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
8494 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008495 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008496 }
8497 if (!strcmp(name, "vkCmdSetDeviceMask"))
8498 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008499 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008500 }
8501 if (!strcmp(name, "vkCmdDispatchBase"))
8502 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008503 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008504 }
8505 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
8506 {
Lingfeng Yang113689e2018-11-11 16:48:50 -08008507 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008508 }
8509 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
8510 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008511 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008512 }
8513 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
8514 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008515 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008516 }
8517 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
8518 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008519 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008520 }
8521 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
8522 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008523 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008524 }
8525 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
8526 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008527 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008528 }
8529 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
8530 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008531 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008532 }
8533 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
8534 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008535 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008536 }
8537 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
8538 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008539 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008540 }
8541 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
8542 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008543 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008544 }
8545 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
8546 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008547 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008548 }
8549 if (!strcmp(name, "vkTrimCommandPool"))
8550 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008551 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008552 }
8553 if (!strcmp(name, "vkGetDeviceQueue2"))
8554 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008555 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008556 }
8557 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
8558 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008559 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008560 }
8561 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
8562 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008563 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008564 }
8565 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
8566 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008567 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008568 }
8569 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
8570 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008571 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008572 }
8573 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
8574 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008575 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008576 }
8577 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
8578 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008579 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008580 }
8581 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
8582 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008583 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008584 }
8585 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
8586 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008587 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008588 }
8589 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
8590 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008591 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008592 }
8593#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008594#ifdef VK_VERSION_1_2
8595 if (!strcmp(name, "vkCmdDrawIndirectCount"))
8596 {
8597 return nullptr;
8598 }
8599 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
8600 {
8601 return nullptr;
8602 }
8603 if (!strcmp(name, "vkCreateRenderPass2"))
8604 {
8605 return nullptr;
8606 }
8607 if (!strcmp(name, "vkCmdBeginRenderPass2"))
8608 {
8609 return nullptr;
8610 }
8611 if (!strcmp(name, "vkCmdNextSubpass2"))
8612 {
8613 return nullptr;
8614 }
8615 if (!strcmp(name, "vkCmdEndRenderPass2"))
8616 {
8617 return nullptr;
8618 }
8619 if (!strcmp(name, "vkResetQueryPool"))
8620 {
8621 return nullptr;
8622 }
8623 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
8624 {
8625 return nullptr;
8626 }
8627 if (!strcmp(name, "vkWaitSemaphores"))
8628 {
8629 return nullptr;
8630 }
8631 if (!strcmp(name, "vkSignalSemaphore"))
8632 {
8633 return nullptr;
8634 }
8635 if (!strcmp(name, "vkGetBufferDeviceAddress"))
8636 {
8637 return nullptr;
8638 }
8639 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
8640 {
8641 return nullptr;
8642 }
8643 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
8644 {
8645 return nullptr;
8646 }
8647#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008648#ifdef VK_KHR_surface
8649 if (!strcmp(name, "vkDestroySurfaceKHR"))
8650 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008651 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008652 }
8653 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
8654 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008655 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008656 }
8657 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
8658 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008659 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008660 }
8661 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
8662 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008663 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008664 }
8665 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
8666 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008667 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008668 }
8669#endif
8670#ifdef VK_KHR_swapchain
8671 if (!strcmp(name, "vkCreateSwapchainKHR"))
8672 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008673 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008674 }
8675 if (!strcmp(name, "vkDestroySwapchainKHR"))
8676 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008677 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008678 }
8679 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
8680 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008681 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008682 }
8683 if (!strcmp(name, "vkAcquireNextImageKHR"))
8684 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008685 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008686 }
8687 if (!strcmp(name, "vkQueuePresentKHR"))
8688 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008689 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008690 }
8691 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
8692 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008693 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008694 }
8695 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
8696 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008697 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008698 }
8699 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
8700 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008701 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008702 }
8703 if (!strcmp(name, "vkAcquireNextImage2KHR"))
8704 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008705 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008706 }
8707#endif
8708#ifdef VK_KHR_display
8709 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
8710 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008711 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008712 }
8713 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
8714 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008715 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008716 }
8717 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
8718 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008719 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008720 }
8721 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
8722 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008723 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008724 }
8725 if (!strcmp(name, "vkCreateDisplayModeKHR"))
8726 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008727 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008728 }
8729 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
8730 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008731 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008732 }
8733 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
8734 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008735 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008736 }
8737#endif
8738#ifdef VK_KHR_display_swapchain
8739 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
8740 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008741 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008742 }
8743#endif
8744#ifdef VK_KHR_xlib_surface
8745 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
8746 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008747 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008748 }
8749 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
8750 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008751 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008752 }
8753#endif
8754#ifdef VK_KHR_xcb_surface
8755 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
8756 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008757 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008758 }
8759 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
8760 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008761 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008762 }
8763#endif
8764#ifdef VK_KHR_wayland_surface
8765 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
8766 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008767 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008768 }
8769 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
8770 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008771 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008772 }
8773#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008774#ifdef VK_KHR_android_surface
8775 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
8776 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008777 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008778 }
8779#endif
8780#ifdef VK_KHR_win32_surface
8781 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
8782 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008783 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008784 }
8785 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
8786 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008787 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008788 }
8789#endif
8790#ifdef VK_KHR_get_physical_device_properties2
8791 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
8792 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008793 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008794 }
8795 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
8796 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008797 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008798 }
8799 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
8800 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008801 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008802 }
8803 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
8804 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008805 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008806 }
8807 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
8808 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008809 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008810 }
8811 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
8812 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008813 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008814 }
8815 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
8816 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008817 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008818 }
8819#endif
8820#ifdef VK_KHR_device_group
8821 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
8822 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008823 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008824 }
8825 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
8826 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008827 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008828 }
8829 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
8830 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008831 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008832 }
8833#endif
8834#ifdef VK_KHR_maintenance1
8835 if (!strcmp(name, "vkTrimCommandPoolKHR"))
8836 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008837 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008838 }
8839#endif
8840#ifdef VK_KHR_device_group_creation
8841 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
8842 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008843 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008844 }
8845#endif
8846#ifdef VK_KHR_external_memory_capabilities
8847 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
8848 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008849 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008850 }
8851#endif
8852#ifdef VK_KHR_external_memory_win32
8853 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
8854 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008855 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008856 }
8857 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
8858 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008859 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008860 }
8861#endif
8862#ifdef VK_KHR_external_memory_fd
8863 if (!strcmp(name, "vkGetMemoryFdKHR"))
8864 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008865 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008866 }
8867 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
8868 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008869 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008870 }
8871#endif
8872#ifdef VK_KHR_external_semaphore_capabilities
8873 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
8874 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008875 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008876 }
8877#endif
8878#ifdef VK_KHR_external_semaphore_win32
8879 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
8880 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008881 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008882 }
8883 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
8884 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008885 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008886 }
8887#endif
8888#ifdef VK_KHR_external_semaphore_fd
8889 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
8890 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008891 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008892 }
8893 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
8894 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008895 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008896 }
8897#endif
8898#ifdef VK_KHR_push_descriptor
8899 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
8900 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008901 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008902 }
8903 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
8904 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008905 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008906 }
8907#endif
8908#ifdef VK_KHR_descriptor_update_template
8909 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
8910 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008911 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008912 }
8913 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
8914 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008915 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008916 }
8917 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
8918 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008919 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008920 }
8921#endif
8922#ifdef VK_KHR_create_renderpass2
8923 if (!strcmp(name, "vkCreateRenderPass2KHR"))
8924 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008925 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008926 }
8927 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
8928 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008929 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008930 }
8931 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
8932 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008933 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008934 }
8935 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
8936 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008937 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008938 }
8939#endif
8940#ifdef VK_KHR_shared_presentable_image
8941 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
8942 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008943 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008944 }
8945#endif
8946#ifdef VK_KHR_external_fence_capabilities
8947 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
8948 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008949 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008950 }
8951#endif
8952#ifdef VK_KHR_external_fence_win32
8953 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
8954 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008955 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008956 }
8957 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
8958 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008959 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008960 }
8961#endif
8962#ifdef VK_KHR_external_fence_fd
8963 if (!strcmp(name, "vkImportFenceFdKHR"))
8964 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008965 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008966 }
8967 if (!strcmp(name, "vkGetFenceFdKHR"))
8968 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008969 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008970 }
8971#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008972#ifdef VK_KHR_performance_query
8973 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
8974 {
8975 return nullptr;
8976 }
8977 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
8978 {
8979 return nullptr;
8980 }
8981 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
8982 {
8983 return nullptr;
8984 }
8985 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
8986 {
8987 return nullptr;
8988 }
8989#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008990#ifdef VK_KHR_get_surface_capabilities2
8991 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
8992 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008993 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008994 }
8995 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
8996 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008997 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008998 }
8999#endif
9000#ifdef VK_KHR_get_display_properties2
9001 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
9002 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009003 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009004 }
9005 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
9006 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009007 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009008 }
9009 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
9010 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009011 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009012 }
9013 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
9014 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009015 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009016 }
9017#endif
9018#ifdef VK_KHR_get_memory_requirements2
9019 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
9020 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009021 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009022 }
9023 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
9024 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009025 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009026 }
9027 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
9028 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009029 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009030 }
9031#endif
9032#ifdef VK_KHR_sampler_ycbcr_conversion
9033 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
9034 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009035 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009036 }
9037 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
9038 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009039 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009040 }
9041#endif
9042#ifdef VK_KHR_bind_memory2
9043 if (!strcmp(name, "vkBindBufferMemory2KHR"))
9044 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009045 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009046 }
9047 if (!strcmp(name, "vkBindImageMemory2KHR"))
9048 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009049 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009050 }
9051#endif
9052#ifdef VK_KHR_maintenance3
9053 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
9054 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009055 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009056 }
9057#endif
9058#ifdef VK_KHR_draw_indirect_count
9059 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
9060 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009061 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009062 }
9063 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
9064 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009065 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009066 }
9067#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009068#ifdef VK_KHR_timeline_semaphore
9069 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
9070 {
9071 return nullptr;
9072 }
9073 if (!strcmp(name, "vkWaitSemaphoresKHR"))
9074 {
9075 return nullptr;
9076 }
9077 if (!strcmp(name, "vkSignalSemaphoreKHR"))
9078 {
9079 return nullptr;
9080 }
9081#endif
9082#ifdef VK_KHR_fragment_shading_rate
9083 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
9084 {
9085 return nullptr;
9086 }
9087 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
9088 {
9089 return nullptr;
9090 }
9091#endif
9092#ifdef VK_KHR_buffer_device_address
9093 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
9094 {
9095 return nullptr;
9096 }
9097 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
9098 {
9099 return nullptr;
9100 }
9101 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
9102 {
9103 return nullptr;
9104 }
9105#endif
9106#ifdef VK_KHR_deferred_host_operations
9107 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
9108 {
9109 return nullptr;
9110 }
9111 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
9112 {
9113 return nullptr;
9114 }
9115 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
9116 {
9117 return nullptr;
9118 }
9119 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
9120 {
9121 return nullptr;
9122 }
9123 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
9124 {
9125 return nullptr;
9126 }
9127#endif
9128#ifdef VK_KHR_pipeline_executable_properties
9129 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
9130 {
9131 return nullptr;
9132 }
9133 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
9134 {
9135 return nullptr;
9136 }
9137 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
9138 {
9139 return nullptr;
9140 }
9141#endif
9142#ifdef VK_KHR_copy_commands2
9143 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
9144 {
9145 return nullptr;
9146 }
9147 if (!strcmp(name, "vkCmdCopyImage2KHR"))
9148 {
9149 return nullptr;
9150 }
9151 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
9152 {
9153 return nullptr;
9154 }
9155 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
9156 {
9157 return nullptr;
9158 }
9159 if (!strcmp(name, "vkCmdBlitImage2KHR"))
9160 {
9161 return nullptr;
9162 }
9163 if (!strcmp(name, "vkCmdResolveImage2KHR"))
9164 {
9165 return nullptr;
9166 }
9167#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08009168#ifdef VK_ANDROID_native_buffer
9169 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
9170 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009171 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08009172 }
9173 if (!strcmp(name, "vkAcquireImageANDROID"))
9174 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009175 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08009176 }
9177 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
9178 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009179 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08009180 }
9181#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009182#ifdef VK_EXT_debug_report
9183 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
9184 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009185 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009186 }
9187 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
9188 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009189 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009190 }
9191 if (!strcmp(name, "vkDebugReportMessageEXT"))
9192 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009193 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009194 }
9195#endif
9196#ifdef VK_EXT_debug_marker
9197 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
9198 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009199 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009200 }
9201 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
9202 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009203 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009204 }
9205 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
9206 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009207 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009208 }
9209 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
9210 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009211 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009212 }
9213 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
9214 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009215 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009216 }
9217#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009218#ifdef VK_EXT_transform_feedback
9219 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
9220 {
9221 return nullptr;
9222 }
9223 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
9224 {
9225 return nullptr;
9226 }
9227 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
9228 {
9229 return nullptr;
9230 }
9231 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
9232 {
9233 return nullptr;
9234 }
9235 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
9236 {
9237 return nullptr;
9238 }
9239 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
9240 {
9241 return nullptr;
9242 }
9243#endif
9244#ifdef VK_NVX_image_view_handle
9245 if (!strcmp(name, "vkGetImageViewHandleNVX"))
9246 {
9247 return nullptr;
9248 }
9249 if (!strcmp(name, "vkGetImageViewAddressNVX"))
9250 {
9251 return nullptr;
9252 }
9253#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009254#ifdef VK_AMD_draw_indirect_count
9255 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
9256 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009257 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009258 }
9259 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
9260 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009261 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009262 }
9263#endif
9264#ifdef VK_AMD_shader_info
9265 if (!strcmp(name, "vkGetShaderInfoAMD"))
9266 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009267 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009268 }
9269#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009270#ifdef VK_GGP_stream_descriptor_surface
9271 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
9272 {
9273 return nullptr;
9274 }
9275#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009276#ifdef VK_NV_external_memory_capabilities
9277 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
9278 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009279 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009280 }
9281#endif
9282#ifdef VK_NV_external_memory_win32
9283 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
9284 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009285 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009286 }
9287#endif
9288#ifdef VK_NN_vi_surface
9289 if (!strcmp(name, "vkCreateViSurfaceNN"))
9290 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009291 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009292 }
9293#endif
9294#ifdef VK_EXT_conditional_rendering
9295 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
9296 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009297 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009298 }
9299 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
9300 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009301 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009302 }
9303#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009304#ifdef VK_NV_clip_space_w_scaling
9305 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
9306 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009307 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009308 }
9309#endif
9310#ifdef VK_EXT_direct_mode_display
9311 if (!strcmp(name, "vkReleaseDisplayEXT"))
9312 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009313 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009314 }
9315#endif
9316#ifdef VK_EXT_acquire_xlib_display
9317 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
9318 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009319 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009320 }
9321 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
9322 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009323 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009324 }
9325#endif
9326#ifdef VK_EXT_display_surface_counter
9327 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
9328 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009329 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009330 }
9331#endif
9332#ifdef VK_EXT_display_control
9333 if (!strcmp(name, "vkDisplayPowerControlEXT"))
9334 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009335 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009336 }
9337 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
9338 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009339 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009340 }
9341 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
9342 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009343 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009344 }
9345 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
9346 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009347 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009348 }
9349#endif
9350#ifdef VK_GOOGLE_display_timing
9351 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
9352 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009353 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009354 }
9355 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
9356 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009357 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009358 }
9359#endif
9360#ifdef VK_EXT_discard_rectangles
9361 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
9362 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009363 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009364 }
9365#endif
9366#ifdef VK_EXT_hdr_metadata
9367 if (!strcmp(name, "vkSetHdrMetadataEXT"))
9368 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009369 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009370 }
9371#endif
9372#ifdef VK_MVK_ios_surface
9373 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
9374 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009375 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009376 }
9377#endif
9378#ifdef VK_MVK_macos_surface
9379 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
9380 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009381 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009382 }
9383#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009384#ifdef VK_MVK_moltenvk
9385 if (!strcmp(name, "vkGetMTLDeviceMVK"))
9386 {
9387 return nullptr;
9388 }
9389 if (!strcmp(name, "vkSetMTLTextureMVK"))
9390 {
9391 return nullptr;
9392 }
9393 if (!strcmp(name, "vkGetMTLTextureMVK"))
9394 {
9395 return nullptr;
9396 }
9397 if (!strcmp(name, "vkGetMTLBufferMVK"))
9398 {
9399 return nullptr;
9400 }
9401 if (!strcmp(name, "vkUseIOSurfaceMVK"))
9402 {
9403 return nullptr;
9404 }
9405 if (!strcmp(name, "vkGetIOSurfaceMVK"))
9406 {
9407 return nullptr;
9408 }
9409#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009410#ifdef VK_EXT_debug_utils
9411 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
9412 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009413 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009414 }
9415 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
9416 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009417 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009418 }
9419 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
9420 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009421 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009422 }
9423 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
9424 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009425 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009426 }
9427 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
9428 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009429 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009430 }
9431 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
9432 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009433 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009434 }
9435 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
9436 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009437 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009438 }
9439 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
9440 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009441 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009442 }
9443 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
9444 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009445 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009446 }
9447 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
9448 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009449 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009450 }
9451 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
9452 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009453 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009454 }
9455#endif
9456#ifdef VK_ANDROID_external_memory_android_hardware_buffer
9457 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
9458 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009459 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009460 }
9461 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
9462 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009463 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009464 }
9465#endif
9466#ifdef VK_EXT_sample_locations
9467 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
9468 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009469 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009470 }
9471 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
9472 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009473 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009474 }
9475#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009476#ifdef VK_EXT_image_drm_format_modifier
9477 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
9478 {
9479 return nullptr;
9480 }
9481#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009482#ifdef VK_EXT_validation_cache
9483 if (!strcmp(name, "vkCreateValidationCacheEXT"))
9484 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009485 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009486 }
9487 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
9488 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009489 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009490 }
9491 if (!strcmp(name, "vkMergeValidationCachesEXT"))
9492 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009493 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009494 }
9495 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
9496 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009497 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009498 }
9499#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009500#ifdef VK_NV_shading_rate_image
9501 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
9502 {
9503 return nullptr;
9504 }
9505 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
9506 {
9507 return nullptr;
9508 }
9509 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
9510 {
9511 return nullptr;
9512 }
9513#endif
9514#ifdef VK_NV_ray_tracing
9515 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
9516 {
9517 return nullptr;
9518 }
9519 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
9520 {
9521 return nullptr;
9522 }
9523 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
9524 {
9525 return nullptr;
9526 }
9527 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
9528 {
9529 return nullptr;
9530 }
9531 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
9532 {
9533 return nullptr;
9534 }
9535 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
9536 {
9537 return nullptr;
9538 }
9539 if (!strcmp(name, "vkCmdTraceRaysNV"))
9540 {
9541 return nullptr;
9542 }
9543 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
9544 {
9545 return nullptr;
9546 }
9547 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
9548 {
9549 return nullptr;
9550 }
9551 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
9552 {
9553 return nullptr;
9554 }
9555 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
9556 {
9557 return nullptr;
9558 }
9559 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
9560 {
9561 return nullptr;
9562 }
9563 if (!strcmp(name, "vkCompileDeferredNV"))
9564 {
9565 return nullptr;
9566 }
9567#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009568#ifdef VK_EXT_external_memory_host
9569 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
9570 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009571 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009572 }
9573#endif
9574#ifdef VK_AMD_buffer_marker
9575 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
9576 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009577 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009578 }
9579#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009580#ifdef VK_EXT_calibrated_timestamps
9581 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
9582 {
9583 return nullptr;
9584 }
9585 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
9586 {
9587 return nullptr;
9588 }
9589#endif
9590#ifdef VK_NV_mesh_shader
9591 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
9592 {
9593 return nullptr;
9594 }
9595 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
9596 {
9597 return nullptr;
9598 }
9599 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
9600 {
9601 return nullptr;
9602 }
9603#endif
9604#ifdef VK_NV_scissor_exclusive
9605 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
9606 {
9607 return nullptr;
9608 }
9609#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009610#ifdef VK_NV_device_diagnostic_checkpoints
9611 if (!strcmp(name, "vkCmdSetCheckpointNV"))
9612 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009613 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009614 }
9615 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
9616 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009617 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009618 }
9619#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009620#ifdef VK_INTEL_performance_query
9621 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
9622 {
9623 return nullptr;
9624 }
9625 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
9626 {
9627 return nullptr;
9628 }
9629 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
9630 {
9631 return nullptr;
9632 }
9633 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
9634 {
9635 return nullptr;
9636 }
9637 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
9638 {
9639 return nullptr;
9640 }
9641 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
9642 {
9643 return nullptr;
9644 }
9645 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
9646 {
9647 return nullptr;
9648 }
9649 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
9650 {
9651 return nullptr;
9652 }
9653 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
9654 {
9655 return nullptr;
9656 }
9657#endif
9658#ifdef VK_AMD_display_native_hdr
9659 if (!strcmp(name, "vkSetLocalDimmingAMD"))
9660 {
9661 return nullptr;
9662 }
9663#endif
9664#ifdef VK_FUCHSIA_imagepipe_surface
9665 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
9666 {
9667 return nullptr;
9668 }
9669#endif
9670#ifdef VK_EXT_metal_surface
9671 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08009672 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009673 return nullptr;
9674 }
9675#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009676#ifdef VK_EXT_buffer_device_address
9677 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
9678 {
9679 return nullptr;
9680 }
9681#endif
9682#ifdef VK_EXT_tooling_info
9683 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
9684 {
9685 return nullptr;
9686 }
9687#endif
9688#ifdef VK_NV_cooperative_matrix
9689 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
9690 {
9691 return nullptr;
9692 }
9693#endif
9694#ifdef VK_NV_coverage_reduction_mode
9695 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
9696 {
9697 return nullptr;
9698 }
9699#endif
9700#ifdef VK_EXT_full_screen_exclusive
9701 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
9702 {
9703 return nullptr;
9704 }
9705 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
9706 {
9707 return nullptr;
9708 }
9709 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
9710 {
9711 return nullptr;
9712 }
9713 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
9714 {
9715 return nullptr;
9716 }
9717#endif
9718#ifdef VK_EXT_headless_surface
9719 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
9720 {
9721 return nullptr;
9722 }
9723#endif
9724#ifdef VK_EXT_line_rasterization
9725 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
9726 {
9727 return nullptr;
9728 }
9729#endif
9730#ifdef VK_EXT_host_query_reset
9731 if (!strcmp(name, "vkResetQueryPoolEXT"))
9732 {
9733 return nullptr;
9734 }
9735#endif
9736#ifdef VK_EXT_extended_dynamic_state
9737 if (!strcmp(name, "vkCmdSetCullModeEXT"))
9738 {
9739 return nullptr;
9740 }
9741 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
9742 {
9743 return nullptr;
9744 }
9745 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
9746 {
9747 return nullptr;
9748 }
9749 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
9750 {
9751 return nullptr;
9752 }
9753 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
9754 {
9755 return nullptr;
9756 }
9757 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
9758 {
9759 return nullptr;
9760 }
9761 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
9762 {
9763 return nullptr;
9764 }
9765 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
9766 {
9767 return nullptr;
9768 }
9769 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
9770 {
9771 return nullptr;
9772 }
9773 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
9774 {
9775 return nullptr;
9776 }
9777 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
9778 {
9779 return nullptr;
9780 }
9781 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
9782 {
9783 return nullptr;
9784 }
9785#endif
9786#ifdef VK_NV_device_generated_commands
9787 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
9788 {
9789 return nullptr;
9790 }
9791 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
9792 {
9793 return nullptr;
9794 }
9795 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
9796 {
9797 return nullptr;
9798 }
9799 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
9800 {
9801 return nullptr;
9802 }
9803 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
9804 {
9805 return nullptr;
9806 }
9807 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
9808 {
9809 return nullptr;
9810 }
9811#endif
9812#ifdef VK_EXT_private_data
9813 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
9814 {
9815 return nullptr;
9816 }
9817 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
9818 {
9819 return nullptr;
9820 }
9821 if (!strcmp(name, "vkSetPrivateDataEXT"))
9822 {
9823 return nullptr;
9824 }
9825 if (!strcmp(name, "vkGetPrivateDataEXT"))
9826 {
9827 return nullptr;
9828 }
9829#endif
9830#ifdef VK_NV_fragment_shading_rate_enums
9831 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
9832 {
9833 return nullptr;
9834 }
9835#endif
9836#ifdef VK_EXT_directfb_surface
9837 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
9838 {
9839 return nullptr;
9840 }
9841 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
9842 {
9843 return nullptr;
9844 }
9845#endif
Yilong Li71c43c52021-02-10 02:50:43 -08009846#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -07009847 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
9848 {
9849 return nullptr;
9850 }
9851 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
9852 {
9853 return nullptr;
9854 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009855 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
9856 {
9857 return nullptr;
9858 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07009859 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
9860 {
9861 return nullptr;
9862 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009863 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
9864 {
9865 return nullptr;
9866 }
9867 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
9868 {
9869 return nullptr;
9870 }
9871 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
9872 {
9873 return nullptr;
9874 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07009875 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
9876 {
9877 return nullptr;
9878 }
Lingfeng Yang87f11962019-06-27 16:28:53 +00009879 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
9880 {
9881 return nullptr;
9882 }
9883 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
9884 {
9885 return nullptr;
9886 }
Lingfeng Yang4c542412020-02-04 18:18:32 -08009887 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
9888 {
9889 return nullptr;
9890 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07009891 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
9892 {
9893 return nullptr;
9894 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07009895 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
9896 {
9897 return nullptr;
9898 }
9899 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
9900 {
9901 return nullptr;
9902 }
9903 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
9904 {
9905 return nullptr;
9906 }
9907 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
9908 {
9909 return nullptr;
9910 }
Yilong Lia48b0102020-09-15 15:08:28 -07009911 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
9912 {
9913 return nullptr;
9914 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009915 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
Lingfeng Yang2178dc72021-01-08 14:01:47 -08009916 {
9917 return nullptr;
9918 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08009919 if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
9920 {
9921 return nullptr;
9922 }
9923 if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
9924 {
9925 return nullptr;
9926 }
Lingfeng Yang2178dc72021-01-08 14:01:47 -08009927#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009928#ifdef VK_KHR_acceleration_structure
9929 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
9930 {
9931 return nullptr;
9932 }
9933 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
9934 {
9935 return nullptr;
9936 }
9937 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
9938 {
9939 return nullptr;
9940 }
9941 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
9942 {
9943 return nullptr;
9944 }
9945 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
9946 {
9947 return nullptr;
9948 }
9949 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
9950 {
9951 return nullptr;
9952 }
9953 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
9954 {
9955 return nullptr;
9956 }
9957 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
9958 {
9959 return nullptr;
9960 }
9961 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
9962 {
9963 return nullptr;
9964 }
9965 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
9966 {
9967 return nullptr;
9968 }
9969 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
9970 {
9971 return nullptr;
9972 }
9973 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
9974 {
9975 return nullptr;
9976 }
9977 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
9978 {
9979 return nullptr;
9980 }
9981 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
9982 {
9983 return nullptr;
9984 }
9985 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
9986 {
9987 return nullptr;
9988 }
9989 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
9990 {
9991 return nullptr;
9992 }
9993#endif
9994#ifdef VK_KHR_ray_tracing_pipeline
9995 if (!strcmp(name, "vkCmdTraceRaysKHR"))
9996 {
9997 return nullptr;
9998 }
9999 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
10000 {
10001 return nullptr;
10002 }
10003 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
10004 {
10005 return nullptr;
10006 }
10007 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
10008 {
10009 return nullptr;
10010 }
10011 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
10012 {
10013 return nullptr;
10014 }
10015 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
Lingfeng Yangded34672021-01-22 23:17:47 -080010016 {
10017 return nullptr;
10018 }
10019#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010020 return nullptr;
10021}
10022void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
10023 auto resources = ResourceTracker::get();
10024 bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
10025#ifdef VK_VERSION_1_0
10026 if (!strcmp(name, "vkCreateInstance"))
10027 {
10028 return (void*)entry_vkCreateInstance;
10029 }
10030 if (!strcmp(name, "vkDestroyInstance"))
10031 {
10032 return (void*)entry_vkDestroyInstance;
10033 }
10034 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
10035 {
10036 return (void*)entry_vkEnumeratePhysicalDevices;
10037 }
10038 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
10039 {
10040 return (void*)entry_vkGetPhysicalDeviceFeatures;
10041 }
10042 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
10043 {
10044 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
10045 }
10046 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
10047 {
10048 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
10049 }
10050 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
10051 {
10052 return (void*)entry_vkGetPhysicalDeviceProperties;
10053 }
10054 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
10055 {
10056 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
10057 }
10058 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
10059 {
10060 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
10061 }
10062 if (!strcmp(name, "vkGetInstanceProcAddr"))
10063 {
10064 return (void*)entry_vkGetInstanceProcAddr;
10065 }
10066 if (!strcmp(name, "vkGetDeviceProcAddr"))
10067 {
10068 return (void*)entry_vkGetDeviceProcAddr;
10069 }
10070 if (!strcmp(name, "vkCreateDevice"))
10071 {
10072 return (void*)entry_vkCreateDevice;
10073 }
10074 if (!strcmp(name, "vkDestroyDevice"))
10075 {
10076 return (void*)entry_vkDestroyDevice;
10077 }
10078 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
10079 {
10080 return (void*)entry_vkEnumerateInstanceExtensionProperties;
10081 }
10082 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
10083 {
10084 return (void*)entry_vkEnumerateDeviceExtensionProperties;
10085 }
10086 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
10087 {
10088 return (void*)entry_vkEnumerateInstanceLayerProperties;
10089 }
10090 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
10091 {
10092 return (void*)entry_vkEnumerateDeviceLayerProperties;
10093 }
10094 if (!strcmp(name, "vkGetDeviceQueue"))
10095 {
10096 return (void*)entry_vkGetDeviceQueue;
10097 }
10098 if (!strcmp(name, "vkQueueSubmit"))
10099 {
10100 return (void*)entry_vkQueueSubmit;
10101 }
10102 if (!strcmp(name, "vkQueueWaitIdle"))
10103 {
10104 return (void*)entry_vkQueueWaitIdle;
10105 }
10106 if (!strcmp(name, "vkDeviceWaitIdle"))
10107 {
10108 return (void*)entry_vkDeviceWaitIdle;
10109 }
10110 if (!strcmp(name, "vkAllocateMemory"))
10111 {
10112 return (void*)entry_vkAllocateMemory;
10113 }
10114 if (!strcmp(name, "vkFreeMemory"))
10115 {
10116 return (void*)entry_vkFreeMemory;
10117 }
10118 if (!strcmp(name, "vkMapMemory"))
10119 {
10120 return (void*)entry_vkMapMemory;
10121 }
10122 if (!strcmp(name, "vkUnmapMemory"))
10123 {
10124 return (void*)entry_vkUnmapMemory;
10125 }
10126 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
10127 {
10128 return (void*)entry_vkFlushMappedMemoryRanges;
10129 }
10130 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
10131 {
10132 return (void*)entry_vkInvalidateMappedMemoryRanges;
10133 }
10134 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
10135 {
10136 return (void*)entry_vkGetDeviceMemoryCommitment;
10137 }
10138 if (!strcmp(name, "vkBindBufferMemory"))
10139 {
10140 return (void*)entry_vkBindBufferMemory;
10141 }
10142 if (!strcmp(name, "vkBindImageMemory"))
10143 {
10144 return (void*)entry_vkBindImageMemory;
10145 }
10146 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
10147 {
10148 return (void*)entry_vkGetBufferMemoryRequirements;
10149 }
10150 if (!strcmp(name, "vkGetImageMemoryRequirements"))
10151 {
10152 return (void*)entry_vkGetImageMemoryRequirements;
10153 }
10154 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
10155 {
10156 return (void*)entry_vkGetImageSparseMemoryRequirements;
10157 }
10158 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
10159 {
10160 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
10161 }
10162 if (!strcmp(name, "vkQueueBindSparse"))
10163 {
10164 return (void*)entry_vkQueueBindSparse;
10165 }
10166 if (!strcmp(name, "vkCreateFence"))
10167 {
10168 return (void*)entry_vkCreateFence;
10169 }
10170 if (!strcmp(name, "vkDestroyFence"))
10171 {
10172 return (void*)entry_vkDestroyFence;
10173 }
10174 if (!strcmp(name, "vkResetFences"))
10175 {
10176 return (void*)entry_vkResetFences;
10177 }
10178 if (!strcmp(name, "vkGetFenceStatus"))
10179 {
10180 return (void*)entry_vkGetFenceStatus;
10181 }
10182 if (!strcmp(name, "vkWaitForFences"))
10183 {
10184 return (void*)entry_vkWaitForFences;
10185 }
10186 if (!strcmp(name, "vkCreateSemaphore"))
10187 {
10188 return (void*)entry_vkCreateSemaphore;
10189 }
10190 if (!strcmp(name, "vkDestroySemaphore"))
10191 {
10192 return (void*)entry_vkDestroySemaphore;
10193 }
10194 if (!strcmp(name, "vkCreateEvent"))
10195 {
10196 return (void*)entry_vkCreateEvent;
10197 }
10198 if (!strcmp(name, "vkDestroyEvent"))
10199 {
10200 return (void*)entry_vkDestroyEvent;
10201 }
10202 if (!strcmp(name, "vkGetEventStatus"))
10203 {
10204 return (void*)entry_vkGetEventStatus;
10205 }
10206 if (!strcmp(name, "vkSetEvent"))
10207 {
10208 return (void*)entry_vkSetEvent;
10209 }
10210 if (!strcmp(name, "vkResetEvent"))
10211 {
10212 return (void*)entry_vkResetEvent;
10213 }
10214 if (!strcmp(name, "vkCreateQueryPool"))
10215 {
10216 return (void*)entry_vkCreateQueryPool;
10217 }
10218 if (!strcmp(name, "vkDestroyQueryPool"))
10219 {
10220 return (void*)entry_vkDestroyQueryPool;
10221 }
10222 if (!strcmp(name, "vkGetQueryPoolResults"))
10223 {
10224 return (void*)entry_vkGetQueryPoolResults;
10225 }
10226 if (!strcmp(name, "vkCreateBuffer"))
10227 {
10228 return (void*)entry_vkCreateBuffer;
10229 }
10230 if (!strcmp(name, "vkDestroyBuffer"))
10231 {
10232 return (void*)entry_vkDestroyBuffer;
10233 }
10234 if (!strcmp(name, "vkCreateBufferView"))
10235 {
10236 return (void*)entry_vkCreateBufferView;
10237 }
10238 if (!strcmp(name, "vkDestroyBufferView"))
10239 {
10240 return (void*)entry_vkDestroyBufferView;
10241 }
10242 if (!strcmp(name, "vkCreateImage"))
10243 {
10244 return (void*)entry_vkCreateImage;
10245 }
10246 if (!strcmp(name, "vkDestroyImage"))
10247 {
10248 return (void*)entry_vkDestroyImage;
10249 }
10250 if (!strcmp(name, "vkGetImageSubresourceLayout"))
10251 {
10252 return (void*)entry_vkGetImageSubresourceLayout;
10253 }
10254 if (!strcmp(name, "vkCreateImageView"))
10255 {
10256 return (void*)entry_vkCreateImageView;
10257 }
10258 if (!strcmp(name, "vkDestroyImageView"))
10259 {
10260 return (void*)entry_vkDestroyImageView;
10261 }
10262 if (!strcmp(name, "vkCreateShaderModule"))
10263 {
10264 return (void*)entry_vkCreateShaderModule;
10265 }
10266 if (!strcmp(name, "vkDestroyShaderModule"))
10267 {
10268 return (void*)entry_vkDestroyShaderModule;
10269 }
10270 if (!strcmp(name, "vkCreatePipelineCache"))
10271 {
10272 return (void*)entry_vkCreatePipelineCache;
10273 }
10274 if (!strcmp(name, "vkDestroyPipelineCache"))
10275 {
10276 return (void*)entry_vkDestroyPipelineCache;
10277 }
10278 if (!strcmp(name, "vkGetPipelineCacheData"))
10279 {
10280 return (void*)entry_vkGetPipelineCacheData;
10281 }
10282 if (!strcmp(name, "vkMergePipelineCaches"))
10283 {
10284 return (void*)entry_vkMergePipelineCaches;
10285 }
10286 if (!strcmp(name, "vkCreateGraphicsPipelines"))
10287 {
10288 return (void*)entry_vkCreateGraphicsPipelines;
10289 }
10290 if (!strcmp(name, "vkCreateComputePipelines"))
10291 {
10292 return (void*)entry_vkCreateComputePipelines;
10293 }
10294 if (!strcmp(name, "vkDestroyPipeline"))
10295 {
10296 return (void*)entry_vkDestroyPipeline;
10297 }
10298 if (!strcmp(name, "vkCreatePipelineLayout"))
10299 {
10300 return (void*)entry_vkCreatePipelineLayout;
10301 }
10302 if (!strcmp(name, "vkDestroyPipelineLayout"))
10303 {
10304 return (void*)entry_vkDestroyPipelineLayout;
10305 }
10306 if (!strcmp(name, "vkCreateSampler"))
10307 {
10308 return (void*)entry_vkCreateSampler;
10309 }
10310 if (!strcmp(name, "vkDestroySampler"))
10311 {
10312 return (void*)entry_vkDestroySampler;
10313 }
10314 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
10315 {
10316 return (void*)entry_vkCreateDescriptorSetLayout;
10317 }
10318 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
10319 {
10320 return (void*)entry_vkDestroyDescriptorSetLayout;
10321 }
10322 if (!strcmp(name, "vkCreateDescriptorPool"))
10323 {
10324 return (void*)entry_vkCreateDescriptorPool;
10325 }
10326 if (!strcmp(name, "vkDestroyDescriptorPool"))
10327 {
10328 return (void*)entry_vkDestroyDescriptorPool;
10329 }
10330 if (!strcmp(name, "vkResetDescriptorPool"))
10331 {
10332 return (void*)entry_vkResetDescriptorPool;
10333 }
10334 if (!strcmp(name, "vkAllocateDescriptorSets"))
10335 {
10336 return (void*)entry_vkAllocateDescriptorSets;
10337 }
10338 if (!strcmp(name, "vkFreeDescriptorSets"))
10339 {
10340 return (void*)entry_vkFreeDescriptorSets;
10341 }
10342 if (!strcmp(name, "vkUpdateDescriptorSets"))
10343 {
10344 return (void*)entry_vkUpdateDescriptorSets;
10345 }
10346 if (!strcmp(name, "vkCreateFramebuffer"))
10347 {
10348 return (void*)entry_vkCreateFramebuffer;
10349 }
10350 if (!strcmp(name, "vkDestroyFramebuffer"))
10351 {
10352 return (void*)entry_vkDestroyFramebuffer;
10353 }
10354 if (!strcmp(name, "vkCreateRenderPass"))
10355 {
10356 return (void*)entry_vkCreateRenderPass;
10357 }
10358 if (!strcmp(name, "vkDestroyRenderPass"))
10359 {
10360 return (void*)entry_vkDestroyRenderPass;
10361 }
10362 if (!strcmp(name, "vkGetRenderAreaGranularity"))
10363 {
10364 return (void*)entry_vkGetRenderAreaGranularity;
10365 }
10366 if (!strcmp(name, "vkCreateCommandPool"))
10367 {
10368 return (void*)entry_vkCreateCommandPool;
10369 }
10370 if (!strcmp(name, "vkDestroyCommandPool"))
10371 {
10372 return (void*)entry_vkDestroyCommandPool;
10373 }
10374 if (!strcmp(name, "vkResetCommandPool"))
10375 {
10376 return (void*)entry_vkResetCommandPool;
10377 }
10378 if (!strcmp(name, "vkAllocateCommandBuffers"))
10379 {
10380 return (void*)entry_vkAllocateCommandBuffers;
10381 }
10382 if (!strcmp(name, "vkFreeCommandBuffers"))
10383 {
10384 return (void*)entry_vkFreeCommandBuffers;
10385 }
10386 if (!strcmp(name, "vkBeginCommandBuffer"))
10387 {
10388 return (void*)entry_vkBeginCommandBuffer;
10389 }
10390 if (!strcmp(name, "vkEndCommandBuffer"))
10391 {
10392 return (void*)entry_vkEndCommandBuffer;
10393 }
10394 if (!strcmp(name, "vkResetCommandBuffer"))
10395 {
10396 return (void*)entry_vkResetCommandBuffer;
10397 }
10398 if (!strcmp(name, "vkCmdBindPipeline"))
10399 {
10400 return (void*)entry_vkCmdBindPipeline;
10401 }
10402 if (!strcmp(name, "vkCmdSetViewport"))
10403 {
10404 return (void*)entry_vkCmdSetViewport;
10405 }
10406 if (!strcmp(name, "vkCmdSetScissor"))
10407 {
10408 return (void*)entry_vkCmdSetScissor;
10409 }
10410 if (!strcmp(name, "vkCmdSetLineWidth"))
10411 {
10412 return (void*)entry_vkCmdSetLineWidth;
10413 }
10414 if (!strcmp(name, "vkCmdSetDepthBias"))
10415 {
10416 return (void*)entry_vkCmdSetDepthBias;
10417 }
10418 if (!strcmp(name, "vkCmdSetBlendConstants"))
10419 {
10420 return (void*)entry_vkCmdSetBlendConstants;
10421 }
10422 if (!strcmp(name, "vkCmdSetDepthBounds"))
10423 {
10424 return (void*)entry_vkCmdSetDepthBounds;
10425 }
10426 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
10427 {
10428 return (void*)entry_vkCmdSetStencilCompareMask;
10429 }
10430 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
10431 {
10432 return (void*)entry_vkCmdSetStencilWriteMask;
10433 }
10434 if (!strcmp(name, "vkCmdSetStencilReference"))
10435 {
10436 return (void*)entry_vkCmdSetStencilReference;
10437 }
10438 if (!strcmp(name, "vkCmdBindDescriptorSets"))
10439 {
10440 return (void*)entry_vkCmdBindDescriptorSets;
10441 }
10442 if (!strcmp(name, "vkCmdBindIndexBuffer"))
10443 {
10444 return (void*)entry_vkCmdBindIndexBuffer;
10445 }
10446 if (!strcmp(name, "vkCmdBindVertexBuffers"))
10447 {
10448 return (void*)entry_vkCmdBindVertexBuffers;
10449 }
10450 if (!strcmp(name, "vkCmdDraw"))
10451 {
10452 return (void*)entry_vkCmdDraw;
10453 }
10454 if (!strcmp(name, "vkCmdDrawIndexed"))
10455 {
10456 return (void*)entry_vkCmdDrawIndexed;
10457 }
10458 if (!strcmp(name, "vkCmdDrawIndirect"))
10459 {
10460 return (void*)entry_vkCmdDrawIndirect;
10461 }
10462 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
10463 {
10464 return (void*)entry_vkCmdDrawIndexedIndirect;
10465 }
10466 if (!strcmp(name, "vkCmdDispatch"))
10467 {
10468 return (void*)entry_vkCmdDispatch;
10469 }
10470 if (!strcmp(name, "vkCmdDispatchIndirect"))
10471 {
10472 return (void*)entry_vkCmdDispatchIndirect;
10473 }
10474 if (!strcmp(name, "vkCmdCopyBuffer"))
10475 {
10476 return (void*)entry_vkCmdCopyBuffer;
10477 }
10478 if (!strcmp(name, "vkCmdCopyImage"))
10479 {
10480 return (void*)entry_vkCmdCopyImage;
10481 }
10482 if (!strcmp(name, "vkCmdBlitImage"))
10483 {
10484 return (void*)entry_vkCmdBlitImage;
10485 }
10486 if (!strcmp(name, "vkCmdCopyBufferToImage"))
10487 {
10488 return (void*)entry_vkCmdCopyBufferToImage;
10489 }
10490 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
10491 {
10492 return (void*)entry_vkCmdCopyImageToBuffer;
10493 }
10494 if (!strcmp(name, "vkCmdUpdateBuffer"))
10495 {
10496 return (void*)entry_vkCmdUpdateBuffer;
10497 }
10498 if (!strcmp(name, "vkCmdFillBuffer"))
10499 {
10500 return (void*)entry_vkCmdFillBuffer;
10501 }
10502 if (!strcmp(name, "vkCmdClearColorImage"))
10503 {
10504 return (void*)entry_vkCmdClearColorImage;
10505 }
10506 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
10507 {
10508 return (void*)entry_vkCmdClearDepthStencilImage;
10509 }
10510 if (!strcmp(name, "vkCmdClearAttachments"))
10511 {
10512 return (void*)entry_vkCmdClearAttachments;
10513 }
10514 if (!strcmp(name, "vkCmdResolveImage"))
10515 {
10516 return (void*)entry_vkCmdResolveImage;
10517 }
10518 if (!strcmp(name, "vkCmdSetEvent"))
10519 {
10520 return (void*)entry_vkCmdSetEvent;
10521 }
10522 if (!strcmp(name, "vkCmdResetEvent"))
10523 {
10524 return (void*)entry_vkCmdResetEvent;
10525 }
10526 if (!strcmp(name, "vkCmdWaitEvents"))
10527 {
10528 return (void*)entry_vkCmdWaitEvents;
10529 }
10530 if (!strcmp(name, "vkCmdPipelineBarrier"))
10531 {
10532 return (void*)entry_vkCmdPipelineBarrier;
10533 }
10534 if (!strcmp(name, "vkCmdBeginQuery"))
10535 {
10536 return (void*)entry_vkCmdBeginQuery;
10537 }
10538 if (!strcmp(name, "vkCmdEndQuery"))
10539 {
10540 return (void*)entry_vkCmdEndQuery;
10541 }
10542 if (!strcmp(name, "vkCmdResetQueryPool"))
10543 {
10544 return (void*)entry_vkCmdResetQueryPool;
10545 }
10546 if (!strcmp(name, "vkCmdWriteTimestamp"))
10547 {
10548 return (void*)entry_vkCmdWriteTimestamp;
10549 }
10550 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
10551 {
10552 return (void*)entry_vkCmdCopyQueryPoolResults;
10553 }
10554 if (!strcmp(name, "vkCmdPushConstants"))
10555 {
10556 return (void*)entry_vkCmdPushConstants;
10557 }
10558 if (!strcmp(name, "vkCmdBeginRenderPass"))
10559 {
10560 return (void*)entry_vkCmdBeginRenderPass;
10561 }
10562 if (!strcmp(name, "vkCmdNextSubpass"))
10563 {
10564 return (void*)entry_vkCmdNextSubpass;
10565 }
10566 if (!strcmp(name, "vkCmdEndRenderPass"))
10567 {
10568 return (void*)entry_vkCmdEndRenderPass;
10569 }
10570 if (!strcmp(name, "vkCmdExecuteCommands"))
10571 {
10572 return (void*)entry_vkCmdExecuteCommands;
10573 }
10574#endif
10575#ifdef VK_VERSION_1_1
10576 if (!strcmp(name, "vkEnumerateInstanceVersion"))
10577 {
10578 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
10579 }
10580 if (!strcmp(name, "vkBindBufferMemory2"))
10581 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010582 return (void*)dynCheck_entry_vkBindBufferMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010583 }
10584 if (!strcmp(name, "vkBindImageMemory2"))
10585 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010586 return (void*)dynCheck_entry_vkBindImageMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010587 }
10588 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
10589 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010590 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010591 }
10592 if (!strcmp(name, "vkCmdSetDeviceMask"))
10593 {
10594 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
10595 }
10596 if (!strcmp(name, "vkCmdDispatchBase"))
10597 {
10598 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
10599 }
10600 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
10601 {
10602 return nullptr;
10603 }
10604 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
10605 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010606 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010607 }
10608 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
10609 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010610 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010611 }
10612 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
10613 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010614 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010615 }
10616 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
10617 {
10618 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
10619 }
10620 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
10621 {
10622 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
10623 }
10624 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
10625 {
10626 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
10627 }
10628 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
10629 {
10630 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
10631 }
10632 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
10633 {
10634 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
10635 }
10636 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
10637 {
10638 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
10639 }
10640 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
10641 {
10642 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
10643 }
10644 if (!strcmp(name, "vkTrimCommandPool"))
10645 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010646 return (void*)dynCheck_entry_vkTrimCommandPool;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010647 }
10648 if (!strcmp(name, "vkGetDeviceQueue2"))
10649 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010650 return (void*)dynCheck_entry_vkGetDeviceQueue2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010651 }
10652 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
10653 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010654 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010655 }
10656 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
10657 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010658 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010659 }
10660 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
10661 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010662 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010663 }
10664 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
10665 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010666 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010667 }
10668 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
10669 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010670 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010671 }
10672 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
10673 {
10674 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
10675 }
10676 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
10677 {
10678 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
10679 }
10680 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
10681 {
10682 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
10683 }
10684 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
10685 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010686 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010687 }
10688#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010689#ifdef VK_VERSION_1_2
10690 if (!strcmp(name, "vkCmdDrawIndirectCount"))
10691 {
10692 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10693 return hasExt ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
10694 }
10695 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
10696 {
10697 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10698 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
10699 }
10700 if (!strcmp(name, "vkCreateRenderPass2"))
10701 {
10702 return (void*)dynCheck_entry_vkCreateRenderPass2;
10703 }
10704 if (!strcmp(name, "vkCmdBeginRenderPass2"))
10705 {
10706 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10707 return hasExt ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
10708 }
10709 if (!strcmp(name, "vkCmdNextSubpass2"))
10710 {
10711 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10712 return hasExt ? (void*)entry_vkCmdNextSubpass2 : nullptr;
10713 }
10714 if (!strcmp(name, "vkCmdEndRenderPass2"))
10715 {
10716 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10717 return hasExt ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
10718 }
10719 if (!strcmp(name, "vkResetQueryPool"))
10720 {
10721 return (void*)dynCheck_entry_vkResetQueryPool;
10722 }
10723 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
10724 {
10725 return (void*)dynCheck_entry_vkGetSemaphoreCounterValue;
10726 }
10727 if (!strcmp(name, "vkWaitSemaphores"))
10728 {
10729 return (void*)dynCheck_entry_vkWaitSemaphores;
10730 }
10731 if (!strcmp(name, "vkSignalSemaphore"))
10732 {
10733 return (void*)dynCheck_entry_vkSignalSemaphore;
10734 }
10735 if (!strcmp(name, "vkGetBufferDeviceAddress"))
10736 {
10737 return (void*)dynCheck_entry_vkGetBufferDeviceAddress;
10738 }
10739 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
10740 {
10741 return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddress;
10742 }
10743 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
10744 {
10745 return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress;
10746 }
10747#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010748#ifdef VK_KHR_surface
10749 if (!strcmp(name, "vkDestroySurfaceKHR"))
10750 {
10751 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10752 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
10753 }
10754 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
10755 {
10756 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10757 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
10758 }
10759 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
10760 {
10761 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10762 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
10763 }
10764 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
10765 {
10766 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10767 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
10768 }
10769 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
10770 {
10771 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10772 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
10773 }
10774#endif
10775#ifdef VK_KHR_swapchain
10776 if (!strcmp(name, "vkCreateSwapchainKHR"))
10777 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010778 return (void*)dynCheck_entry_vkCreateSwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010779 }
10780 if (!strcmp(name, "vkDestroySwapchainKHR"))
10781 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010782 return (void*)dynCheck_entry_vkDestroySwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010783 }
10784 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
10785 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010786 return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010787 }
10788 if (!strcmp(name, "vkAcquireNextImageKHR"))
10789 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010790 return (void*)dynCheck_entry_vkAcquireNextImageKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010791 }
10792 if (!strcmp(name, "vkQueuePresentKHR"))
10793 {
10794 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
10795 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
10796 }
10797 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
10798 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010799 return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010800 }
10801 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
10802 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010803 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010804 }
10805 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
10806 {
10807 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
10808 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
10809 }
10810 if (!strcmp(name, "vkAcquireNextImage2KHR"))
10811 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010812 return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010813 }
10814#endif
10815#ifdef VK_KHR_display
10816 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
10817 {
10818 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10819 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
10820 }
10821 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
10822 {
10823 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10824 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
10825 }
10826 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
10827 {
10828 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10829 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
10830 }
10831 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
10832 {
10833 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10834 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
10835 }
10836 if (!strcmp(name, "vkCreateDisplayModeKHR"))
10837 {
10838 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10839 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
10840 }
10841 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
10842 {
10843 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10844 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
10845 }
10846 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
10847 {
10848 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10849 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
10850 }
10851#endif
10852#ifdef VK_KHR_display_swapchain
10853 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
10854 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010855 return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010856 }
10857#endif
10858#ifdef VK_KHR_xlib_surface
10859 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
10860 {
10861 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
10862 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
10863 }
10864 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
10865 {
10866 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
10867 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
10868 }
10869#endif
10870#ifdef VK_KHR_xcb_surface
10871 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
10872 {
10873 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
10874 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
10875 }
10876 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
10877 {
10878 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
10879 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
10880 }
10881#endif
10882#ifdef VK_KHR_wayland_surface
10883 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
10884 {
10885 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
10886 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
10887 }
10888 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
10889 {
10890 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
10891 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
10892 }
10893#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010894#ifdef VK_KHR_android_surface
10895 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
10896 {
10897 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
10898 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
10899 }
10900#endif
10901#ifdef VK_KHR_win32_surface
10902 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
10903 {
10904 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
10905 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
10906 }
10907 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
10908 {
10909 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
10910 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
10911 }
10912#endif
10913#ifdef VK_KHR_get_physical_device_properties2
10914 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
10915 {
10916 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10917 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
10918 }
10919 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
10920 {
10921 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10922 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
10923 }
10924 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
10925 {
10926 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10927 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
10928 }
10929 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
10930 {
10931 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10932 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
10933 }
10934 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
10935 {
10936 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10937 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
10938 }
10939 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
10940 {
10941 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10942 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
10943 }
10944 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
10945 {
10946 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10947 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
10948 }
10949#endif
10950#ifdef VK_KHR_device_group
10951 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
10952 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010953 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010954 }
10955 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
10956 {
10957 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
10958 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
10959 }
10960 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
10961 {
10962 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
10963 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
10964 }
10965#endif
10966#ifdef VK_KHR_maintenance1
10967 if (!strcmp(name, "vkTrimCommandPoolKHR"))
10968 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010969 return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010970 }
10971#endif
10972#ifdef VK_KHR_device_group_creation
10973 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
10974 {
10975 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
10976 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
10977 }
10978#endif
10979#ifdef VK_KHR_external_memory_capabilities
10980 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
10981 {
10982 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
10983 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
10984 }
10985#endif
10986#ifdef VK_KHR_external_memory_win32
10987 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
10988 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010989 return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010990 }
10991 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
10992 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010993 return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010994 }
10995#endif
10996#ifdef VK_KHR_external_memory_fd
10997 if (!strcmp(name, "vkGetMemoryFdKHR"))
10998 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010999 return (void*)dynCheck_entry_vkGetMemoryFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011000 }
11001 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
11002 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011003 return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011004 }
11005#endif
11006#ifdef VK_KHR_external_semaphore_capabilities
11007 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
11008 {
11009 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
11010 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
11011 }
11012#endif
11013#ifdef VK_KHR_external_semaphore_win32
11014 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
11015 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011016 return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011017 }
11018 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
11019 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011020 return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011021 }
11022#endif
11023#ifdef VK_KHR_external_semaphore_fd
11024 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
11025 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011026 return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011027 }
11028 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
11029 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011030 return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011031 }
11032#endif
11033#ifdef VK_KHR_push_descriptor
11034 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
11035 {
11036 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
11037 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
11038 }
11039 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
11040 {
11041 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
11042 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
11043 }
11044#endif
11045#ifdef VK_KHR_descriptor_update_template
11046 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
11047 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011048 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011049 }
11050 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
11051 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011052 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011053 }
11054 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
11055 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011056 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011057 }
11058#endif
11059#ifdef VK_KHR_create_renderpass2
11060 if (!strcmp(name, "vkCreateRenderPass2KHR"))
11061 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011062 return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011063 }
11064 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
11065 {
11066 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
11067 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
11068 }
11069 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
11070 {
11071 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
11072 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
11073 }
11074 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
11075 {
11076 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
11077 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
11078 }
11079#endif
11080#ifdef VK_KHR_shared_presentable_image
11081 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
11082 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011083 return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011084 }
11085#endif
11086#ifdef VK_KHR_external_fence_capabilities
11087 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
11088 {
11089 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
11090 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
11091 }
11092#endif
11093#ifdef VK_KHR_external_fence_win32
11094 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
11095 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011096 return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011097 }
11098 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
11099 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011100 return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011101 }
11102#endif
11103#ifdef VK_KHR_external_fence_fd
11104 if (!strcmp(name, "vkImportFenceFdKHR"))
11105 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011106 return (void*)dynCheck_entry_vkImportFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011107 }
11108 if (!strcmp(name, "vkGetFenceFdKHR"))
11109 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011110 return (void*)dynCheck_entry_vkGetFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011111 }
11112#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011113#ifdef VK_KHR_performance_query
11114 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
11115 {
11116 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
11117 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
11118 }
11119 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
11120 {
11121 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
11122 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
11123 }
11124 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
11125 {
11126 return (void*)dynCheck_entry_vkAcquireProfilingLockKHR;
11127 }
11128 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
11129 {
11130 return (void*)dynCheck_entry_vkReleaseProfilingLockKHR;
11131 }
11132#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011133#ifdef VK_KHR_get_surface_capabilities2
11134 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
11135 {
11136 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
11137 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
11138 }
11139 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
11140 {
11141 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
11142 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
11143 }
11144#endif
11145#ifdef VK_KHR_get_display_properties2
11146 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
11147 {
11148 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11149 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
11150 }
11151 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
11152 {
11153 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11154 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
11155 }
11156 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
11157 {
11158 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11159 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
11160 }
11161 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
11162 {
11163 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11164 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
11165 }
11166#endif
11167#ifdef VK_KHR_get_memory_requirements2
11168 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
11169 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011170 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011171 }
11172 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
11173 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011174 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011175 }
11176 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
11177 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011178 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011179 }
11180#endif
11181#ifdef VK_KHR_sampler_ycbcr_conversion
11182 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
11183 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011184 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011185 }
11186 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
11187 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011188 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011189 }
11190#endif
11191#ifdef VK_KHR_bind_memory2
11192 if (!strcmp(name, "vkBindBufferMemory2KHR"))
11193 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011194 return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011195 }
11196 if (!strcmp(name, "vkBindImageMemory2KHR"))
11197 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011198 return (void*)dynCheck_entry_vkBindImageMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011199 }
11200#endif
11201#ifdef VK_KHR_maintenance3
11202 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
11203 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011204 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011205 }
11206#endif
11207#ifdef VK_KHR_draw_indirect_count
11208 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
11209 {
11210 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
11211 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
11212 }
11213 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
11214 {
11215 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
11216 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
11217 }
11218#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011219#ifdef VK_KHR_timeline_semaphore
11220 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
11221 {
11222 return (void*)dynCheck_entry_vkGetSemaphoreCounterValueKHR;
11223 }
11224 if (!strcmp(name, "vkWaitSemaphoresKHR"))
11225 {
11226 return (void*)dynCheck_entry_vkWaitSemaphoresKHR;
11227 }
11228 if (!strcmp(name, "vkSignalSemaphoreKHR"))
11229 {
11230 return (void*)dynCheck_entry_vkSignalSemaphoreKHR;
11231 }
11232#endif
11233#ifdef VK_KHR_fragment_shading_rate
11234 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
11235 {
11236 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_fragment_shading_rate");
11237 return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
11238 }
11239 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
11240 {
11241 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_fragment_shading_rate");
11242 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateKHR : nullptr;
11243 }
11244#endif
11245#ifdef VK_KHR_buffer_device_address
11246 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
11247 {
11248 return (void*)dynCheck_entry_vkGetBufferDeviceAddressKHR;
11249 }
11250 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
11251 {
11252 return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR;
11253 }
11254 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
11255 {
11256 return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR;
11257 }
11258#endif
11259#ifdef VK_KHR_deferred_host_operations
11260 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
11261 {
11262 return (void*)dynCheck_entry_vkCreateDeferredOperationKHR;
11263 }
11264 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
11265 {
11266 return (void*)dynCheck_entry_vkDestroyDeferredOperationKHR;
11267 }
11268 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
11269 {
11270 return (void*)dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR;
11271 }
11272 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
11273 {
11274 return (void*)dynCheck_entry_vkGetDeferredOperationResultKHR;
11275 }
11276 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
11277 {
11278 return (void*)dynCheck_entry_vkDeferredOperationJoinKHR;
11279 }
11280#endif
11281#ifdef VK_KHR_pipeline_executable_properties
11282 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
11283 {
11284 return (void*)dynCheck_entry_vkGetPipelineExecutablePropertiesKHR;
11285 }
11286 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
11287 {
11288 return (void*)dynCheck_entry_vkGetPipelineExecutableStatisticsKHR;
11289 }
11290 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
11291 {
11292 return (void*)dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR;
11293 }
11294#endif
11295#ifdef VK_KHR_copy_commands2
11296 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
11297 {
11298 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11299 return hasExt ? (void*)entry_vkCmdCopyBuffer2KHR : nullptr;
11300 }
11301 if (!strcmp(name, "vkCmdCopyImage2KHR"))
11302 {
11303 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11304 return hasExt ? (void*)entry_vkCmdCopyImage2KHR : nullptr;
11305 }
11306 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
11307 {
11308 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11309 return hasExt ? (void*)entry_vkCmdCopyBufferToImage2KHR : nullptr;
11310 }
11311 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
11312 {
11313 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11314 return hasExt ? (void*)entry_vkCmdCopyImageToBuffer2KHR : nullptr;
11315 }
11316 if (!strcmp(name, "vkCmdBlitImage2KHR"))
11317 {
11318 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11319 return hasExt ? (void*)entry_vkCmdBlitImage2KHR : nullptr;
11320 }
11321 if (!strcmp(name, "vkCmdResolveImage2KHR"))
11322 {
11323 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11324 return hasExt ? (void*)entry_vkCmdResolveImage2KHR : nullptr;
11325 }
11326#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011327#ifdef VK_ANDROID_native_buffer
11328 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
11329 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011330 return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011331 }
11332 if (!strcmp(name, "vkAcquireImageANDROID"))
11333 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011334 return (void*)dynCheck_entry_vkAcquireImageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011335 }
11336 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
11337 {
11338 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
11339 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
11340 }
11341#endif
11342#ifdef VK_EXT_debug_report
11343 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
11344 {
11345 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
11346 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
11347 }
11348 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
11349 {
11350 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
11351 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
11352 }
11353 if (!strcmp(name, "vkDebugReportMessageEXT"))
11354 {
11355 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
11356 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
11357 }
11358#endif
11359#ifdef VK_EXT_debug_marker
11360 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
11361 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011362 return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011363 }
11364 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
11365 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011366 return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011367 }
11368 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
11369 {
11370 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
11371 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
11372 }
11373 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
11374 {
11375 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
11376 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
11377 }
11378 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
11379 {
11380 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
11381 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
11382 }
11383#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011384#ifdef VK_EXT_transform_feedback
11385 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
11386 {
11387 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11388 return hasExt ? (void*)entry_vkCmdBindTransformFeedbackBuffersEXT : nullptr;
11389 }
11390 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
11391 {
11392 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11393 return hasExt ? (void*)entry_vkCmdBeginTransformFeedbackEXT : nullptr;
11394 }
11395 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
11396 {
11397 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11398 return hasExt ? (void*)entry_vkCmdEndTransformFeedbackEXT : nullptr;
11399 }
11400 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
11401 {
11402 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11403 return hasExt ? (void*)entry_vkCmdBeginQueryIndexedEXT : nullptr;
11404 }
11405 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
11406 {
11407 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11408 return hasExt ? (void*)entry_vkCmdEndQueryIndexedEXT : nullptr;
11409 }
11410 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
11411 {
11412 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11413 return hasExt ? (void*)entry_vkCmdDrawIndirectByteCountEXT : nullptr;
11414 }
11415#endif
11416#ifdef VK_NVX_image_view_handle
11417 if (!strcmp(name, "vkGetImageViewHandleNVX"))
11418 {
11419 return (void*)dynCheck_entry_vkGetImageViewHandleNVX;
11420 }
11421 if (!strcmp(name, "vkGetImageViewAddressNVX"))
11422 {
11423 return (void*)dynCheck_entry_vkGetImageViewAddressNVX;
11424 }
11425#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011426#ifdef VK_AMD_draw_indirect_count
11427 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
11428 {
11429 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
11430 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
11431 }
11432 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
11433 {
11434 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
11435 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
11436 }
11437#endif
11438#ifdef VK_AMD_shader_info
11439 if (!strcmp(name, "vkGetShaderInfoAMD"))
11440 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011441 return (void*)dynCheck_entry_vkGetShaderInfoAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011442 }
11443#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011444#ifdef VK_GGP_stream_descriptor_surface
11445 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
11446 {
11447 bool hasExt = resources->hasInstanceExtension(instance, "VK_GGP_stream_descriptor_surface");
11448 return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
11449 }
11450#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011451#ifdef VK_NV_external_memory_capabilities
11452 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
11453 {
11454 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
11455 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
11456 }
11457#endif
11458#ifdef VK_NV_external_memory_win32
11459 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
11460 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011461 return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011462 }
11463#endif
11464#ifdef VK_NN_vi_surface
11465 if (!strcmp(name, "vkCreateViSurfaceNN"))
11466 {
11467 bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
11468 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
11469 }
11470#endif
11471#ifdef VK_EXT_conditional_rendering
11472 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
11473 {
11474 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
11475 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
11476 }
11477 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
11478 {
11479 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
11480 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
11481 }
11482#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011483#ifdef VK_NV_clip_space_w_scaling
11484 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
11485 {
11486 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling");
11487 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
11488 }
11489#endif
11490#ifdef VK_EXT_direct_mode_display
11491 if (!strcmp(name, "vkReleaseDisplayEXT"))
11492 {
11493 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
11494 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
11495 }
11496#endif
11497#ifdef VK_EXT_acquire_xlib_display
11498 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
11499 {
11500 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
11501 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
11502 }
11503 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
11504 {
11505 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
11506 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
11507 }
11508#endif
11509#ifdef VK_EXT_display_surface_counter
11510 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
11511 {
11512 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
11513 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
11514 }
11515#endif
11516#ifdef VK_EXT_display_control
11517 if (!strcmp(name, "vkDisplayPowerControlEXT"))
11518 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011519 return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011520 }
11521 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
11522 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011523 return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011524 }
11525 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
11526 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011527 return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011528 }
11529 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
11530 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011531 return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011532 }
11533#endif
11534#ifdef VK_GOOGLE_display_timing
11535 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
11536 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011537 return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011538 }
11539 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
11540 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011541 return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011542 }
11543#endif
11544#ifdef VK_EXT_discard_rectangles
11545 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
11546 {
11547 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles");
11548 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
11549 }
11550#endif
11551#ifdef VK_EXT_hdr_metadata
11552 if (!strcmp(name, "vkSetHdrMetadataEXT"))
11553 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011554 return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011555 }
11556#endif
11557#ifdef VK_MVK_ios_surface
11558 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
11559 {
11560 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
11561 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
11562 }
11563#endif
11564#ifdef VK_MVK_macos_surface
11565 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
11566 {
11567 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
11568 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
11569 }
11570#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011571#ifdef VK_MVK_moltenvk
11572 if (!strcmp(name, "vkGetMTLDeviceMVK"))
11573 {
11574 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11575 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
11576 }
11577 if (!strcmp(name, "vkSetMTLTextureMVK"))
11578 {
11579 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11580 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
11581 }
11582 if (!strcmp(name, "vkGetMTLTextureMVK"))
11583 {
11584 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11585 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
11586 }
11587 if (!strcmp(name, "vkGetMTLBufferMVK"))
11588 {
11589 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11590 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
11591 }
11592 if (!strcmp(name, "vkUseIOSurfaceMVK"))
11593 {
11594 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11595 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
11596 }
11597 if (!strcmp(name, "vkGetIOSurfaceMVK"))
11598 {
11599 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11600 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
11601 }
11602#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011603#ifdef VK_EXT_debug_utils
11604 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
11605 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011606 return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011607 }
11608 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
11609 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011610 return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011611 }
11612 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
11613 {
11614 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11615 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
11616 }
11617 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
11618 {
11619 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11620 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
11621 }
11622 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
11623 {
11624 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11625 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
11626 }
11627 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
11628 {
11629 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11630 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
11631 }
11632 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
11633 {
11634 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11635 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
11636 }
11637 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
11638 {
11639 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11640 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
11641 }
11642 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
11643 {
11644 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11645 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
11646 }
11647 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
11648 {
11649 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11650 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
11651 }
11652 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
11653 {
11654 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11655 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
11656 }
11657#endif
11658#ifdef VK_ANDROID_external_memory_android_hardware_buffer
11659 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
11660 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011661 return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011662 }
11663 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
11664 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011665 return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011666 }
11667#endif
11668#ifdef VK_EXT_sample_locations
11669 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
11670 {
11671 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
11672 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
11673 }
11674 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
11675 {
11676 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
11677 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
11678 }
11679#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011680#ifdef VK_EXT_image_drm_format_modifier
11681 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
11682 {
11683 return (void*)dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT;
11684 }
11685#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011686#ifdef VK_EXT_validation_cache
11687 if (!strcmp(name, "vkCreateValidationCacheEXT"))
11688 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011689 return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011690 }
11691 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
11692 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011693 return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011694 }
11695 if (!strcmp(name, "vkMergeValidationCachesEXT"))
11696 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011697 return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011698 }
11699 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
11700 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011701 return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011702 }
11703#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011704#ifdef VK_NV_shading_rate_image
11705 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
11706 {
11707 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
11708 return hasExt ? (void*)entry_vkCmdBindShadingRateImageNV : nullptr;
11709 }
11710 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
11711 {
11712 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
11713 return hasExt ? (void*)entry_vkCmdSetViewportShadingRatePaletteNV : nullptr;
11714 }
11715 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
11716 {
11717 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
11718 return hasExt ? (void*)entry_vkCmdSetCoarseSampleOrderNV : nullptr;
11719 }
11720#endif
11721#ifdef VK_NV_ray_tracing
11722 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
11723 {
11724 return (void*)dynCheck_entry_vkCreateAccelerationStructureNV;
11725 }
11726 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
11727 {
11728 return (void*)dynCheck_entry_vkDestroyAccelerationStructureNV;
11729 }
11730 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
11731 {
11732 return (void*)dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV;
11733 }
11734 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
11735 {
11736 return (void*)dynCheck_entry_vkBindAccelerationStructureMemoryNV;
11737 }
11738 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
11739 {
11740 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11741 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructureNV : nullptr;
11742 }
11743 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
11744 {
11745 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11746 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureNV : nullptr;
11747 }
11748 if (!strcmp(name, "vkCmdTraceRaysNV"))
11749 {
11750 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11751 return hasExt ? (void*)entry_vkCmdTraceRaysNV : nullptr;
11752 }
11753 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
11754 {
11755 return (void*)dynCheck_entry_vkCreateRayTracingPipelinesNV;
11756 }
11757 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
11758 {
11759 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR;
11760 }
11761 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
11762 {
11763 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV;
11764 }
11765 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
11766 {
11767 return (void*)dynCheck_entry_vkGetAccelerationStructureHandleNV;
11768 }
11769 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
11770 {
11771 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11772 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesNV : nullptr;
11773 }
11774 if (!strcmp(name, "vkCompileDeferredNV"))
11775 {
11776 return (void*)dynCheck_entry_vkCompileDeferredNV;
11777 }
11778#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011779#ifdef VK_EXT_external_memory_host
11780 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
11781 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011782 return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011783 }
11784#endif
11785#ifdef VK_AMD_buffer_marker
11786 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
11787 {
11788 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker");
11789 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
11790 }
11791#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011792#ifdef VK_EXT_calibrated_timestamps
11793 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
11794 {
11795 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_calibrated_timestamps");
11796 return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
11797 }
11798 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
11799 {
11800 return (void*)dynCheck_entry_vkGetCalibratedTimestampsEXT;
11801 }
11802#endif
11803#ifdef VK_NV_mesh_shader
11804 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
11805 {
11806 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
11807 return hasExt ? (void*)entry_vkCmdDrawMeshTasksNV : nullptr;
11808 }
11809 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
11810 {
11811 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
11812 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectNV : nullptr;
11813 }
11814 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
11815 {
11816 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
11817 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountNV : nullptr;
11818 }
11819#endif
11820#ifdef VK_NV_scissor_exclusive
11821 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
11822 {
11823 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_scissor_exclusive");
11824 return hasExt ? (void*)entry_vkCmdSetExclusiveScissorNV : nullptr;
11825 }
11826#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011827#ifdef VK_NV_device_diagnostic_checkpoints
11828 if (!strcmp(name, "vkCmdSetCheckpointNV"))
11829 {
11830 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
11831 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
11832 }
11833 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
11834 {
11835 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
11836 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
11837 }
11838#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011839#ifdef VK_INTEL_performance_query
11840 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011841 {
Yilong Lia8d45f12021-02-07 02:30:21 -080011842 return (void*)dynCheck_entry_vkInitializePerformanceApiINTEL;
11843 }
11844 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
11845 {
11846 return (void*)dynCheck_entry_vkUninitializePerformanceApiINTEL;
11847 }
11848 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
11849 {
11850 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11851 return hasExt ? (void*)entry_vkCmdSetPerformanceMarkerINTEL : nullptr;
11852 }
11853 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
11854 {
11855 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11856 return hasExt ? (void*)entry_vkCmdSetPerformanceStreamMarkerINTEL : nullptr;
11857 }
11858 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
11859 {
11860 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11861 return hasExt ? (void*)entry_vkCmdSetPerformanceOverrideINTEL : nullptr;
11862 }
11863 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
11864 {
11865 return (void*)dynCheck_entry_vkAcquirePerformanceConfigurationINTEL;
11866 }
11867 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
11868 {
11869 return (void*)dynCheck_entry_vkReleasePerformanceConfigurationINTEL;
11870 }
11871 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
11872 {
11873 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11874 return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
11875 }
11876 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
11877 {
11878 return (void*)dynCheck_entry_vkGetPerformanceParameterINTEL;
11879 }
11880#endif
11881#ifdef VK_AMD_display_native_hdr
11882 if (!strcmp(name, "vkSetLocalDimmingAMD"))
11883 {
11884 return (void*)dynCheck_entry_vkSetLocalDimmingAMD;
11885 }
11886#endif
11887#ifdef VK_FUCHSIA_imagepipe_surface
11888 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
11889 {
11890 bool hasExt = resources->hasInstanceExtension(instance, "VK_FUCHSIA_imagepipe_surface");
11891 return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
11892 }
11893#endif
11894#ifdef VK_EXT_metal_surface
11895 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
11896 {
11897 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_metal_surface");
11898 return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011899 }
11900#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011901#ifdef VK_EXT_buffer_device_address
11902 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
11903 {
11904 return (void*)dynCheck_entry_vkGetBufferDeviceAddressEXT;
11905 }
11906#endif
11907#ifdef VK_EXT_tooling_info
11908 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
11909 {
11910 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_tooling_info");
11911 return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
11912 }
11913#endif
11914#ifdef VK_NV_cooperative_matrix
11915 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
11916 {
11917 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_cooperative_matrix");
11918 return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
11919 }
11920#endif
11921#ifdef VK_NV_coverage_reduction_mode
11922 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
11923 {
11924 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_coverage_reduction_mode");
11925 return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
11926 }
11927#endif
11928#ifdef VK_EXT_full_screen_exclusive
11929 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
11930 {
11931 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_full_screen_exclusive");
11932 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
11933 }
11934 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
11935 {
11936 return (void*)dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT;
11937 }
11938 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
11939 {
11940 return (void*)dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT;
11941 }
11942 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
11943 {
11944 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT;
11945 }
11946#endif
11947#ifdef VK_EXT_headless_surface
11948 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
11949 {
11950 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_headless_surface");
11951 return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
11952 }
11953#endif
11954#ifdef VK_EXT_line_rasterization
11955 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
11956 {
11957 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_line_rasterization");
11958 return hasExt ? (void*)entry_vkCmdSetLineStippleEXT : nullptr;
11959 }
11960#endif
11961#ifdef VK_EXT_host_query_reset
11962 if (!strcmp(name, "vkResetQueryPoolEXT"))
11963 {
11964 return (void*)dynCheck_entry_vkResetQueryPoolEXT;
11965 }
11966#endif
11967#ifdef VK_EXT_extended_dynamic_state
11968 if (!strcmp(name, "vkCmdSetCullModeEXT"))
11969 {
11970 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11971 return hasExt ? (void*)entry_vkCmdSetCullModeEXT : nullptr;
11972 }
11973 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
11974 {
11975 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11976 return hasExt ? (void*)entry_vkCmdSetFrontFaceEXT : nullptr;
11977 }
11978 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
11979 {
11980 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11981 return hasExt ? (void*)entry_vkCmdSetPrimitiveTopologyEXT : nullptr;
11982 }
11983 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
11984 {
11985 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11986 return hasExt ? (void*)entry_vkCmdSetViewportWithCountEXT : nullptr;
11987 }
11988 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
11989 {
11990 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11991 return hasExt ? (void*)entry_vkCmdSetScissorWithCountEXT : nullptr;
11992 }
11993 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
11994 {
11995 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11996 return hasExt ? (void*)entry_vkCmdBindVertexBuffers2EXT : nullptr;
11997 }
11998 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
11999 {
12000 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12001 return hasExt ? (void*)entry_vkCmdSetDepthTestEnableEXT : nullptr;
12002 }
12003 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
12004 {
12005 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12006 return hasExt ? (void*)entry_vkCmdSetDepthWriteEnableEXT : nullptr;
12007 }
12008 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
12009 {
12010 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12011 return hasExt ? (void*)entry_vkCmdSetDepthCompareOpEXT : nullptr;
12012 }
12013 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
12014 {
12015 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12016 return hasExt ? (void*)entry_vkCmdSetDepthBoundsTestEnableEXT : nullptr;
12017 }
12018 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
12019 {
12020 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12021 return hasExt ? (void*)entry_vkCmdSetStencilTestEnableEXT : nullptr;
12022 }
12023 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
12024 {
12025 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12026 return hasExt ? (void*)entry_vkCmdSetStencilOpEXT : nullptr;
12027 }
12028#endif
12029#ifdef VK_NV_device_generated_commands
12030 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
12031 {
12032 return (void*)dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV;
12033 }
12034 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
12035 {
12036 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
12037 return hasExt ? (void*)entry_vkCmdPreprocessGeneratedCommandsNV : nullptr;
12038 }
12039 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
12040 {
12041 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
12042 return hasExt ? (void*)entry_vkCmdExecuteGeneratedCommandsNV : nullptr;
12043 }
12044 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
12045 {
12046 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
12047 return hasExt ? (void*)entry_vkCmdBindPipelineShaderGroupNV : nullptr;
12048 }
12049 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
12050 {
12051 return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNV;
12052 }
12053 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
12054 {
12055 return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNV;
12056 }
12057#endif
12058#ifdef VK_EXT_private_data
12059 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
12060 {
12061 return (void*)dynCheck_entry_vkCreatePrivateDataSlotEXT;
12062 }
12063 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
12064 {
12065 return (void*)dynCheck_entry_vkDestroyPrivateDataSlotEXT;
12066 }
12067 if (!strcmp(name, "vkSetPrivateDataEXT"))
12068 {
12069 return (void*)dynCheck_entry_vkSetPrivateDataEXT;
12070 }
12071 if (!strcmp(name, "vkGetPrivateDataEXT"))
12072 {
12073 return (void*)dynCheck_entry_vkGetPrivateDataEXT;
12074 }
12075#endif
12076#ifdef VK_NV_fragment_shading_rate_enums
12077 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
12078 {
12079 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_fragment_shading_rate_enums");
12080 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateEnumNV : nullptr;
12081 }
12082#endif
12083#ifdef VK_EXT_directfb_surface
12084 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
12085 {
12086 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
12087 return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
12088 }
12089 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
12090 {
12091 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
12092 return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
12093 }
12094#endif
Yilong Li71c43c52021-02-10 02:50:43 -080012095#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -070012096 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
12097 {
12098 return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
12099 }
12100 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
12101 {
12102 return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
12103 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012104 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
12105 {
12106 return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
12107 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070012108 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
12109 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012110 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070012111 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012112 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
12113 {
Yilong Li71c43c52021-02-10 02:50:43 -080012114 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012115 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
12116 }
12117 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
12118 {
Yilong Li71c43c52021-02-10 02:50:43 -080012119 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012120 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
12121 }
12122 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
12123 {
Yilong Li71c43c52021-02-10 02:50:43 -080012124 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012125 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
12126 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070012127 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
12128 {
Yilong Li71c43c52021-02-10 02:50:43 -080012129 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yang39a276e2019-06-17 13:27:22 -070012130 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
12131 }
Lingfeng Yang87f11962019-06-27 16:28:53 +000012132 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
12133 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012134 return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +000012135 }
12136 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
12137 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012138 return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +000012139 }
Lingfeng Yang4c542412020-02-04 18:18:32 -080012140 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
12141 {
12142 return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE;
12143 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070012144 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
12145 {
12146 return (void*)dynCheck_entry_vkFreeMemorySyncGOOGLE;
12147 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012148 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
12149 {
Yilong Li71c43c52021-02-10 02:50:43 -080012150 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012151 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
12152 }
12153 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
12154 {
Yilong Li71c43c52021-02-10 02:50:43 -080012155 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012156 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
12157 }
12158 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
12159 {
Yilong Li71c43c52021-02-10 02:50:43 -080012160 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012161 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
12162 }
12163 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
12164 {
Yilong Li71c43c52021-02-10 02:50:43 -080012165 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012166 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
12167 }
Yilong Lia48b0102020-09-15 15:08:28 -070012168 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
12169 {
12170 return (void*)dynCheck_entry_vkGetLinearImageLayoutGOOGLE;
12171 }
Lingfeng Yangded34672021-01-22 23:17:47 -080012172 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
12173 {
Yilong Li71c43c52021-02-10 02:50:43 -080012174 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangded34672021-01-22 23:17:47 -080012175 return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
12176 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080012177 if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
12178 {
12179 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
12180 return hasExt ? (void*)entry_vkQueueCommitDescriptorSetUpdatesGOOGLE : nullptr;
12181 }
12182 if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
12183 {
12184 return (void*)dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE;
12185 }
Lingfeng Yangded34672021-01-22 23:17:47 -080012186#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012187#ifdef VK_KHR_acceleration_structure
12188 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
12189 {
12190 return (void*)dynCheck_entry_vkCreateAccelerationStructureKHR;
12191 }
12192 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
12193 {
12194 return (void*)dynCheck_entry_vkDestroyAccelerationStructureKHR;
12195 }
12196 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
12197 {
12198 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12199 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresKHR : nullptr;
12200 }
12201 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
12202 {
12203 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12204 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresIndirectKHR : nullptr;
12205 }
12206 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
12207 {
12208 return (void*)dynCheck_entry_vkBuildAccelerationStructuresKHR;
12209 }
12210 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
12211 {
12212 return (void*)dynCheck_entry_vkCopyAccelerationStructureKHR;
12213 }
12214 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
12215 {
12216 return (void*)dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR;
12217 }
12218 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
12219 {
12220 return (void*)dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR;
12221 }
12222 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
12223 {
12224 return (void*)dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR;
12225 }
12226 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
12227 {
12228 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12229 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureKHR : nullptr;
12230 }
12231 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
12232 {
12233 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12234 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureToMemoryKHR : nullptr;
12235 }
12236 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
12237 {
12238 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12239 return hasExt ? (void*)entry_vkCmdCopyMemoryToAccelerationStructureKHR : nullptr;
12240 }
12241 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
12242 {
12243 return (void*)dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR;
12244 }
12245 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
12246 {
12247 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12248 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesKHR : nullptr;
12249 }
12250 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
12251 {
12252 return (void*)dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR;
12253 }
12254 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
12255 {
12256 return (void*)dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR;
12257 }
12258#endif
12259#ifdef VK_KHR_ray_tracing_pipeline
12260 if (!strcmp(name, "vkCmdTraceRaysKHR"))
12261 {
12262 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
12263 return hasExt ? (void*)entry_vkCmdTraceRaysKHR : nullptr;
12264 }
12265 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
12266 {
12267 return (void*)dynCheck_entry_vkCreateRayTracingPipelinesKHR;
12268 }
12269 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
12270 {
12271 return (void*)dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR;
12272 }
12273 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
12274 {
12275 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
12276 return hasExt ? (void*)entry_vkCmdTraceRaysIndirectKHR : nullptr;
12277 }
12278 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
12279 {
12280 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR;
12281 }
12282 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
12283 {
12284 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
12285 return hasExt ? (void*)entry_vkCmdSetRayTracingPipelineStackSizeKHR : nullptr;
12286 }
12287#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012288 return nullptr;
12289}
12290void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
12291 auto resources = ResourceTracker::get();
12292 bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
12293#ifdef VK_VERSION_1_0
12294 if (!strcmp(name, "vkCreateInstance"))
12295 {
12296 return (void*)entry_vkCreateInstance;
12297 }
12298 if (!strcmp(name, "vkDestroyInstance"))
12299 {
12300 return (void*)entry_vkDestroyInstance;
12301 }
12302 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
12303 {
12304 return (void*)entry_vkEnumeratePhysicalDevices;
12305 }
12306 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
12307 {
12308 return (void*)entry_vkGetPhysicalDeviceFeatures;
12309 }
12310 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
12311 {
12312 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
12313 }
12314 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
12315 {
12316 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
12317 }
12318 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
12319 {
12320 return (void*)entry_vkGetPhysicalDeviceProperties;
12321 }
12322 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
12323 {
12324 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
12325 }
12326 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
12327 {
12328 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
12329 }
12330 if (!strcmp(name, "vkGetInstanceProcAddr"))
12331 {
12332 return (void*)entry_vkGetInstanceProcAddr;
12333 }
12334 if (!strcmp(name, "vkGetDeviceProcAddr"))
12335 {
12336 return (void*)entry_vkGetDeviceProcAddr;
12337 }
12338 if (!strcmp(name, "vkCreateDevice"))
12339 {
12340 return (void*)entry_vkCreateDevice;
12341 }
12342 if (!strcmp(name, "vkDestroyDevice"))
12343 {
12344 return (void*)entry_vkDestroyDevice;
12345 }
12346 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
12347 {
12348 return (void*)entry_vkEnumerateInstanceExtensionProperties;
12349 }
12350 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
12351 {
12352 return (void*)entry_vkEnumerateDeviceExtensionProperties;
12353 }
12354 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
12355 {
12356 return (void*)entry_vkEnumerateInstanceLayerProperties;
12357 }
12358 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
12359 {
12360 return (void*)entry_vkEnumerateDeviceLayerProperties;
12361 }
12362 if (!strcmp(name, "vkGetDeviceQueue"))
12363 {
12364 return (void*)entry_vkGetDeviceQueue;
12365 }
12366 if (!strcmp(name, "vkQueueSubmit"))
12367 {
12368 return (void*)entry_vkQueueSubmit;
12369 }
12370 if (!strcmp(name, "vkQueueWaitIdle"))
12371 {
12372 return (void*)entry_vkQueueWaitIdle;
12373 }
12374 if (!strcmp(name, "vkDeviceWaitIdle"))
12375 {
12376 return (void*)entry_vkDeviceWaitIdle;
12377 }
12378 if (!strcmp(name, "vkAllocateMemory"))
12379 {
12380 return (void*)entry_vkAllocateMemory;
12381 }
12382 if (!strcmp(name, "vkFreeMemory"))
12383 {
12384 return (void*)entry_vkFreeMemory;
12385 }
12386 if (!strcmp(name, "vkMapMemory"))
12387 {
12388 return (void*)entry_vkMapMemory;
12389 }
12390 if (!strcmp(name, "vkUnmapMemory"))
12391 {
12392 return (void*)entry_vkUnmapMemory;
12393 }
12394 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
12395 {
12396 return (void*)entry_vkFlushMappedMemoryRanges;
12397 }
12398 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
12399 {
12400 return (void*)entry_vkInvalidateMappedMemoryRanges;
12401 }
12402 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
12403 {
12404 return (void*)entry_vkGetDeviceMemoryCommitment;
12405 }
12406 if (!strcmp(name, "vkBindBufferMemory"))
12407 {
12408 return (void*)entry_vkBindBufferMemory;
12409 }
12410 if (!strcmp(name, "vkBindImageMemory"))
12411 {
12412 return (void*)entry_vkBindImageMemory;
12413 }
12414 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
12415 {
12416 return (void*)entry_vkGetBufferMemoryRequirements;
12417 }
12418 if (!strcmp(name, "vkGetImageMemoryRequirements"))
12419 {
12420 return (void*)entry_vkGetImageMemoryRequirements;
12421 }
12422 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
12423 {
12424 return (void*)entry_vkGetImageSparseMemoryRequirements;
12425 }
12426 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
12427 {
12428 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
12429 }
12430 if (!strcmp(name, "vkQueueBindSparse"))
12431 {
12432 return (void*)entry_vkQueueBindSparse;
12433 }
12434 if (!strcmp(name, "vkCreateFence"))
12435 {
12436 return (void*)entry_vkCreateFence;
12437 }
12438 if (!strcmp(name, "vkDestroyFence"))
12439 {
12440 return (void*)entry_vkDestroyFence;
12441 }
12442 if (!strcmp(name, "vkResetFences"))
12443 {
12444 return (void*)entry_vkResetFences;
12445 }
12446 if (!strcmp(name, "vkGetFenceStatus"))
12447 {
12448 return (void*)entry_vkGetFenceStatus;
12449 }
12450 if (!strcmp(name, "vkWaitForFences"))
12451 {
12452 return (void*)entry_vkWaitForFences;
12453 }
12454 if (!strcmp(name, "vkCreateSemaphore"))
12455 {
12456 return (void*)entry_vkCreateSemaphore;
12457 }
12458 if (!strcmp(name, "vkDestroySemaphore"))
12459 {
12460 return (void*)entry_vkDestroySemaphore;
12461 }
12462 if (!strcmp(name, "vkCreateEvent"))
12463 {
12464 return (void*)entry_vkCreateEvent;
12465 }
12466 if (!strcmp(name, "vkDestroyEvent"))
12467 {
12468 return (void*)entry_vkDestroyEvent;
12469 }
12470 if (!strcmp(name, "vkGetEventStatus"))
12471 {
12472 return (void*)entry_vkGetEventStatus;
12473 }
12474 if (!strcmp(name, "vkSetEvent"))
12475 {
12476 return (void*)entry_vkSetEvent;
12477 }
12478 if (!strcmp(name, "vkResetEvent"))
12479 {
12480 return (void*)entry_vkResetEvent;
12481 }
12482 if (!strcmp(name, "vkCreateQueryPool"))
12483 {
12484 return (void*)entry_vkCreateQueryPool;
12485 }
12486 if (!strcmp(name, "vkDestroyQueryPool"))
12487 {
12488 return (void*)entry_vkDestroyQueryPool;
12489 }
12490 if (!strcmp(name, "vkGetQueryPoolResults"))
12491 {
12492 return (void*)entry_vkGetQueryPoolResults;
12493 }
12494 if (!strcmp(name, "vkCreateBuffer"))
12495 {
12496 return (void*)entry_vkCreateBuffer;
12497 }
12498 if (!strcmp(name, "vkDestroyBuffer"))
12499 {
12500 return (void*)entry_vkDestroyBuffer;
12501 }
12502 if (!strcmp(name, "vkCreateBufferView"))
12503 {
12504 return (void*)entry_vkCreateBufferView;
12505 }
12506 if (!strcmp(name, "vkDestroyBufferView"))
12507 {
12508 return (void*)entry_vkDestroyBufferView;
12509 }
12510 if (!strcmp(name, "vkCreateImage"))
12511 {
12512 return (void*)entry_vkCreateImage;
12513 }
12514 if (!strcmp(name, "vkDestroyImage"))
12515 {
12516 return (void*)entry_vkDestroyImage;
12517 }
12518 if (!strcmp(name, "vkGetImageSubresourceLayout"))
12519 {
12520 return (void*)entry_vkGetImageSubresourceLayout;
12521 }
12522 if (!strcmp(name, "vkCreateImageView"))
12523 {
12524 return (void*)entry_vkCreateImageView;
12525 }
12526 if (!strcmp(name, "vkDestroyImageView"))
12527 {
12528 return (void*)entry_vkDestroyImageView;
12529 }
12530 if (!strcmp(name, "vkCreateShaderModule"))
12531 {
12532 return (void*)entry_vkCreateShaderModule;
12533 }
12534 if (!strcmp(name, "vkDestroyShaderModule"))
12535 {
12536 return (void*)entry_vkDestroyShaderModule;
12537 }
12538 if (!strcmp(name, "vkCreatePipelineCache"))
12539 {
12540 return (void*)entry_vkCreatePipelineCache;
12541 }
12542 if (!strcmp(name, "vkDestroyPipelineCache"))
12543 {
12544 return (void*)entry_vkDestroyPipelineCache;
12545 }
12546 if (!strcmp(name, "vkGetPipelineCacheData"))
12547 {
12548 return (void*)entry_vkGetPipelineCacheData;
12549 }
12550 if (!strcmp(name, "vkMergePipelineCaches"))
12551 {
12552 return (void*)entry_vkMergePipelineCaches;
12553 }
12554 if (!strcmp(name, "vkCreateGraphicsPipelines"))
12555 {
12556 return (void*)entry_vkCreateGraphicsPipelines;
12557 }
12558 if (!strcmp(name, "vkCreateComputePipelines"))
12559 {
12560 return (void*)entry_vkCreateComputePipelines;
12561 }
12562 if (!strcmp(name, "vkDestroyPipeline"))
12563 {
12564 return (void*)entry_vkDestroyPipeline;
12565 }
12566 if (!strcmp(name, "vkCreatePipelineLayout"))
12567 {
12568 return (void*)entry_vkCreatePipelineLayout;
12569 }
12570 if (!strcmp(name, "vkDestroyPipelineLayout"))
12571 {
12572 return (void*)entry_vkDestroyPipelineLayout;
12573 }
12574 if (!strcmp(name, "vkCreateSampler"))
12575 {
12576 return (void*)entry_vkCreateSampler;
12577 }
12578 if (!strcmp(name, "vkDestroySampler"))
12579 {
12580 return (void*)entry_vkDestroySampler;
12581 }
12582 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
12583 {
12584 return (void*)entry_vkCreateDescriptorSetLayout;
12585 }
12586 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
12587 {
12588 return (void*)entry_vkDestroyDescriptorSetLayout;
12589 }
12590 if (!strcmp(name, "vkCreateDescriptorPool"))
12591 {
12592 return (void*)entry_vkCreateDescriptorPool;
12593 }
12594 if (!strcmp(name, "vkDestroyDescriptorPool"))
12595 {
12596 return (void*)entry_vkDestroyDescriptorPool;
12597 }
12598 if (!strcmp(name, "vkResetDescriptorPool"))
12599 {
12600 return (void*)entry_vkResetDescriptorPool;
12601 }
12602 if (!strcmp(name, "vkAllocateDescriptorSets"))
12603 {
12604 return (void*)entry_vkAllocateDescriptorSets;
12605 }
12606 if (!strcmp(name, "vkFreeDescriptorSets"))
12607 {
12608 return (void*)entry_vkFreeDescriptorSets;
12609 }
12610 if (!strcmp(name, "vkUpdateDescriptorSets"))
12611 {
12612 return (void*)entry_vkUpdateDescriptorSets;
12613 }
12614 if (!strcmp(name, "vkCreateFramebuffer"))
12615 {
12616 return (void*)entry_vkCreateFramebuffer;
12617 }
12618 if (!strcmp(name, "vkDestroyFramebuffer"))
12619 {
12620 return (void*)entry_vkDestroyFramebuffer;
12621 }
12622 if (!strcmp(name, "vkCreateRenderPass"))
12623 {
12624 return (void*)entry_vkCreateRenderPass;
12625 }
12626 if (!strcmp(name, "vkDestroyRenderPass"))
12627 {
12628 return (void*)entry_vkDestroyRenderPass;
12629 }
12630 if (!strcmp(name, "vkGetRenderAreaGranularity"))
12631 {
12632 return (void*)entry_vkGetRenderAreaGranularity;
12633 }
12634 if (!strcmp(name, "vkCreateCommandPool"))
12635 {
12636 return (void*)entry_vkCreateCommandPool;
12637 }
12638 if (!strcmp(name, "vkDestroyCommandPool"))
12639 {
12640 return (void*)entry_vkDestroyCommandPool;
12641 }
12642 if (!strcmp(name, "vkResetCommandPool"))
12643 {
12644 return (void*)entry_vkResetCommandPool;
12645 }
12646 if (!strcmp(name, "vkAllocateCommandBuffers"))
12647 {
12648 return (void*)entry_vkAllocateCommandBuffers;
12649 }
12650 if (!strcmp(name, "vkFreeCommandBuffers"))
12651 {
12652 return (void*)entry_vkFreeCommandBuffers;
12653 }
12654 if (!strcmp(name, "vkBeginCommandBuffer"))
12655 {
12656 return (void*)entry_vkBeginCommandBuffer;
12657 }
12658 if (!strcmp(name, "vkEndCommandBuffer"))
12659 {
12660 return (void*)entry_vkEndCommandBuffer;
12661 }
12662 if (!strcmp(name, "vkResetCommandBuffer"))
12663 {
12664 return (void*)entry_vkResetCommandBuffer;
12665 }
12666 if (!strcmp(name, "vkCmdBindPipeline"))
12667 {
12668 return (void*)entry_vkCmdBindPipeline;
12669 }
12670 if (!strcmp(name, "vkCmdSetViewport"))
12671 {
12672 return (void*)entry_vkCmdSetViewport;
12673 }
12674 if (!strcmp(name, "vkCmdSetScissor"))
12675 {
12676 return (void*)entry_vkCmdSetScissor;
12677 }
12678 if (!strcmp(name, "vkCmdSetLineWidth"))
12679 {
12680 return (void*)entry_vkCmdSetLineWidth;
12681 }
12682 if (!strcmp(name, "vkCmdSetDepthBias"))
12683 {
12684 return (void*)entry_vkCmdSetDepthBias;
12685 }
12686 if (!strcmp(name, "vkCmdSetBlendConstants"))
12687 {
12688 return (void*)entry_vkCmdSetBlendConstants;
12689 }
12690 if (!strcmp(name, "vkCmdSetDepthBounds"))
12691 {
12692 return (void*)entry_vkCmdSetDepthBounds;
12693 }
12694 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
12695 {
12696 return (void*)entry_vkCmdSetStencilCompareMask;
12697 }
12698 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
12699 {
12700 return (void*)entry_vkCmdSetStencilWriteMask;
12701 }
12702 if (!strcmp(name, "vkCmdSetStencilReference"))
12703 {
12704 return (void*)entry_vkCmdSetStencilReference;
12705 }
12706 if (!strcmp(name, "vkCmdBindDescriptorSets"))
12707 {
12708 return (void*)entry_vkCmdBindDescriptorSets;
12709 }
12710 if (!strcmp(name, "vkCmdBindIndexBuffer"))
12711 {
12712 return (void*)entry_vkCmdBindIndexBuffer;
12713 }
12714 if (!strcmp(name, "vkCmdBindVertexBuffers"))
12715 {
12716 return (void*)entry_vkCmdBindVertexBuffers;
12717 }
12718 if (!strcmp(name, "vkCmdDraw"))
12719 {
12720 return (void*)entry_vkCmdDraw;
12721 }
12722 if (!strcmp(name, "vkCmdDrawIndexed"))
12723 {
12724 return (void*)entry_vkCmdDrawIndexed;
12725 }
12726 if (!strcmp(name, "vkCmdDrawIndirect"))
12727 {
12728 return (void*)entry_vkCmdDrawIndirect;
12729 }
12730 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
12731 {
12732 return (void*)entry_vkCmdDrawIndexedIndirect;
12733 }
12734 if (!strcmp(name, "vkCmdDispatch"))
12735 {
12736 return (void*)entry_vkCmdDispatch;
12737 }
12738 if (!strcmp(name, "vkCmdDispatchIndirect"))
12739 {
12740 return (void*)entry_vkCmdDispatchIndirect;
12741 }
12742 if (!strcmp(name, "vkCmdCopyBuffer"))
12743 {
12744 return (void*)entry_vkCmdCopyBuffer;
12745 }
12746 if (!strcmp(name, "vkCmdCopyImage"))
12747 {
12748 return (void*)entry_vkCmdCopyImage;
12749 }
12750 if (!strcmp(name, "vkCmdBlitImage"))
12751 {
12752 return (void*)entry_vkCmdBlitImage;
12753 }
12754 if (!strcmp(name, "vkCmdCopyBufferToImage"))
12755 {
12756 return (void*)entry_vkCmdCopyBufferToImage;
12757 }
12758 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
12759 {
12760 return (void*)entry_vkCmdCopyImageToBuffer;
12761 }
12762 if (!strcmp(name, "vkCmdUpdateBuffer"))
12763 {
12764 return (void*)entry_vkCmdUpdateBuffer;
12765 }
12766 if (!strcmp(name, "vkCmdFillBuffer"))
12767 {
12768 return (void*)entry_vkCmdFillBuffer;
12769 }
12770 if (!strcmp(name, "vkCmdClearColorImage"))
12771 {
12772 return (void*)entry_vkCmdClearColorImage;
12773 }
12774 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
12775 {
12776 return (void*)entry_vkCmdClearDepthStencilImage;
12777 }
12778 if (!strcmp(name, "vkCmdClearAttachments"))
12779 {
12780 return (void*)entry_vkCmdClearAttachments;
12781 }
12782 if (!strcmp(name, "vkCmdResolveImage"))
12783 {
12784 return (void*)entry_vkCmdResolveImage;
12785 }
12786 if (!strcmp(name, "vkCmdSetEvent"))
12787 {
12788 return (void*)entry_vkCmdSetEvent;
12789 }
12790 if (!strcmp(name, "vkCmdResetEvent"))
12791 {
12792 return (void*)entry_vkCmdResetEvent;
12793 }
12794 if (!strcmp(name, "vkCmdWaitEvents"))
12795 {
12796 return (void*)entry_vkCmdWaitEvents;
12797 }
12798 if (!strcmp(name, "vkCmdPipelineBarrier"))
12799 {
12800 return (void*)entry_vkCmdPipelineBarrier;
12801 }
12802 if (!strcmp(name, "vkCmdBeginQuery"))
12803 {
12804 return (void*)entry_vkCmdBeginQuery;
12805 }
12806 if (!strcmp(name, "vkCmdEndQuery"))
12807 {
12808 return (void*)entry_vkCmdEndQuery;
12809 }
12810 if (!strcmp(name, "vkCmdResetQueryPool"))
12811 {
12812 return (void*)entry_vkCmdResetQueryPool;
12813 }
12814 if (!strcmp(name, "vkCmdWriteTimestamp"))
12815 {
12816 return (void*)entry_vkCmdWriteTimestamp;
12817 }
12818 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
12819 {
12820 return (void*)entry_vkCmdCopyQueryPoolResults;
12821 }
12822 if (!strcmp(name, "vkCmdPushConstants"))
12823 {
12824 return (void*)entry_vkCmdPushConstants;
12825 }
12826 if (!strcmp(name, "vkCmdBeginRenderPass"))
12827 {
12828 return (void*)entry_vkCmdBeginRenderPass;
12829 }
12830 if (!strcmp(name, "vkCmdNextSubpass"))
12831 {
12832 return (void*)entry_vkCmdNextSubpass;
12833 }
12834 if (!strcmp(name, "vkCmdEndRenderPass"))
12835 {
12836 return (void*)entry_vkCmdEndRenderPass;
12837 }
12838 if (!strcmp(name, "vkCmdExecuteCommands"))
12839 {
12840 return (void*)entry_vkCmdExecuteCommands;
12841 }
12842#endif
12843#ifdef VK_VERSION_1_1
12844 if (!strcmp(name, "vkEnumerateInstanceVersion"))
12845 {
12846 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
12847 }
12848 if (!strcmp(name, "vkBindBufferMemory2"))
12849 {
12850 return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
12851 }
12852 if (!strcmp(name, "vkBindImageMemory2"))
12853 {
12854 return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
12855 }
12856 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
12857 {
12858 return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
12859 }
12860 if (!strcmp(name, "vkCmdSetDeviceMask"))
12861 {
12862 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
12863 }
12864 if (!strcmp(name, "vkCmdDispatchBase"))
12865 {
12866 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
12867 }
12868 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
12869 {
12870 return nullptr;
12871 }
12872 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
12873 {
12874 return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
12875 }
12876 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
12877 {
12878 return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
12879 }
12880 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
12881 {
12882 return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
12883 }
12884 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
12885 {
12886 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
12887 }
12888 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
12889 {
12890 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
12891 }
12892 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
12893 {
12894 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
12895 }
12896 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
12897 {
12898 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
12899 }
12900 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
12901 {
12902 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
12903 }
12904 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
12905 {
12906 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
12907 }
12908 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
12909 {
12910 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
12911 }
12912 if (!strcmp(name, "vkTrimCommandPool"))
12913 {
12914 return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
12915 }
12916 if (!strcmp(name, "vkGetDeviceQueue2"))
12917 {
12918 return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
12919 }
12920 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
12921 {
12922 return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
12923 }
12924 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
12925 {
12926 return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
12927 }
12928 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
12929 {
12930 return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
12931 }
12932 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
12933 {
12934 return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
12935 }
12936 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
12937 {
12938 return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
12939 }
12940 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
12941 {
12942 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
12943 }
12944 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
12945 {
12946 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
12947 }
12948 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
12949 {
12950 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
12951 }
12952 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
12953 {
12954 return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
12955 }
12956#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012957#ifdef VK_VERSION_1_2
12958 if (!strcmp(name, "vkCmdDrawIndirectCount"))
12959 {
12960 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12961 return hasExt ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
12962 }
12963 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
12964 {
12965 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12966 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
12967 }
12968 if (!strcmp(name, "vkCreateRenderPass2"))
12969 {
12970 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12971 return hasExt ? (void*)entry_vkCreateRenderPass2 : nullptr;
12972 }
12973 if (!strcmp(name, "vkCmdBeginRenderPass2"))
12974 {
12975 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12976 return hasExt ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
12977 }
12978 if (!strcmp(name, "vkCmdNextSubpass2"))
12979 {
12980 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12981 return hasExt ? (void*)entry_vkCmdNextSubpass2 : nullptr;
12982 }
12983 if (!strcmp(name, "vkCmdEndRenderPass2"))
12984 {
12985 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12986 return hasExt ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
12987 }
12988 if (!strcmp(name, "vkResetQueryPool"))
12989 {
12990 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12991 return hasExt ? (void*)entry_vkResetQueryPool : nullptr;
12992 }
12993 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
12994 {
12995 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12996 return hasExt ? (void*)entry_vkGetSemaphoreCounterValue : nullptr;
12997 }
12998 if (!strcmp(name, "vkWaitSemaphores"))
12999 {
13000 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13001 return hasExt ? (void*)entry_vkWaitSemaphores : nullptr;
13002 }
13003 if (!strcmp(name, "vkSignalSemaphore"))
13004 {
13005 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13006 return hasExt ? (void*)entry_vkSignalSemaphore : nullptr;
13007 }
13008 if (!strcmp(name, "vkGetBufferDeviceAddress"))
13009 {
13010 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13011 return hasExt ? (void*)entry_vkGetBufferDeviceAddress : nullptr;
13012 }
13013 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
13014 {
13015 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13016 return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddress : nullptr;
13017 }
13018 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
13019 {
13020 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13021 return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddress : nullptr;
13022 }
13023#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013024#ifdef VK_KHR_surface
13025 if (!strcmp(name, "vkDestroySurfaceKHR"))
13026 {
13027 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13028 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
13029 }
13030 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
13031 {
13032 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13033 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
13034 }
13035 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
13036 {
13037 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13038 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
13039 }
13040 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
13041 {
13042 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13043 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
13044 }
13045 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
13046 {
13047 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13048 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
13049 }
13050#endif
13051#ifdef VK_KHR_swapchain
13052 if (!strcmp(name, "vkCreateSwapchainKHR"))
13053 {
13054 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13055 return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
13056 }
13057 if (!strcmp(name, "vkDestroySwapchainKHR"))
13058 {
13059 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13060 return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
13061 }
13062 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
13063 {
13064 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13065 return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
13066 }
13067 if (!strcmp(name, "vkAcquireNextImageKHR"))
13068 {
13069 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13070 return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
13071 }
13072 if (!strcmp(name, "vkQueuePresentKHR"))
13073 {
13074 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13075 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
13076 }
13077 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
13078 {
13079 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13080 return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
13081 }
13082 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
13083 {
13084 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13085 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
13086 }
13087 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
13088 {
13089 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13090 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
13091 }
13092 if (!strcmp(name, "vkAcquireNextImage2KHR"))
13093 {
13094 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13095 return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
13096 }
13097#endif
13098#ifdef VK_KHR_display
13099 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
13100 {
13101 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13102 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
13103 }
13104 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
13105 {
13106 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13107 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
13108 }
13109 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
13110 {
13111 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13112 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
13113 }
13114 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
13115 {
13116 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13117 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
13118 }
13119 if (!strcmp(name, "vkCreateDisplayModeKHR"))
13120 {
13121 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13122 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
13123 }
13124 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
13125 {
13126 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13127 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
13128 }
13129 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
13130 {
13131 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13132 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
13133 }
13134#endif
13135#ifdef VK_KHR_display_swapchain
13136 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
13137 {
13138 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
13139 return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
13140 }
13141#endif
13142#ifdef VK_KHR_xlib_surface
13143 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
13144 {
13145 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
13146 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
13147 }
13148 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
13149 {
13150 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
13151 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
13152 }
13153#endif
13154#ifdef VK_KHR_xcb_surface
13155 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
13156 {
13157 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
13158 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
13159 }
13160 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
13161 {
13162 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
13163 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
13164 }
13165#endif
13166#ifdef VK_KHR_wayland_surface
13167 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
13168 {
13169 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
13170 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
13171 }
13172 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
13173 {
13174 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
13175 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
13176 }
13177#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013178#ifdef VK_KHR_android_surface
13179 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
13180 {
13181 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
13182 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
13183 }
13184#endif
13185#ifdef VK_KHR_win32_surface
13186 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
13187 {
13188 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
13189 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
13190 }
13191 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
13192 {
13193 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
13194 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
13195 }
13196#endif
13197#ifdef VK_KHR_get_physical_device_properties2
13198 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
13199 {
13200 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13201 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
13202 }
13203 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
13204 {
13205 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13206 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
13207 }
13208 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
13209 {
13210 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13211 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
13212 }
13213 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
13214 {
13215 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13216 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
13217 }
13218 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
13219 {
13220 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13221 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
13222 }
13223 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
13224 {
13225 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13226 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
13227 }
13228 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
13229 {
13230 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13231 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
13232 }
13233#endif
13234#ifdef VK_KHR_device_group
13235 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
13236 {
13237 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
13238 return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
13239 }
13240 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
13241 {
13242 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
13243 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
13244 }
13245 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
13246 {
13247 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
13248 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
13249 }
13250#endif
13251#ifdef VK_KHR_maintenance1
13252 if (!strcmp(name, "vkTrimCommandPoolKHR"))
13253 {
13254 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
13255 return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
13256 }
13257#endif
13258#ifdef VK_KHR_device_group_creation
13259 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
13260 {
13261 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
13262 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
13263 }
13264#endif
13265#ifdef VK_KHR_external_memory_capabilities
13266 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
13267 {
13268 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
13269 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
13270 }
13271#endif
13272#ifdef VK_KHR_external_memory_win32
13273 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
13274 {
13275 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
13276 return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
13277 }
13278 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
13279 {
13280 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
13281 return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
13282 }
13283#endif
13284#ifdef VK_KHR_external_memory_fd
13285 if (!strcmp(name, "vkGetMemoryFdKHR"))
13286 {
13287 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
13288 return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
13289 }
13290 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
13291 {
13292 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
13293 return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
13294 }
13295#endif
13296#ifdef VK_KHR_external_semaphore_capabilities
13297 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
13298 {
13299 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
13300 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
13301 }
13302#endif
13303#ifdef VK_KHR_external_semaphore_win32
13304 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
13305 {
13306 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
13307 return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
13308 }
13309 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
13310 {
13311 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
13312 return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
13313 }
13314#endif
13315#ifdef VK_KHR_external_semaphore_fd
13316 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
13317 {
13318 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
13319 return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
13320 }
13321 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
13322 {
13323 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
13324 return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
13325 }
13326#endif
13327#ifdef VK_KHR_push_descriptor
13328 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
13329 {
13330 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
13331 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
13332 }
13333 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
13334 {
13335 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
13336 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
13337 }
13338#endif
13339#ifdef VK_KHR_descriptor_update_template
13340 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
13341 {
13342 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
13343 return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
13344 }
13345 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
13346 {
13347 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
13348 return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
13349 }
13350 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
13351 {
13352 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
13353 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
13354 }
13355#endif
13356#ifdef VK_KHR_create_renderpass2
13357 if (!strcmp(name, "vkCreateRenderPass2KHR"))
13358 {
13359 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13360 return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
13361 }
13362 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
13363 {
13364 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13365 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
13366 }
13367 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
13368 {
13369 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13370 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
13371 }
13372 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
13373 {
13374 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13375 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
13376 }
13377#endif
13378#ifdef VK_KHR_shared_presentable_image
13379 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
13380 {
13381 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
13382 return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
13383 }
13384#endif
13385#ifdef VK_KHR_external_fence_capabilities
13386 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
13387 {
13388 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
13389 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
13390 }
13391#endif
13392#ifdef VK_KHR_external_fence_win32
13393 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
13394 {
13395 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
13396 return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
13397 }
13398 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
13399 {
13400 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
13401 return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
13402 }
13403#endif
13404#ifdef VK_KHR_external_fence_fd
13405 if (!strcmp(name, "vkImportFenceFdKHR"))
13406 {
13407 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
13408 return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
13409 }
13410 if (!strcmp(name, "vkGetFenceFdKHR"))
13411 {
13412 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
13413 return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
13414 }
13415#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013416#ifdef VK_KHR_performance_query
13417 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
13418 {
13419 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13420 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
13421 }
13422 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
13423 {
13424 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13425 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
13426 }
13427 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
13428 {
13429 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13430 return hasExt ? (void*)entry_vkAcquireProfilingLockKHR : nullptr;
13431 }
13432 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
13433 {
13434 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13435 return hasExt ? (void*)entry_vkReleaseProfilingLockKHR : nullptr;
13436 }
13437#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013438#ifdef VK_KHR_get_surface_capabilities2
13439 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
13440 {
13441 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
13442 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
13443 }
13444 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
13445 {
13446 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
13447 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
13448 }
13449#endif
13450#ifdef VK_KHR_get_display_properties2
13451 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
13452 {
13453 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13454 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
13455 }
13456 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
13457 {
13458 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13459 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
13460 }
13461 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
13462 {
13463 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13464 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
13465 }
13466 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
13467 {
13468 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13469 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
13470 }
13471#endif
13472#ifdef VK_KHR_get_memory_requirements2
13473 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
13474 {
13475 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
13476 return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
13477 }
13478 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
13479 {
13480 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
13481 return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
13482 }
13483 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
13484 {
13485 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
13486 return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
13487 }
13488#endif
13489#ifdef VK_KHR_sampler_ycbcr_conversion
13490 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
13491 {
13492 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
13493 return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
13494 }
13495 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
13496 {
13497 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
13498 return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
13499 }
13500#endif
13501#ifdef VK_KHR_bind_memory2
13502 if (!strcmp(name, "vkBindBufferMemory2KHR"))
13503 {
13504 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
13505 return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
13506 }
13507 if (!strcmp(name, "vkBindImageMemory2KHR"))
13508 {
13509 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
13510 return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
13511 }
13512#endif
13513#ifdef VK_KHR_maintenance3
13514 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
13515 {
13516 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
13517 return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
13518 }
13519#endif
13520#ifdef VK_KHR_draw_indirect_count
13521 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
13522 {
13523 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
13524 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
13525 }
13526 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
13527 {
13528 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
13529 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
13530 }
13531#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013532#ifdef VK_KHR_timeline_semaphore
13533 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
13534 {
13535 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
13536 return hasExt ? (void*)entry_vkGetSemaphoreCounterValueKHR : nullptr;
13537 }
13538 if (!strcmp(name, "vkWaitSemaphoresKHR"))
13539 {
13540 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
13541 return hasExt ? (void*)entry_vkWaitSemaphoresKHR : nullptr;
13542 }
13543 if (!strcmp(name, "vkSignalSemaphoreKHR"))
13544 {
13545 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
13546 return hasExt ? (void*)entry_vkSignalSemaphoreKHR : nullptr;
13547 }
13548#endif
13549#ifdef VK_KHR_fragment_shading_rate
13550 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
13551 {
13552 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
13553 return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
13554 }
13555 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
13556 {
13557 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
13558 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateKHR : nullptr;
13559 }
13560#endif
13561#ifdef VK_KHR_buffer_device_address
13562 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
13563 {
13564 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
13565 return hasExt ? (void*)entry_vkGetBufferDeviceAddressKHR : nullptr;
13566 }
13567 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
13568 {
13569 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
13570 return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddressKHR : nullptr;
13571 }
13572 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
13573 {
13574 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
13575 return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR : nullptr;
13576 }
13577#endif
13578#ifdef VK_KHR_deferred_host_operations
13579 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
13580 {
13581 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13582 return hasExt ? (void*)entry_vkCreateDeferredOperationKHR : nullptr;
13583 }
13584 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
13585 {
13586 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13587 return hasExt ? (void*)entry_vkDestroyDeferredOperationKHR : nullptr;
13588 }
13589 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
13590 {
13591 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13592 return hasExt ? (void*)entry_vkGetDeferredOperationMaxConcurrencyKHR : nullptr;
13593 }
13594 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
13595 {
13596 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13597 return hasExt ? (void*)entry_vkGetDeferredOperationResultKHR : nullptr;
13598 }
13599 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
13600 {
13601 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13602 return hasExt ? (void*)entry_vkDeferredOperationJoinKHR : nullptr;
13603 }
13604#endif
13605#ifdef VK_KHR_pipeline_executable_properties
13606 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
13607 {
13608 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
13609 return hasExt ? (void*)entry_vkGetPipelineExecutablePropertiesKHR : nullptr;
13610 }
13611 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
13612 {
13613 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
13614 return hasExt ? (void*)entry_vkGetPipelineExecutableStatisticsKHR : nullptr;
13615 }
13616 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
13617 {
13618 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
13619 return hasExt ? (void*)entry_vkGetPipelineExecutableInternalRepresentationsKHR : nullptr;
13620 }
13621#endif
13622#ifdef VK_KHR_copy_commands2
13623 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
13624 {
13625 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13626 return hasExt ? (void*)entry_vkCmdCopyBuffer2KHR : nullptr;
13627 }
13628 if (!strcmp(name, "vkCmdCopyImage2KHR"))
13629 {
13630 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13631 return hasExt ? (void*)entry_vkCmdCopyImage2KHR : nullptr;
13632 }
13633 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
13634 {
13635 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13636 return hasExt ? (void*)entry_vkCmdCopyBufferToImage2KHR : nullptr;
13637 }
13638 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
13639 {
13640 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13641 return hasExt ? (void*)entry_vkCmdCopyImageToBuffer2KHR : nullptr;
13642 }
13643 if (!strcmp(name, "vkCmdBlitImage2KHR"))
13644 {
13645 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13646 return hasExt ? (void*)entry_vkCmdBlitImage2KHR : nullptr;
13647 }
13648 if (!strcmp(name, "vkCmdResolveImage2KHR"))
13649 {
13650 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13651 return hasExt ? (void*)entry_vkCmdResolveImage2KHR : nullptr;
13652 }
13653#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013654#ifdef VK_ANDROID_native_buffer
13655 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
13656 {
13657 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
13658 return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
13659 }
13660 if (!strcmp(name, "vkAcquireImageANDROID"))
13661 {
13662 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
13663 return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
13664 }
13665 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
13666 {
13667 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
13668 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
13669 }
13670#endif
13671#ifdef VK_EXT_debug_report
13672 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
13673 {
13674 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
13675 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
13676 }
13677 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
13678 {
13679 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
13680 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
13681 }
13682 if (!strcmp(name, "vkDebugReportMessageEXT"))
13683 {
13684 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
13685 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
13686 }
13687#endif
13688#ifdef VK_EXT_debug_marker
13689 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
13690 {
13691 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13692 return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
13693 }
13694 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
13695 {
13696 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13697 return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
13698 }
13699 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
13700 {
13701 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13702 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
13703 }
13704 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
13705 {
13706 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13707 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
13708 }
13709 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
13710 {
13711 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13712 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
13713 }
13714#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013715#ifdef VK_EXT_transform_feedback
13716 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
13717 {
13718 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13719 return hasExt ? (void*)entry_vkCmdBindTransformFeedbackBuffersEXT : nullptr;
13720 }
13721 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
13722 {
13723 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13724 return hasExt ? (void*)entry_vkCmdBeginTransformFeedbackEXT : nullptr;
13725 }
13726 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
13727 {
13728 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13729 return hasExt ? (void*)entry_vkCmdEndTransformFeedbackEXT : nullptr;
13730 }
13731 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
13732 {
13733 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13734 return hasExt ? (void*)entry_vkCmdBeginQueryIndexedEXT : nullptr;
13735 }
13736 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
13737 {
13738 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13739 return hasExt ? (void*)entry_vkCmdEndQueryIndexedEXT : nullptr;
13740 }
13741 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
13742 {
13743 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13744 return hasExt ? (void*)entry_vkCmdDrawIndirectByteCountEXT : nullptr;
13745 }
13746#endif
13747#ifdef VK_NVX_image_view_handle
13748 if (!strcmp(name, "vkGetImageViewHandleNVX"))
13749 {
13750 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
13751 return hasExt ? (void*)entry_vkGetImageViewHandleNVX : nullptr;
13752 }
13753 if (!strcmp(name, "vkGetImageViewAddressNVX"))
13754 {
13755 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
13756 return hasExt ? (void*)entry_vkGetImageViewAddressNVX : nullptr;
13757 }
13758#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013759#ifdef VK_AMD_draw_indirect_count
13760 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
13761 {
13762 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
13763 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
13764 }
13765 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
13766 {
13767 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
13768 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
13769 }
13770#endif
13771#ifdef VK_AMD_shader_info
13772 if (!strcmp(name, "vkGetShaderInfoAMD"))
13773 {
13774 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
13775 return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
13776 }
13777#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013778#ifdef VK_GGP_stream_descriptor_surface
13779 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
13780 {
13781 bool hasExt = resources->hasDeviceExtension(device, "VK_GGP_stream_descriptor_surface");
13782 return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
13783 }
13784#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013785#ifdef VK_NV_external_memory_capabilities
13786 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
13787 {
13788 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
13789 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
13790 }
13791#endif
13792#ifdef VK_NV_external_memory_win32
13793 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
13794 {
13795 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
13796 return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
13797 }
13798#endif
13799#ifdef VK_NN_vi_surface
13800 if (!strcmp(name, "vkCreateViSurfaceNN"))
13801 {
13802 bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
13803 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
13804 }
13805#endif
13806#ifdef VK_EXT_conditional_rendering
13807 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
13808 {
13809 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
13810 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
13811 }
13812 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
13813 {
13814 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
13815 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
13816 }
13817#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013818#ifdef VK_NV_clip_space_w_scaling
13819 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
13820 {
13821 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
13822 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
13823 }
13824#endif
13825#ifdef VK_EXT_direct_mode_display
13826 if (!strcmp(name, "vkReleaseDisplayEXT"))
13827 {
13828 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
13829 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
13830 }
13831#endif
13832#ifdef VK_EXT_acquire_xlib_display
13833 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
13834 {
13835 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
13836 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
13837 }
13838 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
13839 {
13840 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
13841 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
13842 }
13843#endif
13844#ifdef VK_EXT_display_surface_counter
13845 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
13846 {
13847 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
13848 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
13849 }
13850#endif
13851#ifdef VK_EXT_display_control
13852 if (!strcmp(name, "vkDisplayPowerControlEXT"))
13853 {
13854 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13855 return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
13856 }
13857 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
13858 {
13859 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13860 return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
13861 }
13862 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
13863 {
13864 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13865 return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
13866 }
13867 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
13868 {
13869 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13870 return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
13871 }
13872#endif
13873#ifdef VK_GOOGLE_display_timing
13874 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
13875 {
13876 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
13877 return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
13878 }
13879 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
13880 {
13881 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
13882 return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
13883 }
13884#endif
13885#ifdef VK_EXT_discard_rectangles
13886 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
13887 {
13888 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
13889 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
13890 }
13891#endif
13892#ifdef VK_EXT_hdr_metadata
13893 if (!strcmp(name, "vkSetHdrMetadataEXT"))
13894 {
13895 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
13896 return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
13897 }
13898#endif
13899#ifdef VK_MVK_ios_surface
13900 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
13901 {
13902 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
13903 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
13904 }
13905#endif
13906#ifdef VK_MVK_macos_surface
13907 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
13908 {
13909 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
13910 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
13911 }
13912#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013913#ifdef VK_MVK_moltenvk
13914 if (!strcmp(name, "vkGetMTLDeviceMVK"))
13915 {
13916 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13917 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
13918 }
13919 if (!strcmp(name, "vkSetMTLTextureMVK"))
13920 {
13921 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13922 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
13923 }
13924 if (!strcmp(name, "vkGetMTLTextureMVK"))
13925 {
13926 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13927 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
13928 }
13929 if (!strcmp(name, "vkGetMTLBufferMVK"))
13930 {
13931 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13932 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
13933 }
13934 if (!strcmp(name, "vkUseIOSurfaceMVK"))
13935 {
13936 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13937 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
13938 }
13939 if (!strcmp(name, "vkGetIOSurfaceMVK"))
13940 {
13941 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13942 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
13943 }
13944#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013945#ifdef VK_EXT_debug_utils
13946 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
13947 {
13948 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13949 return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
13950 }
13951 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
13952 {
13953 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13954 return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
13955 }
13956 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
13957 {
13958 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13959 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
13960 }
13961 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
13962 {
13963 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13964 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
13965 }
13966 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
13967 {
13968 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13969 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
13970 }
13971 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
13972 {
13973 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13974 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
13975 }
13976 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
13977 {
13978 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13979 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
13980 }
13981 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
13982 {
13983 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13984 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
13985 }
13986 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
13987 {
13988 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13989 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
13990 }
13991 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
13992 {
13993 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13994 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
13995 }
13996 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
13997 {
13998 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13999 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
14000 }
14001#endif
14002#ifdef VK_ANDROID_external_memory_android_hardware_buffer
14003 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
14004 {
14005 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
14006 return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
14007 }
14008 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
14009 {
14010 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
14011 return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
14012 }
14013#endif
14014#ifdef VK_EXT_sample_locations
14015 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
14016 {
14017 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
14018 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
14019 }
14020 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
14021 {
14022 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
14023 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
14024 }
14025#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014026#ifdef VK_EXT_image_drm_format_modifier
14027 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
14028 {
14029 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier");
14030 return hasExt ? (void*)entry_vkGetImageDrmFormatModifierPropertiesEXT : nullptr;
14031 }
14032#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014033#ifdef VK_EXT_validation_cache
14034 if (!strcmp(name, "vkCreateValidationCacheEXT"))
14035 {
14036 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14037 return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
14038 }
14039 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
14040 {
14041 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14042 return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
14043 }
14044 if (!strcmp(name, "vkMergeValidationCachesEXT"))
14045 {
14046 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14047 return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
14048 }
14049 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
14050 {
14051 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14052 return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
14053 }
14054#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014055#ifdef VK_NV_shading_rate_image
14056 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
14057 {
14058 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
14059 return hasExt ? (void*)entry_vkCmdBindShadingRateImageNV : nullptr;
14060 }
14061 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
14062 {
14063 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
14064 return hasExt ? (void*)entry_vkCmdSetViewportShadingRatePaletteNV : nullptr;
14065 }
14066 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
14067 {
14068 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
14069 return hasExt ? (void*)entry_vkCmdSetCoarseSampleOrderNV : nullptr;
14070 }
14071#endif
14072#ifdef VK_NV_ray_tracing
14073 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
14074 {
14075 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14076 return hasExt ? (void*)entry_vkCreateAccelerationStructureNV : nullptr;
14077 }
14078 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
14079 {
14080 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14081 return hasExt ? (void*)entry_vkDestroyAccelerationStructureNV : nullptr;
14082 }
14083 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
14084 {
14085 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14086 return hasExt ? (void*)entry_vkGetAccelerationStructureMemoryRequirementsNV : nullptr;
14087 }
14088 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
14089 {
14090 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14091 return hasExt ? (void*)entry_vkBindAccelerationStructureMemoryNV : nullptr;
14092 }
14093 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
14094 {
14095 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14096 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructureNV : nullptr;
14097 }
14098 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
14099 {
14100 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14101 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureNV : nullptr;
14102 }
14103 if (!strcmp(name, "vkCmdTraceRaysNV"))
14104 {
14105 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14106 return hasExt ? (void*)entry_vkCmdTraceRaysNV : nullptr;
14107 }
14108 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
14109 {
14110 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14111 return hasExt ? (void*)entry_vkCreateRayTracingPipelinesNV : nullptr;
14112 }
14113 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
14114 {
14115 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14116 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesKHR : nullptr;
14117 }
14118 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
14119 {
14120 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14121 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesNV : nullptr;
14122 }
14123 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
14124 {
14125 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14126 return hasExt ? (void*)entry_vkGetAccelerationStructureHandleNV : nullptr;
14127 }
14128 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
14129 {
14130 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14131 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesNV : nullptr;
14132 }
14133 if (!strcmp(name, "vkCompileDeferredNV"))
14134 {
14135 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14136 return hasExt ? (void*)entry_vkCompileDeferredNV : nullptr;
14137 }
14138#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014139#ifdef VK_EXT_external_memory_host
14140 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
14141 {
14142 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
14143 return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
14144 }
14145#endif
14146#ifdef VK_AMD_buffer_marker
14147 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
14148 {
14149 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
14150 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
14151 }
14152#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014153#ifdef VK_EXT_calibrated_timestamps
14154 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
14155 {
14156 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
14157 return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
14158 }
14159 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
14160 {
14161 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
14162 return hasExt ? (void*)entry_vkGetCalibratedTimestampsEXT : nullptr;
14163 }
14164#endif
14165#ifdef VK_NV_mesh_shader
14166 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
14167 {
14168 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
14169 return hasExt ? (void*)entry_vkCmdDrawMeshTasksNV : nullptr;
14170 }
14171 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
14172 {
14173 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
14174 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectNV : nullptr;
14175 }
14176 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
14177 {
14178 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
14179 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountNV : nullptr;
14180 }
14181#endif
14182#ifdef VK_NV_scissor_exclusive
14183 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
14184 {
14185 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_scissor_exclusive");
14186 return hasExt ? (void*)entry_vkCmdSetExclusiveScissorNV : nullptr;
14187 }
14188#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014189#ifdef VK_NV_device_diagnostic_checkpoints
14190 if (!strcmp(name, "vkCmdSetCheckpointNV"))
14191 {
14192 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
14193 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
14194 }
14195 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
14196 {
14197 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
14198 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
14199 }
14200#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014201#ifdef VK_INTEL_performance_query
14202 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014203 {
Yilong Lia8d45f12021-02-07 02:30:21 -080014204 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14205 return hasExt ? (void*)entry_vkInitializePerformanceApiINTEL : nullptr;
14206 }
14207 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
14208 {
14209 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14210 return hasExt ? (void*)entry_vkUninitializePerformanceApiINTEL : nullptr;
14211 }
14212 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
14213 {
14214 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14215 return hasExt ? (void*)entry_vkCmdSetPerformanceMarkerINTEL : nullptr;
14216 }
14217 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
14218 {
14219 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14220 return hasExt ? (void*)entry_vkCmdSetPerformanceStreamMarkerINTEL : nullptr;
14221 }
14222 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
14223 {
14224 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14225 return hasExt ? (void*)entry_vkCmdSetPerformanceOverrideINTEL : nullptr;
14226 }
14227 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
14228 {
14229 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14230 return hasExt ? (void*)entry_vkAcquirePerformanceConfigurationINTEL : nullptr;
14231 }
14232 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
14233 {
14234 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14235 return hasExt ? (void*)entry_vkReleasePerformanceConfigurationINTEL : nullptr;
14236 }
14237 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
14238 {
14239 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14240 return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
14241 }
14242 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
14243 {
14244 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14245 return hasExt ? (void*)entry_vkGetPerformanceParameterINTEL : nullptr;
14246 }
14247#endif
14248#ifdef VK_AMD_display_native_hdr
14249 if (!strcmp(name, "vkSetLocalDimmingAMD"))
14250 {
14251 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr");
14252 return hasExt ? (void*)entry_vkSetLocalDimmingAMD : nullptr;
14253 }
14254#endif
14255#ifdef VK_FUCHSIA_imagepipe_surface
14256 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
14257 {
14258 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_imagepipe_surface");
14259 return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
14260 }
14261#endif
14262#ifdef VK_EXT_metal_surface
14263 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
14264 {
14265 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_metal_surface");
14266 return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080014267 }
14268#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014269#ifdef VK_EXT_buffer_device_address
14270 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
14271 {
14272 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address");
14273 return hasExt ? (void*)entry_vkGetBufferDeviceAddressEXT : nullptr;
14274 }
14275#endif
14276#ifdef VK_EXT_tooling_info
14277 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
14278 {
14279 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_tooling_info");
14280 return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
14281 }
14282#endif
14283#ifdef VK_NV_cooperative_matrix
14284 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
14285 {
14286 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_cooperative_matrix");
14287 return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
14288 }
14289#endif
14290#ifdef VK_NV_coverage_reduction_mode
14291 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
14292 {
14293 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_coverage_reduction_mode");
14294 return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
14295 }
14296#endif
14297#ifdef VK_EXT_full_screen_exclusive
14298 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
14299 {
14300 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14301 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
14302 }
14303 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
14304 {
14305 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14306 return hasExt ? (void*)entry_vkAcquireFullScreenExclusiveModeEXT : nullptr;
14307 }
14308 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
14309 {
14310 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14311 return hasExt ? (void*)entry_vkReleaseFullScreenExclusiveModeEXT : nullptr;
14312 }
14313 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
14314 {
14315 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14316 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModes2EXT : nullptr;
14317 }
14318#endif
14319#ifdef VK_EXT_headless_surface
14320 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
14321 {
14322 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_headless_surface");
14323 return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
14324 }
14325#endif
14326#ifdef VK_EXT_line_rasterization
14327 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
14328 {
14329 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_line_rasterization");
14330 return hasExt ? (void*)entry_vkCmdSetLineStippleEXT : nullptr;
14331 }
14332#endif
14333#ifdef VK_EXT_host_query_reset
14334 if (!strcmp(name, "vkResetQueryPoolEXT"))
14335 {
14336 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_host_query_reset");
14337 return hasExt ? (void*)entry_vkResetQueryPoolEXT : nullptr;
14338 }
14339#endif
14340#ifdef VK_EXT_extended_dynamic_state
14341 if (!strcmp(name, "vkCmdSetCullModeEXT"))
14342 {
14343 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14344 return hasExt ? (void*)entry_vkCmdSetCullModeEXT : nullptr;
14345 }
14346 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
14347 {
14348 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14349 return hasExt ? (void*)entry_vkCmdSetFrontFaceEXT : nullptr;
14350 }
14351 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
14352 {
14353 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14354 return hasExt ? (void*)entry_vkCmdSetPrimitiveTopologyEXT : nullptr;
14355 }
14356 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
14357 {
14358 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14359 return hasExt ? (void*)entry_vkCmdSetViewportWithCountEXT : nullptr;
14360 }
14361 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
14362 {
14363 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14364 return hasExt ? (void*)entry_vkCmdSetScissorWithCountEXT : nullptr;
14365 }
14366 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
14367 {
14368 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14369 return hasExt ? (void*)entry_vkCmdBindVertexBuffers2EXT : nullptr;
14370 }
14371 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
14372 {
14373 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14374 return hasExt ? (void*)entry_vkCmdSetDepthTestEnableEXT : nullptr;
14375 }
14376 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
14377 {
14378 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14379 return hasExt ? (void*)entry_vkCmdSetDepthWriteEnableEXT : nullptr;
14380 }
14381 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
14382 {
14383 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14384 return hasExt ? (void*)entry_vkCmdSetDepthCompareOpEXT : nullptr;
14385 }
14386 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
14387 {
14388 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14389 return hasExt ? (void*)entry_vkCmdSetDepthBoundsTestEnableEXT : nullptr;
14390 }
14391 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
14392 {
14393 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14394 return hasExt ? (void*)entry_vkCmdSetStencilTestEnableEXT : nullptr;
14395 }
14396 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
14397 {
14398 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14399 return hasExt ? (void*)entry_vkCmdSetStencilOpEXT : nullptr;
14400 }
14401#endif
14402#ifdef VK_NV_device_generated_commands
14403 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
14404 {
14405 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14406 return hasExt ? (void*)entry_vkGetGeneratedCommandsMemoryRequirementsNV : nullptr;
14407 }
14408 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
14409 {
14410 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14411 return hasExt ? (void*)entry_vkCmdPreprocessGeneratedCommandsNV : nullptr;
14412 }
14413 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
14414 {
14415 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14416 return hasExt ? (void*)entry_vkCmdExecuteGeneratedCommandsNV : nullptr;
14417 }
14418 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
14419 {
14420 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14421 return hasExt ? (void*)entry_vkCmdBindPipelineShaderGroupNV : nullptr;
14422 }
14423 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
14424 {
14425 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14426 return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNV : nullptr;
14427 }
14428 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
14429 {
14430 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14431 return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNV : nullptr;
14432 }
14433#endif
14434#ifdef VK_EXT_private_data
14435 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
14436 {
14437 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14438 return hasExt ? (void*)entry_vkCreatePrivateDataSlotEXT : nullptr;
14439 }
14440 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
14441 {
14442 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14443 return hasExt ? (void*)entry_vkDestroyPrivateDataSlotEXT : nullptr;
14444 }
14445 if (!strcmp(name, "vkSetPrivateDataEXT"))
14446 {
14447 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14448 return hasExt ? (void*)entry_vkSetPrivateDataEXT : nullptr;
14449 }
14450 if (!strcmp(name, "vkGetPrivateDataEXT"))
14451 {
14452 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14453 return hasExt ? (void*)entry_vkGetPrivateDataEXT : nullptr;
14454 }
14455#endif
14456#ifdef VK_NV_fragment_shading_rate_enums
14457 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
14458 {
14459 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_fragment_shading_rate_enums");
14460 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateEnumNV : nullptr;
14461 }
14462#endif
14463#ifdef VK_EXT_directfb_surface
14464 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
14465 {
14466 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
14467 return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
14468 }
14469 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
14470 {
14471 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
14472 return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
14473 }
14474#endif
Yilong Li71c43c52021-02-10 02:50:43 -080014475#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -070014476 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
14477 {
14478 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14479 return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
14480 }
14481 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
14482 {
14483 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14484 return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
14485 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014486 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
14487 {
Yilong Li71c43c52021-02-10 02:50:43 -080014488 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Yilong Lia8d45f12021-02-07 02:30:21 -080014489 return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
14490 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070014491 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
14492 {
Yilong Li71c43c52021-02-10 02:50:43 -080014493 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070014494 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
14495 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014496 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
14497 {
Yilong Li71c43c52021-02-10 02:50:43 -080014498 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014499 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
14500 }
14501 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
14502 {
Yilong Li71c43c52021-02-10 02:50:43 -080014503 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014504 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
14505 }
14506 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
14507 {
Yilong Li71c43c52021-02-10 02:50:43 -080014508 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014509 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
14510 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070014511 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
14512 {
Yilong Li71c43c52021-02-10 02:50:43 -080014513 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang39a276e2019-06-17 13:27:22 -070014514 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
14515 }
Lingfeng Yang87f11962019-06-27 16:28:53 +000014516 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
14517 {
Yilong Li71c43c52021-02-10 02:50:43 -080014518 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang87f11962019-06-27 16:28:53 +000014519 return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
14520 }
14521 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
14522 {
Yilong Li71c43c52021-02-10 02:50:43 -080014523 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang87f11962019-06-27 16:28:53 +000014524 return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
14525 }
Lingfeng Yang4c542412020-02-04 18:18:32 -080014526 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
14527 {
Yilong Li71c43c52021-02-10 02:50:43 -080014528 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang4c542412020-02-04 18:18:32 -080014529 return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
14530 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070014531 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
14532 {
Yilong Li71c43c52021-02-10 02:50:43 -080014533 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070014534 return hasExt ? (void*)entry_vkFreeMemorySyncGOOGLE : nullptr;
14535 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014536 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
14537 {
Yilong Li71c43c52021-02-10 02:50:43 -080014538 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014539 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
14540 }
14541 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
14542 {
Yilong Li71c43c52021-02-10 02:50:43 -080014543 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014544 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
14545 }
14546 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
14547 {
Yilong Li71c43c52021-02-10 02:50:43 -080014548 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014549 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
14550 }
14551 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
14552 {
Yilong Li71c43c52021-02-10 02:50:43 -080014553 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014554 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
14555 }
Yilong Lia48b0102020-09-15 15:08:28 -070014556 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
14557 {
Yilong Li71c43c52021-02-10 02:50:43 -080014558 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Yilong Lia48b0102020-09-15 15:08:28 -070014559 return hasExt ? (void*)entry_vkGetLinearImageLayoutGOOGLE : nullptr;
14560 }
Lingfeng Yangded34672021-01-22 23:17:47 -080014561 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
14562 {
Yilong Li71c43c52021-02-10 02:50:43 -080014563 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangded34672021-01-22 23:17:47 -080014564 return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
14565 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080014566 if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
14567 {
14568 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14569 return hasExt ? (void*)entry_vkQueueCommitDescriptorSetUpdatesGOOGLE : nullptr;
14570 }
14571 if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
14572 {
14573 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14574 return hasExt ? (void*)entry_vkCollectDescriptorPoolIdsGOOGLE : nullptr;
14575 }
Lingfeng Yangded34672021-01-22 23:17:47 -080014576#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014577#ifdef VK_KHR_acceleration_structure
14578 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
14579 {
14580 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14581 return hasExt ? (void*)entry_vkCreateAccelerationStructureKHR : nullptr;
14582 }
14583 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
14584 {
14585 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14586 return hasExt ? (void*)entry_vkDestroyAccelerationStructureKHR : nullptr;
14587 }
14588 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
14589 {
14590 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14591 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresKHR : nullptr;
14592 }
14593 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
14594 {
14595 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14596 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresIndirectKHR : nullptr;
14597 }
14598 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
14599 {
14600 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14601 return hasExt ? (void*)entry_vkBuildAccelerationStructuresKHR : nullptr;
14602 }
14603 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
14604 {
14605 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14606 return hasExt ? (void*)entry_vkCopyAccelerationStructureKHR : nullptr;
14607 }
14608 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
14609 {
14610 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14611 return hasExt ? (void*)entry_vkCopyAccelerationStructureToMemoryKHR : nullptr;
14612 }
14613 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
14614 {
14615 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14616 return hasExt ? (void*)entry_vkCopyMemoryToAccelerationStructureKHR : nullptr;
14617 }
14618 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
14619 {
14620 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14621 return hasExt ? (void*)entry_vkWriteAccelerationStructuresPropertiesKHR : nullptr;
14622 }
14623 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
14624 {
14625 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14626 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureKHR : nullptr;
14627 }
14628 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
14629 {
14630 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14631 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureToMemoryKHR : nullptr;
14632 }
14633 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
14634 {
14635 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14636 return hasExt ? (void*)entry_vkCmdCopyMemoryToAccelerationStructureKHR : nullptr;
14637 }
14638 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
14639 {
14640 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14641 return hasExt ? (void*)entry_vkGetAccelerationStructureDeviceAddressKHR : nullptr;
14642 }
14643 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
14644 {
14645 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14646 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesKHR : nullptr;
14647 }
14648 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
14649 {
14650 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14651 return hasExt ? (void*)entry_vkGetDeviceAccelerationStructureCompatibilityKHR : nullptr;
14652 }
14653 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
14654 {
14655 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14656 return hasExt ? (void*)entry_vkGetAccelerationStructureBuildSizesKHR : nullptr;
14657 }
14658#endif
14659#ifdef VK_KHR_ray_tracing_pipeline
14660 if (!strcmp(name, "vkCmdTraceRaysKHR"))
14661 {
14662 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14663 return hasExt ? (void*)entry_vkCmdTraceRaysKHR : nullptr;
14664 }
14665 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
14666 {
14667 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14668 return hasExt ? (void*)entry_vkCreateRayTracingPipelinesKHR : nullptr;
14669 }
14670 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
14671 {
14672 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14673 return hasExt ? (void*)entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR : nullptr;
14674 }
14675 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
14676 {
14677 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14678 return hasExt ? (void*)entry_vkCmdTraceRaysIndirectKHR : nullptr;
14679 }
14680 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
14681 {
14682 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14683 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupStackSizeKHR : nullptr;
14684 }
14685 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
14686 {
14687 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14688 return hasExt ? (void*)entry_vkCmdSetRayTracingPipelineStackSizeKHR : nullptr;
14689 }
14690#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080014691 return nullptr;
14692}
14693
14694} // namespace goldfish_vk