blob: d19f969976b6e605127a4015b20ec8888b435726 [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
Yilong Li353409a2022-01-04 02:37:56 -08002815#ifdef VK_KHR_video_queue
2816static VkResult entry_vkGetPhysicalDeviceVideoCapabilitiesKHR(
2817 VkPhysicalDevice physicalDevice,
2818 const VkVideoProfileKHR* pVideoProfile,
2819 VkVideoCapabilitiesKHR* pCapabilities)
2820{
2821 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceVideoCapabilitiesKHR");
2822 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2823 VkResult vkGetPhysicalDeviceVideoCapabilitiesKHR_VkResult_return = (VkResult)0;
2824 vkGetPhysicalDeviceVideoCapabilitiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, true /* do lock */);
2825 return vkGetPhysicalDeviceVideoCapabilitiesKHR_VkResult_return;
2826}
2827static VkResult entry_vkGetPhysicalDeviceVideoFormatPropertiesKHR(
2828 VkPhysicalDevice physicalDevice,
2829 const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo,
2830 uint32_t* pVideoFormatPropertyCount,
2831 VkVideoFormatPropertiesKHR* pVideoFormatProperties)
2832{
2833 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceVideoFormatPropertiesKHR");
2834 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2835 VkResult vkGetPhysicalDeviceVideoFormatPropertiesKHR_VkResult_return = (VkResult)0;
2836 vkGetPhysicalDeviceVideoFormatPropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, true /* do lock */);
2837 return vkGetPhysicalDeviceVideoFormatPropertiesKHR_VkResult_return;
2838}
2839static VkResult entry_vkCreateVideoSessionKHR(
2840 VkDevice device,
2841 const VkVideoSessionCreateInfoKHR* pCreateInfo,
2842 const VkAllocationCallbacks* pAllocator,
2843 VkVideoSessionKHR* pVideoSession)
2844{
2845 AEMU_SCOPED_TRACE("vkCreateVideoSessionKHR");
2846 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2847 VkResult vkCreateVideoSessionKHR_VkResult_return = (VkResult)0;
2848 vkCreateVideoSessionKHR_VkResult_return = vkEnc->vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, true /* do lock */);
2849 return vkCreateVideoSessionKHR_VkResult_return;
2850}
2851static VkResult dynCheck_entry_vkCreateVideoSessionKHR(
2852 VkDevice device,
2853 const VkVideoSessionCreateInfoKHR* pCreateInfo,
2854 const VkAllocationCallbacks* pAllocator,
2855 VkVideoSessionKHR* pVideoSession)
2856{
2857 auto resources = ResourceTracker::get();
2858 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
2859 {
2860 sOnInvalidDynamicallyCheckedCall("vkCreateVideoSessionKHR", "VK_KHR_video_queue");
2861 }
2862 AEMU_SCOPED_TRACE("vkCreateVideoSessionKHR");
2863 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2864 VkResult vkCreateVideoSessionKHR_VkResult_return = (VkResult)0;
2865 vkCreateVideoSessionKHR_VkResult_return = vkEnc->vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, true /* do lock */);
2866 return vkCreateVideoSessionKHR_VkResult_return;
2867}
2868static void entry_vkDestroyVideoSessionKHR(
2869 VkDevice device,
2870 VkVideoSessionKHR videoSession,
2871 const VkAllocationCallbacks* pAllocator)
2872{
2873 AEMU_SCOPED_TRACE("vkDestroyVideoSessionKHR");
2874 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2875 vkEnc->vkDestroyVideoSessionKHR(device, videoSession, pAllocator, true /* do lock */);
2876}
2877static void dynCheck_entry_vkDestroyVideoSessionKHR(
2878 VkDevice device,
2879 VkVideoSessionKHR videoSession,
2880 const VkAllocationCallbacks* pAllocator)
2881{
2882 auto resources = ResourceTracker::get();
2883 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
2884 {
2885 sOnInvalidDynamicallyCheckedCall("vkDestroyVideoSessionKHR", "VK_KHR_video_queue");
2886 }
2887 AEMU_SCOPED_TRACE("vkDestroyVideoSessionKHR");
2888 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2889 vkEnc->vkDestroyVideoSessionKHR(device, videoSession, pAllocator, true /* do lock */);
2890}
2891static VkResult entry_vkGetVideoSessionMemoryRequirementsKHR(
2892 VkDevice device,
2893 VkVideoSessionKHR videoSession,
2894 uint32_t* pVideoSessionMemoryRequirementsCount,
2895 VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements)
2896{
2897 AEMU_SCOPED_TRACE("vkGetVideoSessionMemoryRequirementsKHR");
2898 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2899 VkResult vkGetVideoSessionMemoryRequirementsKHR_VkResult_return = (VkResult)0;
2900 vkGetVideoSessionMemoryRequirementsKHR_VkResult_return = vkEnc->vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pVideoSessionMemoryRequirementsCount, pVideoSessionMemoryRequirements, true /* do lock */);
2901 return vkGetVideoSessionMemoryRequirementsKHR_VkResult_return;
2902}
2903static VkResult dynCheck_entry_vkGetVideoSessionMemoryRequirementsKHR(
2904 VkDevice device,
2905 VkVideoSessionKHR videoSession,
2906 uint32_t* pVideoSessionMemoryRequirementsCount,
2907 VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements)
2908{
2909 auto resources = ResourceTracker::get();
2910 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
2911 {
2912 sOnInvalidDynamicallyCheckedCall("vkGetVideoSessionMemoryRequirementsKHR", "VK_KHR_video_queue");
2913 }
2914 AEMU_SCOPED_TRACE("vkGetVideoSessionMemoryRequirementsKHR");
2915 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2916 VkResult vkGetVideoSessionMemoryRequirementsKHR_VkResult_return = (VkResult)0;
2917 vkGetVideoSessionMemoryRequirementsKHR_VkResult_return = vkEnc->vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pVideoSessionMemoryRequirementsCount, pVideoSessionMemoryRequirements, true /* do lock */);
2918 return vkGetVideoSessionMemoryRequirementsKHR_VkResult_return;
2919}
2920static VkResult entry_vkBindVideoSessionMemoryKHR(
2921 VkDevice device,
2922 VkVideoSessionKHR videoSession,
2923 uint32_t videoSessionBindMemoryCount,
2924 const VkVideoBindMemoryKHR* pVideoSessionBindMemories)
2925{
2926 AEMU_SCOPED_TRACE("vkBindVideoSessionMemoryKHR");
2927 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2928 VkResult vkBindVideoSessionMemoryKHR_VkResult_return = (VkResult)0;
2929 vkBindVideoSessionMemoryKHR_VkResult_return = vkEnc->vkBindVideoSessionMemoryKHR(device, videoSession, videoSessionBindMemoryCount, pVideoSessionBindMemories, true /* do lock */);
2930 return vkBindVideoSessionMemoryKHR_VkResult_return;
2931}
2932static VkResult dynCheck_entry_vkBindVideoSessionMemoryKHR(
2933 VkDevice device,
2934 VkVideoSessionKHR videoSession,
2935 uint32_t videoSessionBindMemoryCount,
2936 const VkVideoBindMemoryKHR* pVideoSessionBindMemories)
2937{
2938 auto resources = ResourceTracker::get();
2939 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
2940 {
2941 sOnInvalidDynamicallyCheckedCall("vkBindVideoSessionMemoryKHR", "VK_KHR_video_queue");
2942 }
2943 AEMU_SCOPED_TRACE("vkBindVideoSessionMemoryKHR");
2944 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2945 VkResult vkBindVideoSessionMemoryKHR_VkResult_return = (VkResult)0;
2946 vkBindVideoSessionMemoryKHR_VkResult_return = vkEnc->vkBindVideoSessionMemoryKHR(device, videoSession, videoSessionBindMemoryCount, pVideoSessionBindMemories, true /* do lock */);
2947 return vkBindVideoSessionMemoryKHR_VkResult_return;
2948}
2949static VkResult entry_vkCreateVideoSessionParametersKHR(
2950 VkDevice device,
2951 const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
2952 const VkAllocationCallbacks* pAllocator,
2953 VkVideoSessionParametersKHR* pVideoSessionParameters)
2954{
2955 AEMU_SCOPED_TRACE("vkCreateVideoSessionParametersKHR");
2956 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2957 VkResult vkCreateVideoSessionParametersKHR_VkResult_return = (VkResult)0;
2958 vkCreateVideoSessionParametersKHR_VkResult_return = vkEnc->vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, true /* do lock */);
2959 return vkCreateVideoSessionParametersKHR_VkResult_return;
2960}
2961static VkResult dynCheck_entry_vkCreateVideoSessionParametersKHR(
2962 VkDevice device,
2963 const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
2964 const VkAllocationCallbacks* pAllocator,
2965 VkVideoSessionParametersKHR* pVideoSessionParameters)
2966{
2967 auto resources = ResourceTracker::get();
2968 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
2969 {
2970 sOnInvalidDynamicallyCheckedCall("vkCreateVideoSessionParametersKHR", "VK_KHR_video_queue");
2971 }
2972 AEMU_SCOPED_TRACE("vkCreateVideoSessionParametersKHR");
2973 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2974 VkResult vkCreateVideoSessionParametersKHR_VkResult_return = (VkResult)0;
2975 vkCreateVideoSessionParametersKHR_VkResult_return = vkEnc->vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, true /* do lock */);
2976 return vkCreateVideoSessionParametersKHR_VkResult_return;
2977}
2978static VkResult entry_vkUpdateVideoSessionParametersKHR(
2979 VkDevice device,
2980 VkVideoSessionParametersKHR videoSessionParameters,
2981 const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo)
2982{
2983 AEMU_SCOPED_TRACE("vkUpdateVideoSessionParametersKHR");
2984 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2985 VkResult vkUpdateVideoSessionParametersKHR_VkResult_return = (VkResult)0;
2986 vkUpdateVideoSessionParametersKHR_VkResult_return = vkEnc->vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, true /* do lock */);
2987 return vkUpdateVideoSessionParametersKHR_VkResult_return;
2988}
2989static VkResult dynCheck_entry_vkUpdateVideoSessionParametersKHR(
2990 VkDevice device,
2991 VkVideoSessionParametersKHR videoSessionParameters,
2992 const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo)
2993{
2994 auto resources = ResourceTracker::get();
2995 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
2996 {
2997 sOnInvalidDynamicallyCheckedCall("vkUpdateVideoSessionParametersKHR", "VK_KHR_video_queue");
2998 }
2999 AEMU_SCOPED_TRACE("vkUpdateVideoSessionParametersKHR");
3000 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3001 VkResult vkUpdateVideoSessionParametersKHR_VkResult_return = (VkResult)0;
3002 vkUpdateVideoSessionParametersKHR_VkResult_return = vkEnc->vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, true /* do lock */);
3003 return vkUpdateVideoSessionParametersKHR_VkResult_return;
3004}
3005static void entry_vkDestroyVideoSessionParametersKHR(
3006 VkDevice device,
3007 VkVideoSessionParametersKHR videoSessionParameters,
3008 const VkAllocationCallbacks* pAllocator)
3009{
3010 AEMU_SCOPED_TRACE("vkDestroyVideoSessionParametersKHR");
3011 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3012 vkEnc->vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, true /* do lock */);
3013}
3014static void dynCheck_entry_vkDestroyVideoSessionParametersKHR(
3015 VkDevice device,
3016 VkVideoSessionParametersKHR videoSessionParameters,
3017 const VkAllocationCallbacks* pAllocator)
3018{
3019 auto resources = ResourceTracker::get();
3020 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
3021 {
3022 sOnInvalidDynamicallyCheckedCall("vkDestroyVideoSessionParametersKHR", "VK_KHR_video_queue");
3023 }
3024 AEMU_SCOPED_TRACE("vkDestroyVideoSessionParametersKHR");
3025 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3026 vkEnc->vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, true /* do lock */);
3027}
3028static void entry_vkCmdBeginVideoCodingKHR(
3029 VkCommandBuffer commandBuffer,
3030 const VkVideoBeginCodingInfoKHR* pBeginInfo)
3031{
3032 AEMU_SCOPED_TRACE("vkCmdBeginVideoCodingKHR");
3033 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3034 vkEnc->vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, true /* do lock */);
3035}
3036static void entry_vkCmdEndVideoCodingKHR(
3037 VkCommandBuffer commandBuffer,
3038 const VkVideoEndCodingInfoKHR* pEndCodingInfo)
3039{
3040 AEMU_SCOPED_TRACE("vkCmdEndVideoCodingKHR");
3041 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3042 vkEnc->vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, true /* do lock */);
3043}
3044static void entry_vkCmdControlVideoCodingKHR(
3045 VkCommandBuffer commandBuffer,
3046 const VkVideoCodingControlInfoKHR* pCodingControlInfo)
3047{
3048 AEMU_SCOPED_TRACE("vkCmdControlVideoCodingKHR");
3049 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3050 vkEnc->vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, true /* do lock */);
3051}
3052#endif
3053#ifdef VK_KHR_video_decode_queue
3054static void entry_vkCmdDecodeVideoKHR(
3055 VkCommandBuffer commandBuffer,
3056 const VkVideoDecodeInfoKHR* pFrameInfo)
3057{
3058 AEMU_SCOPED_TRACE("vkCmdDecodeVideoKHR");
3059 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3060 vkEnc->vkCmdDecodeVideoKHR(commandBuffer, pFrameInfo, true /* do lock */);
3061}
3062#endif
3063#ifdef VK_KHR_dynamic_rendering
3064static void entry_vkCmdBeginRenderingKHR(
3065 VkCommandBuffer commandBuffer,
3066 const VkRenderingInfoKHR* pRenderingInfo)
3067{
3068 AEMU_SCOPED_TRACE("vkCmdBeginRenderingKHR");
3069 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3070 vkEnc->vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, true /* do lock */);
3071}
3072static void entry_vkCmdEndRenderingKHR(
3073 VkCommandBuffer commandBuffer)
3074{
3075 AEMU_SCOPED_TRACE("vkCmdEndRenderingKHR");
3076 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3077 vkEnc->vkCmdEndRenderingKHR(commandBuffer, true /* do lock */);
3078}
3079#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003080#ifdef VK_KHR_multiview
3081#endif
3082#ifdef VK_KHR_get_physical_device_properties2
3083static void entry_vkGetPhysicalDeviceFeatures2KHR(
3084 VkPhysicalDevice physicalDevice,
3085 VkPhysicalDeviceFeatures2* pFeatures)
3086{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003087 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003088 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003089 vkEnc->vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003090}
3091static void entry_vkGetPhysicalDeviceProperties2KHR(
3092 VkPhysicalDevice physicalDevice,
3093 VkPhysicalDeviceProperties2* pProperties)
3094{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003095 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003096 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003097 vkEnc->vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003098}
3099static void entry_vkGetPhysicalDeviceFormatProperties2KHR(
3100 VkPhysicalDevice physicalDevice,
3101 VkFormat format,
3102 VkFormatProperties2* pFormatProperties)
3103{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003104 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003105 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003106 vkEnc->vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003107}
3108static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2KHR(
3109 VkPhysicalDevice physicalDevice,
3110 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
3111 VkImageFormatProperties2* pImageFormatProperties)
3112{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003113 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003114 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003115 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07003116 auto resources = ResourceTracker::get();
3117 vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2KHR(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003118 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
3119}
3120static void entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
3121 VkPhysicalDevice physicalDevice,
3122 uint32_t* pQueueFamilyPropertyCount,
3123 VkQueueFamilyProperties2* pQueueFamilyProperties)
3124{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003125 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003126 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003127 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003128}
3129static void entry_vkGetPhysicalDeviceMemoryProperties2KHR(
3130 VkPhysicalDevice physicalDevice,
3131 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
3132{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003133 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003134 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003135 vkEnc->vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003136}
3137static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
3138 VkPhysicalDevice physicalDevice,
3139 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
3140 uint32_t* pPropertyCount,
3141 VkSparseImageFormatProperties2* pProperties)
3142{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003143 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003144 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003145 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003146}
3147#endif
3148#ifdef VK_KHR_device_group
3149static void entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
3150 VkDevice device,
3151 uint32_t heapIndex,
3152 uint32_t localDeviceIndex,
3153 uint32_t remoteDeviceIndex,
3154 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
3155{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003156 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003157 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003158 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003159}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003160static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
3161 VkDevice device,
3162 uint32_t heapIndex,
3163 uint32_t localDeviceIndex,
3164 uint32_t remoteDeviceIndex,
3165 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
3166{
3167 auto resources = ResourceTracker::get();
3168 if (!resources->hasDeviceExtension(device, "VK_KHR_device_group"))
3169 {
3170 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeaturesKHR", "VK_KHR_device_group");
3171 }
3172 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003173 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003174 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003175}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003176static void entry_vkCmdSetDeviceMaskKHR(
3177 VkCommandBuffer commandBuffer,
3178 uint32_t deviceMask)
3179{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003180 AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003181 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003182 vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003183}
3184static void entry_vkCmdDispatchBaseKHR(
3185 VkCommandBuffer commandBuffer,
3186 uint32_t baseGroupX,
3187 uint32_t baseGroupY,
3188 uint32_t baseGroupZ,
3189 uint32_t groupCountX,
3190 uint32_t groupCountY,
3191 uint32_t groupCountZ)
3192{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003193 AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003194 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003195 vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003196}
3197#endif
3198#ifdef VK_KHR_shader_draw_parameters
3199#endif
3200#ifdef VK_KHR_maintenance1
3201static void entry_vkTrimCommandPoolKHR(
3202 VkDevice device,
3203 VkCommandPool commandPool,
3204 VkCommandPoolTrimFlags flags)
3205{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003206 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003207 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003208 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003209}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003210static void dynCheck_entry_vkTrimCommandPoolKHR(
3211 VkDevice device,
3212 VkCommandPool commandPool,
3213 VkCommandPoolTrimFlags flags)
3214{
3215 auto resources = ResourceTracker::get();
3216 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance1"))
3217 {
3218 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPoolKHR", "VK_KHR_maintenance1");
3219 }
3220 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003221 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003222 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003223}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003224#endif
3225#ifdef VK_KHR_device_group_creation
3226static VkResult entry_vkEnumeratePhysicalDeviceGroupsKHR(
3227 VkInstance instance,
3228 uint32_t* pPhysicalDeviceGroupCount,
3229 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
3230{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003231 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003232 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003233 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003234 vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003235 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
3236}
3237#endif
3238#ifdef VK_KHR_external_memory_capabilities
3239static void entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
3240 VkPhysicalDevice physicalDevice,
3241 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
3242 VkExternalBufferProperties* pExternalBufferProperties)
3243{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003244 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003245 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003246 vkEnc->vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003247}
3248#endif
3249#ifdef VK_KHR_external_memory
3250#endif
3251#ifdef VK_KHR_external_memory_win32
3252static VkResult entry_vkGetMemoryWin32HandleKHR(
3253 VkDevice device,
3254 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3255 HANDLE* pHandle)
3256{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003257 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003258 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003259 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003260 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003261 return vkGetMemoryWin32HandleKHR_VkResult_return;
3262}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003263static VkResult dynCheck_entry_vkGetMemoryWin32HandleKHR(
3264 VkDevice device,
3265 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3266 HANDLE* pHandle)
3267{
3268 auto resources = ResourceTracker::get();
3269 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
3270 {
3271 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleKHR", "VK_KHR_external_memory_win32");
3272 }
3273 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003274 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003275 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003276 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003277 return vkGetMemoryWin32HandleKHR_VkResult_return;
3278}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003279static VkResult entry_vkGetMemoryWin32HandlePropertiesKHR(
3280 VkDevice device,
3281 VkExternalMemoryHandleTypeFlagBits handleType,
3282 HANDLE handle,
3283 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
3284{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003285 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003286 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003287 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003288 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003289 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
3290}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003291static VkResult dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR(
3292 VkDevice device,
3293 VkExternalMemoryHandleTypeFlagBits handleType,
3294 HANDLE handle,
3295 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
3296{
3297 auto resources = ResourceTracker::get();
3298 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
3299 {
3300 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandlePropertiesKHR", "VK_KHR_external_memory_win32");
3301 }
3302 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003303 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003304 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003305 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003306 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
3307}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003308#endif
3309#ifdef VK_KHR_external_memory_fd
3310static VkResult entry_vkGetMemoryFdKHR(
3311 VkDevice device,
3312 const VkMemoryGetFdInfoKHR* pGetFdInfo,
3313 int* pFd)
3314{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003315 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003316 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003317 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003318 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003319 return vkGetMemoryFdKHR_VkResult_return;
3320}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003321static VkResult dynCheck_entry_vkGetMemoryFdKHR(
3322 VkDevice device,
3323 const VkMemoryGetFdInfoKHR* pGetFdInfo,
3324 int* pFd)
3325{
3326 auto resources = ResourceTracker::get();
3327 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
3328 {
3329 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdKHR", "VK_KHR_external_memory_fd");
3330 }
3331 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003332 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003333 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003334 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003335 return vkGetMemoryFdKHR_VkResult_return;
3336}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003337static VkResult entry_vkGetMemoryFdPropertiesKHR(
3338 VkDevice device,
3339 VkExternalMemoryHandleTypeFlagBits handleType,
3340 int fd,
3341 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
3342{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003343 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003344 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003345 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003346 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003347 return vkGetMemoryFdPropertiesKHR_VkResult_return;
3348}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003349static VkResult dynCheck_entry_vkGetMemoryFdPropertiesKHR(
3350 VkDevice device,
3351 VkExternalMemoryHandleTypeFlagBits handleType,
3352 int fd,
3353 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
3354{
3355 auto resources = ResourceTracker::get();
3356 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
3357 {
3358 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdPropertiesKHR", "VK_KHR_external_memory_fd");
3359 }
3360 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003361 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003362 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003363 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003364 return vkGetMemoryFdPropertiesKHR_VkResult_return;
3365}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003366#endif
3367#ifdef VK_KHR_win32_keyed_mutex
3368#endif
3369#ifdef VK_KHR_external_semaphore_capabilities
3370static void entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
3371 VkPhysicalDevice physicalDevice,
3372 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
3373 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
3374{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003375 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003376 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003377 vkEnc->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003378}
3379#endif
3380#ifdef VK_KHR_external_semaphore
3381#endif
3382#ifdef VK_KHR_external_semaphore_win32
3383static VkResult entry_vkImportSemaphoreWin32HandleKHR(
3384 VkDevice device,
3385 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
3386{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003387 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003388 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003389 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003390 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003391 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
3392}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003393static VkResult dynCheck_entry_vkImportSemaphoreWin32HandleKHR(
3394 VkDevice device,
3395 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
3396{
3397 auto resources = ResourceTracker::get();
3398 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
3399 {
3400 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
3401 }
3402 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003403 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003404 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003405 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003406 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
3407}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003408static VkResult entry_vkGetSemaphoreWin32HandleKHR(
3409 VkDevice device,
3410 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3411 HANDLE* pHandle)
3412{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003413 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003414 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003415 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003416 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003417 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
3418}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003419static VkResult dynCheck_entry_vkGetSemaphoreWin32HandleKHR(
3420 VkDevice device,
3421 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3422 HANDLE* pHandle)
3423{
3424 auto resources = ResourceTracker::get();
3425 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
3426 {
3427 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
3428 }
3429 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003430 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003431 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003432 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003433 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
3434}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003435#endif
3436#ifdef VK_KHR_external_semaphore_fd
3437static VkResult entry_vkImportSemaphoreFdKHR(
3438 VkDevice device,
3439 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
3440{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003441 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003442 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003443 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08003444 auto resources = ResourceTracker::get();
3445 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003446 return vkImportSemaphoreFdKHR_VkResult_return;
3447}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003448static VkResult dynCheck_entry_vkImportSemaphoreFdKHR(
3449 VkDevice device,
3450 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
3451{
3452 auto resources = ResourceTracker::get();
3453 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3454 {
3455 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3456 }
3457 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003458 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003459 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
3460 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
3461 return vkImportSemaphoreFdKHR_VkResult_return;
3462}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003463static VkResult entry_vkGetSemaphoreFdKHR(
3464 VkDevice device,
3465 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3466 int* pFd)
3467{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003468 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003469 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003470 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08003471 auto resources = ResourceTracker::get();
3472 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003473 return vkGetSemaphoreFdKHR_VkResult_return;
3474}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003475static VkResult dynCheck_entry_vkGetSemaphoreFdKHR(
3476 VkDevice device,
3477 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3478 int* pFd)
3479{
3480 auto resources = ResourceTracker::get();
3481 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3482 {
3483 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3484 }
3485 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003486 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003487 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
3488 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3489 return vkGetSemaphoreFdKHR_VkResult_return;
3490}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003491#endif
3492#ifdef VK_KHR_push_descriptor
3493static void entry_vkCmdPushDescriptorSetKHR(
3494 VkCommandBuffer commandBuffer,
3495 VkPipelineBindPoint pipelineBindPoint,
3496 VkPipelineLayout layout,
3497 uint32_t set,
3498 uint32_t descriptorWriteCount,
3499 const VkWriteDescriptorSet* pDescriptorWrites)
3500{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003501 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003502 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003503 vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003504}
3505static void entry_vkCmdPushDescriptorSetWithTemplateKHR(
3506 VkCommandBuffer commandBuffer,
3507 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3508 VkPipelineLayout layout,
3509 uint32_t set,
3510 const void* pData)
3511{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003512 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003513 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003514 vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003515}
3516#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003517#ifdef VK_KHR_shader_float16_int8
3518#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003519#ifdef VK_KHR_16bit_storage
3520#endif
3521#ifdef VK_KHR_incremental_present
3522#endif
3523#ifdef VK_KHR_descriptor_update_template
3524static VkResult entry_vkCreateDescriptorUpdateTemplateKHR(
3525 VkDevice device,
3526 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3527 const VkAllocationCallbacks* pAllocator,
3528 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3529{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003530 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003531 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003532 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003533 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003534 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3535}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003536static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR(
3537 VkDevice device,
3538 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3539 const VkAllocationCallbacks* pAllocator,
3540 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3541{
3542 auto resources = ResourceTracker::get();
3543 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3544 {
3545 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3546 }
3547 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003548 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003549 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003550 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003551 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3552}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003553static void entry_vkDestroyDescriptorUpdateTemplateKHR(
3554 VkDevice device,
3555 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3556 const VkAllocationCallbacks* pAllocator)
3557{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003558 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003559 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003560 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003561}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003562static void dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR(
3563 VkDevice device,
3564 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3565 const VkAllocationCallbacks* pAllocator)
3566{
3567 auto resources = ResourceTracker::get();
3568 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3569 {
3570 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3571 }
3572 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003573 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003574 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003575}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003576static void entry_vkUpdateDescriptorSetWithTemplateKHR(
3577 VkDevice device,
3578 VkDescriptorSet descriptorSet,
3579 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3580 const void* pData)
3581{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003582 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003583 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003584 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003585}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003586static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR(
3587 VkDevice device,
3588 VkDescriptorSet descriptorSet,
3589 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3590 const void* pData)
3591{
3592 auto resources = ResourceTracker::get();
3593 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3594 {
3595 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateKHR", "VK_KHR_descriptor_update_template");
3596 }
3597 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003598 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003599 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003600}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003601#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003602#ifdef VK_KHR_imageless_framebuffer
3603#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003604#ifdef VK_KHR_create_renderpass2
3605static VkResult entry_vkCreateRenderPass2KHR(
3606 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08003607 const VkRenderPassCreateInfo2* pCreateInfo,
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003608 const VkAllocationCallbacks* pAllocator,
3609 VkRenderPass* pRenderPass)
3610{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003611 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003612 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003613 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003614 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003615 return vkCreateRenderPass2KHR_VkResult_return;
3616}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003617static VkResult dynCheck_entry_vkCreateRenderPass2KHR(
3618 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08003619 const VkRenderPassCreateInfo2* pCreateInfo,
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003620 const VkAllocationCallbacks* pAllocator,
3621 VkRenderPass* pRenderPass)
3622{
3623 auto resources = ResourceTracker::get();
3624 if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"))
3625 {
3626 sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2KHR", "VK_KHR_create_renderpass2");
3627 }
3628 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003629 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003630 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003631 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003632 return vkCreateRenderPass2KHR_VkResult_return;
3633}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003634static void entry_vkCmdBeginRenderPass2KHR(
3635 VkCommandBuffer commandBuffer,
3636 const VkRenderPassBeginInfo* pRenderPassBegin,
Yilong Lia8d45f12021-02-07 02:30:21 -08003637 const VkSubpassBeginInfo* pSubpassBeginInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003638{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003639 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003640 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003641 vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003642}
3643static void entry_vkCmdNextSubpass2KHR(
3644 VkCommandBuffer commandBuffer,
Yilong Lia8d45f12021-02-07 02:30:21 -08003645 const VkSubpassBeginInfo* pSubpassBeginInfo,
3646 const VkSubpassEndInfo* pSubpassEndInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003647{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003648 AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003649 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003650 vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003651}
3652static void entry_vkCmdEndRenderPass2KHR(
3653 VkCommandBuffer commandBuffer,
Yilong Lia8d45f12021-02-07 02:30:21 -08003654 const VkSubpassEndInfo* pSubpassEndInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003655{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003656 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003657 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003658 vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003659}
3660#endif
3661#ifdef VK_KHR_shared_presentable_image
3662static VkResult entry_vkGetSwapchainStatusKHR(
3663 VkDevice device,
3664 VkSwapchainKHR swapchain)
3665{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003666 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003667 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003668 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003669 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003670 return vkGetSwapchainStatusKHR_VkResult_return;
3671}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003672static VkResult dynCheck_entry_vkGetSwapchainStatusKHR(
3673 VkDevice device,
3674 VkSwapchainKHR swapchain)
3675{
3676 auto resources = ResourceTracker::get();
3677 if (!resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image"))
3678 {
3679 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainStatusKHR", "VK_KHR_shared_presentable_image");
3680 }
3681 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003682 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003683 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003684 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003685 return vkGetSwapchainStatusKHR_VkResult_return;
3686}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003687#endif
3688#ifdef VK_KHR_external_fence_capabilities
3689static void entry_vkGetPhysicalDeviceExternalFencePropertiesKHR(
3690 VkPhysicalDevice physicalDevice,
3691 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
3692 VkExternalFenceProperties* pExternalFenceProperties)
3693{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003694 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003695 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003696 auto resources = ResourceTracker::get();
3697 resources->on_vkGetPhysicalDeviceExternalFencePropertiesKHR(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003698}
3699#endif
3700#ifdef VK_KHR_external_fence
3701#endif
3702#ifdef VK_KHR_external_fence_win32
3703static VkResult entry_vkImportFenceWin32HandleKHR(
3704 VkDevice device,
3705 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3706{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003707 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003708 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003709 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003710 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003711 return vkImportFenceWin32HandleKHR_VkResult_return;
3712}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003713static VkResult dynCheck_entry_vkImportFenceWin32HandleKHR(
3714 VkDevice device,
3715 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3716{
3717 auto resources = ResourceTracker::get();
3718 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3719 {
3720 sOnInvalidDynamicallyCheckedCall("vkImportFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3721 }
3722 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003723 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003724 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003725 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003726 return vkImportFenceWin32HandleKHR_VkResult_return;
3727}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003728static VkResult entry_vkGetFenceWin32HandleKHR(
3729 VkDevice device,
3730 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3731 HANDLE* pHandle)
3732{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003733 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003734 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003735 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003736 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003737 return vkGetFenceWin32HandleKHR_VkResult_return;
3738}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003739static VkResult dynCheck_entry_vkGetFenceWin32HandleKHR(
3740 VkDevice device,
3741 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3742 HANDLE* pHandle)
3743{
3744 auto resources = ResourceTracker::get();
3745 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3746 {
3747 sOnInvalidDynamicallyCheckedCall("vkGetFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3748 }
3749 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003750 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003751 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003752 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003753 return vkGetFenceWin32HandleKHR_VkResult_return;
3754}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003755#endif
3756#ifdef VK_KHR_external_fence_fd
3757static VkResult entry_vkImportFenceFdKHR(
3758 VkDevice device,
3759 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3760{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003761 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003762 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003763 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003764 auto resources = ResourceTracker::get();
3765 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003766 return vkImportFenceFdKHR_VkResult_return;
3767}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003768static VkResult dynCheck_entry_vkImportFenceFdKHR(
3769 VkDevice device,
3770 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3771{
3772 auto resources = ResourceTracker::get();
3773 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3774 {
3775 sOnInvalidDynamicallyCheckedCall("vkImportFenceFdKHR", "VK_KHR_external_fence_fd");
3776 }
3777 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003778 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003779 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
3780 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
3781 return vkImportFenceFdKHR_VkResult_return;
3782}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003783static VkResult entry_vkGetFenceFdKHR(
3784 VkDevice device,
3785 const VkFenceGetFdInfoKHR* pGetFdInfo,
3786 int* pFd)
3787{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003788 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003789 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003790 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003791 auto resources = ResourceTracker::get();
3792 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003793 return vkGetFenceFdKHR_VkResult_return;
3794}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003795static VkResult dynCheck_entry_vkGetFenceFdKHR(
3796 VkDevice device,
3797 const VkFenceGetFdInfoKHR* pGetFdInfo,
3798 int* pFd)
3799{
3800 auto resources = ResourceTracker::get();
3801 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3802 {
3803 sOnInvalidDynamicallyCheckedCall("vkGetFenceFdKHR", "VK_KHR_external_fence_fd");
3804 }
3805 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003806 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003807 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
3808 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3809 return vkGetFenceFdKHR_VkResult_return;
3810}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003811#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003812#ifdef VK_KHR_performance_query
3813static VkResult entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
3814 VkPhysicalDevice physicalDevice,
3815 uint32_t queueFamilyIndex,
3816 uint32_t* pCounterCount,
3817 VkPerformanceCounterKHR* pCounters,
3818 VkPerformanceCounterDescriptionKHR* pCounterDescriptions)
3819{
3820 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
3821 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3822 VkResult vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return = (VkResult)0;
3823 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, true /* do lock */);
3824 return vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return;
3825}
3826static void entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
3827 VkPhysicalDevice physicalDevice,
3828 const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo,
3829 uint32_t* pNumPasses)
3830{
3831 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
3832 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3833 vkEnc->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, true /* do lock */);
3834}
3835static VkResult entry_vkAcquireProfilingLockKHR(
3836 VkDevice device,
3837 const VkAcquireProfilingLockInfoKHR* pInfo)
3838{
3839 AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
3840 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3841 VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
3842 vkAcquireProfilingLockKHR_VkResult_return = vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
3843 return vkAcquireProfilingLockKHR_VkResult_return;
3844}
3845static VkResult dynCheck_entry_vkAcquireProfilingLockKHR(
3846 VkDevice device,
3847 const VkAcquireProfilingLockInfoKHR* pInfo)
3848{
3849 auto resources = ResourceTracker::get();
3850 if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query"))
3851 {
3852 sOnInvalidDynamicallyCheckedCall("vkAcquireProfilingLockKHR", "VK_KHR_performance_query");
3853 }
3854 AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
3855 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3856 VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
3857 vkAcquireProfilingLockKHR_VkResult_return = vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
3858 return vkAcquireProfilingLockKHR_VkResult_return;
3859}
3860static void entry_vkReleaseProfilingLockKHR(
3861 VkDevice device)
3862{
3863 AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
3864 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3865 vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
3866}
3867static void dynCheck_entry_vkReleaseProfilingLockKHR(
3868 VkDevice device)
3869{
3870 auto resources = ResourceTracker::get();
3871 if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query"))
3872 {
3873 sOnInvalidDynamicallyCheckedCall("vkReleaseProfilingLockKHR", "VK_KHR_performance_query");
3874 }
3875 AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
3876 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3877 vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
3878}
3879#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003880#ifdef VK_KHR_maintenance2
3881#endif
3882#ifdef VK_KHR_get_surface_capabilities2
3883static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
3884 VkPhysicalDevice physicalDevice,
3885 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3886 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
3887{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003888 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003889 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003890 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003891 vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003892 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
3893}
3894static VkResult entry_vkGetPhysicalDeviceSurfaceFormats2KHR(
3895 VkPhysicalDevice physicalDevice,
3896 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3897 uint32_t* pSurfaceFormatCount,
3898 VkSurfaceFormat2KHR* pSurfaceFormats)
3899{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003900 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003901 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003902 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003903 vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003904 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
3905}
3906#endif
3907#ifdef VK_KHR_variable_pointers
3908#endif
3909#ifdef VK_KHR_get_display_properties2
3910static VkResult entry_vkGetPhysicalDeviceDisplayProperties2KHR(
3911 VkPhysicalDevice physicalDevice,
3912 uint32_t* pPropertyCount,
3913 VkDisplayProperties2KHR* pProperties)
3914{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003915 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003916 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003917 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003918 vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003919 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
3920}
3921static VkResult entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
3922 VkPhysicalDevice physicalDevice,
3923 uint32_t* pPropertyCount,
3924 VkDisplayPlaneProperties2KHR* pProperties)
3925{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003926 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003927 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003928 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003929 vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003930 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
3931}
3932static VkResult entry_vkGetDisplayModeProperties2KHR(
3933 VkPhysicalDevice physicalDevice,
3934 VkDisplayKHR display,
3935 uint32_t* pPropertyCount,
3936 VkDisplayModeProperties2KHR* pProperties)
3937{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003938 AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003939 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003940 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003941 vkGetDisplayModeProperties2KHR_VkResult_return = vkEnc->vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003942 return vkGetDisplayModeProperties2KHR_VkResult_return;
3943}
3944static VkResult entry_vkGetDisplayPlaneCapabilities2KHR(
3945 VkPhysicalDevice physicalDevice,
3946 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
3947 VkDisplayPlaneCapabilities2KHR* pCapabilities)
3948{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003949 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003950 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003951 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003952 vkGetDisplayPlaneCapabilities2KHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003953 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
3954}
3955#endif
3956#ifdef VK_KHR_dedicated_allocation
3957#endif
3958#ifdef VK_KHR_storage_buffer_storage_class
3959#endif
3960#ifdef VK_KHR_relaxed_block_layout
3961#endif
3962#ifdef VK_KHR_get_memory_requirements2
3963static void entry_vkGetImageMemoryRequirements2KHR(
3964 VkDevice device,
3965 const VkImageMemoryRequirementsInfo2* pInfo,
3966 VkMemoryRequirements2* pMemoryRequirements)
3967{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003968 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003969 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003970 auto resources = ResourceTracker::get();
3971 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003972}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003973static void dynCheck_entry_vkGetImageMemoryRequirements2KHR(
3974 VkDevice device,
3975 const VkImageMemoryRequirementsInfo2* pInfo,
3976 VkMemoryRequirements2* pMemoryRequirements)
3977{
3978 auto resources = ResourceTracker::get();
3979 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3980 {
3981 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3982 }
3983 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003984 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003985 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3986}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003987static void entry_vkGetBufferMemoryRequirements2KHR(
3988 VkDevice device,
3989 const VkBufferMemoryRequirementsInfo2* pInfo,
3990 VkMemoryRequirements2* pMemoryRequirements)
3991{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003992 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003993 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003994 auto resources = ResourceTracker::get();
3995 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003996}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003997static void dynCheck_entry_vkGetBufferMemoryRequirements2KHR(
3998 VkDevice device,
3999 const VkBufferMemoryRequirementsInfo2* pInfo,
4000 VkMemoryRequirements2* pMemoryRequirements)
4001{
4002 auto resources = ResourceTracker::get();
4003 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
4004 {
4005 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
4006 }
4007 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004008 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004009 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
4010}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004011static void entry_vkGetImageSparseMemoryRequirements2KHR(
4012 VkDevice device,
4013 const VkImageSparseMemoryRequirementsInfo2* pInfo,
4014 uint32_t* pSparseMemoryRequirementCount,
4015 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
4016{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004017 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004018 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004019 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004020}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004021static void dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR(
4022 VkDevice device,
4023 const VkImageSparseMemoryRequirementsInfo2* pInfo,
4024 uint32_t* pSparseMemoryRequirementCount,
4025 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
4026{
4027 auto resources = ResourceTracker::get();
4028 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
4029 {
4030 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
4031 }
4032 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004033 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004034 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004035}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004036#endif
4037#ifdef VK_KHR_image_format_list
4038#endif
4039#ifdef VK_KHR_sampler_ycbcr_conversion
4040static VkResult entry_vkCreateSamplerYcbcrConversionKHR(
4041 VkDevice device,
4042 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
4043 const VkAllocationCallbacks* pAllocator,
4044 VkSamplerYcbcrConversion* pYcbcrConversion)
4045{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004046 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004047 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004048 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08004049 auto resources = ResourceTracker::get();
4050 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004051 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
4052}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004053static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversionKHR(
4054 VkDevice device,
4055 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
4056 const VkAllocationCallbacks* pAllocator,
4057 VkSamplerYcbcrConversion* pYcbcrConversion)
4058{
4059 auto resources = ResourceTracker::get();
4060 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
4061 {
4062 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
4063 }
4064 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004065 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004066 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
4067 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
4068 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
4069}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004070static void entry_vkDestroySamplerYcbcrConversionKHR(
4071 VkDevice device,
4072 VkSamplerYcbcrConversion ycbcrConversion,
4073 const VkAllocationCallbacks* pAllocator)
4074{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004075 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004076 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07004077 auto resources = ResourceTracker::get();
4078 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004079}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004080static void dynCheck_entry_vkDestroySamplerYcbcrConversionKHR(
4081 VkDevice device,
4082 VkSamplerYcbcrConversion ycbcrConversion,
4083 const VkAllocationCallbacks* pAllocator)
4084{
4085 auto resources = ResourceTracker::get();
4086 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
4087 {
4088 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
4089 }
4090 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004091 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004092 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
4093}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004094#endif
4095#ifdef VK_KHR_bind_memory2
4096static VkResult entry_vkBindBufferMemory2KHR(
4097 VkDevice device,
4098 uint32_t bindInfoCount,
4099 const VkBindBufferMemoryInfo* pBindInfos)
4100{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004101 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004102 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004103 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08004104 auto resources = ResourceTracker::get();
4105 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004106 return vkBindBufferMemory2KHR_VkResult_return;
4107}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004108static VkResult dynCheck_entry_vkBindBufferMemory2KHR(
4109 VkDevice device,
4110 uint32_t bindInfoCount,
4111 const VkBindBufferMemoryInfo* pBindInfos)
4112{
4113 auto resources = ResourceTracker::get();
4114 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
4115 {
4116 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2KHR", "VK_KHR_bind_memory2");
4117 }
4118 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004119 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004120 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
4121 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
4122 return vkBindBufferMemory2KHR_VkResult_return;
4123}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004124static VkResult entry_vkBindImageMemory2KHR(
4125 VkDevice device,
4126 uint32_t bindInfoCount,
4127 const VkBindImageMemoryInfo* pBindInfos)
4128{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004129 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004130 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004131 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08004132 auto resources = ResourceTracker::get();
4133 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004134 return vkBindImageMemory2KHR_VkResult_return;
4135}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004136static VkResult dynCheck_entry_vkBindImageMemory2KHR(
4137 VkDevice device,
4138 uint32_t bindInfoCount,
4139 const VkBindImageMemoryInfo* pBindInfos)
4140{
4141 auto resources = ResourceTracker::get();
4142 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
4143 {
4144 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2KHR", "VK_KHR_bind_memory2");
4145 }
4146 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004147 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004148 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
4149 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
4150 return vkBindImageMemory2KHR_VkResult_return;
4151}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004152#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004153#ifdef VK_KHR_portability_subset
4154#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004155#ifdef VK_KHR_maintenance3
4156static void entry_vkGetDescriptorSetLayoutSupportKHR(
4157 VkDevice device,
4158 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
4159 VkDescriptorSetLayoutSupport* pSupport)
4160{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004161 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004162 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004163 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004164}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004165static void dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR(
4166 VkDevice device,
4167 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
4168 VkDescriptorSetLayoutSupport* pSupport)
4169{
4170 auto resources = ResourceTracker::get();
4171 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance3"))
4172 {
4173 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupportKHR", "VK_KHR_maintenance3");
4174 }
4175 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004176 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004177 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004178}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004179#endif
4180#ifdef VK_KHR_draw_indirect_count
4181static void entry_vkCmdDrawIndirectCountKHR(
4182 VkCommandBuffer commandBuffer,
4183 VkBuffer buffer,
4184 VkDeviceSize offset,
4185 VkBuffer countBuffer,
4186 VkDeviceSize countBufferOffset,
4187 uint32_t maxDrawCount,
4188 uint32_t stride)
4189{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004190 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004191 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004192 vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004193}
4194static void entry_vkCmdDrawIndexedIndirectCountKHR(
4195 VkCommandBuffer commandBuffer,
4196 VkBuffer buffer,
4197 VkDeviceSize offset,
4198 VkBuffer countBuffer,
4199 VkDeviceSize countBufferOffset,
4200 uint32_t maxDrawCount,
4201 uint32_t stride)
4202{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004203 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004204 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004205 vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004206}
4207#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004208#ifdef VK_KHR_shader_subgroup_extended_types
4209#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004210#ifdef VK_KHR_8bit_storage
4211#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004212#ifdef VK_KHR_shader_atomic_int64
4213#endif
4214#ifdef VK_KHR_shader_clock
4215#endif
4216#ifdef VK_KHR_driver_properties
4217#endif
4218#ifdef VK_KHR_shader_float_controls
4219#endif
4220#ifdef VK_KHR_depth_stencil_resolve
4221#endif
4222#ifdef VK_KHR_swapchain_mutable_format
4223#endif
4224#ifdef VK_KHR_timeline_semaphore
4225static VkResult entry_vkGetSemaphoreCounterValueKHR(
4226 VkDevice device,
4227 VkSemaphore semaphore,
4228 uint64_t* pValue)
4229{
4230 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
4231 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4232 VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
4233 vkGetSemaphoreCounterValueKHR_VkResult_return = vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
4234 return vkGetSemaphoreCounterValueKHR_VkResult_return;
4235}
4236static VkResult dynCheck_entry_vkGetSemaphoreCounterValueKHR(
4237 VkDevice device,
4238 VkSemaphore semaphore,
4239 uint64_t* pValue)
4240{
4241 auto resources = ResourceTracker::get();
4242 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
4243 {
4244 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreCounterValueKHR", "VK_KHR_timeline_semaphore");
4245 }
4246 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
4247 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4248 VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
4249 vkGetSemaphoreCounterValueKHR_VkResult_return = vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
4250 return vkGetSemaphoreCounterValueKHR_VkResult_return;
4251}
4252static VkResult entry_vkWaitSemaphoresKHR(
4253 VkDevice device,
4254 const VkSemaphoreWaitInfo* pWaitInfo,
4255 uint64_t timeout)
4256{
4257 AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
4258 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4259 VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
4260 vkWaitSemaphoresKHR_VkResult_return = vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
4261 return vkWaitSemaphoresKHR_VkResult_return;
4262}
4263static VkResult dynCheck_entry_vkWaitSemaphoresKHR(
4264 VkDevice device,
4265 const VkSemaphoreWaitInfo* pWaitInfo,
4266 uint64_t timeout)
4267{
4268 auto resources = ResourceTracker::get();
4269 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
4270 {
4271 sOnInvalidDynamicallyCheckedCall("vkWaitSemaphoresKHR", "VK_KHR_timeline_semaphore");
4272 }
4273 AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
4274 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4275 VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
4276 vkWaitSemaphoresKHR_VkResult_return = vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
4277 return vkWaitSemaphoresKHR_VkResult_return;
4278}
4279static VkResult entry_vkSignalSemaphoreKHR(
4280 VkDevice device,
4281 const VkSemaphoreSignalInfo* pSignalInfo)
4282{
4283 AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
4284 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4285 VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
4286 vkSignalSemaphoreKHR_VkResult_return = vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
4287 return vkSignalSemaphoreKHR_VkResult_return;
4288}
4289static VkResult dynCheck_entry_vkSignalSemaphoreKHR(
4290 VkDevice device,
4291 const VkSemaphoreSignalInfo* pSignalInfo)
4292{
4293 auto resources = ResourceTracker::get();
4294 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
4295 {
4296 sOnInvalidDynamicallyCheckedCall("vkSignalSemaphoreKHR", "VK_KHR_timeline_semaphore");
4297 }
4298 AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
4299 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4300 VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
4301 vkSignalSemaphoreKHR_VkResult_return = vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
4302 return vkSignalSemaphoreKHR_VkResult_return;
4303}
4304#endif
4305#ifdef VK_KHR_vulkan_memory_model
4306#endif
4307#ifdef VK_KHR_shader_terminate_invocation
4308#endif
4309#ifdef VK_KHR_fragment_shading_rate
4310static VkResult entry_vkGetPhysicalDeviceFragmentShadingRatesKHR(
4311 VkPhysicalDevice physicalDevice,
4312 uint32_t* pFragmentShadingRateCount,
4313 VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates)
4314{
4315 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFragmentShadingRatesKHR");
4316 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4317 VkResult vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return = (VkResult)0;
4318 vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, true /* do lock */);
4319 return vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return;
4320}
4321static void entry_vkCmdSetFragmentShadingRateKHR(
4322 VkCommandBuffer commandBuffer,
4323 const VkExtent2D* pFragmentSize,
4324 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
4325{
4326 AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateKHR");
4327 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4328 vkEnc->vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, true /* do lock */);
4329}
4330#endif
4331#ifdef VK_KHR_spirv_1_4
4332#endif
4333#ifdef VK_KHR_surface_protected_capabilities
4334#endif
4335#ifdef VK_KHR_separate_depth_stencil_layouts
4336#endif
Yilong Li353409a2022-01-04 02:37:56 -08004337#ifdef VK_KHR_present_wait
4338static VkResult entry_vkWaitForPresentKHR(
4339 VkDevice device,
4340 VkSwapchainKHR swapchain,
4341 uint64_t presentId,
4342 uint64_t timeout)
4343{
4344 AEMU_SCOPED_TRACE("vkWaitForPresentKHR");
4345 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4346 VkResult vkWaitForPresentKHR_VkResult_return = (VkResult)0;
4347 vkWaitForPresentKHR_VkResult_return = vkEnc->vkWaitForPresentKHR(device, swapchain, presentId, timeout, true /* do lock */);
4348 return vkWaitForPresentKHR_VkResult_return;
4349}
4350static VkResult dynCheck_entry_vkWaitForPresentKHR(
4351 VkDevice device,
4352 VkSwapchainKHR swapchain,
4353 uint64_t presentId,
4354 uint64_t timeout)
4355{
4356 auto resources = ResourceTracker::get();
4357 if (!resources->hasDeviceExtension(device, "VK_KHR_present_wait"))
4358 {
4359 sOnInvalidDynamicallyCheckedCall("vkWaitForPresentKHR", "VK_KHR_present_wait");
4360 }
4361 AEMU_SCOPED_TRACE("vkWaitForPresentKHR");
4362 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4363 VkResult vkWaitForPresentKHR_VkResult_return = (VkResult)0;
4364 vkWaitForPresentKHR_VkResult_return = vkEnc->vkWaitForPresentKHR(device, swapchain, presentId, timeout, true /* do lock */);
4365 return vkWaitForPresentKHR_VkResult_return;
4366}
4367#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004368#ifdef VK_KHR_uniform_buffer_standard_layout
4369#endif
4370#ifdef VK_KHR_buffer_device_address
4371static VkDeviceAddress entry_vkGetBufferDeviceAddressKHR(
4372 VkDevice device,
4373 const VkBufferDeviceAddressInfo* pInfo)
4374{
4375 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
4376 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4377 VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
4378 vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
4379 return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
4380}
4381static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressKHR(
4382 VkDevice device,
4383 const VkBufferDeviceAddressInfo* pInfo)
4384{
4385 auto resources = ResourceTracker::get();
4386 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4387 {
4388 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressKHR", "VK_KHR_buffer_device_address");
4389 }
4390 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
4391 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4392 VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
4393 vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
4394 return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
4395}
4396static uint64_t entry_vkGetBufferOpaqueCaptureAddressKHR(
4397 VkDevice device,
4398 const VkBufferDeviceAddressInfo* pInfo)
4399{
4400 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
4401 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4402 uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4403 vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4404 return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
4405}
4406static uint64_t dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR(
4407 VkDevice device,
4408 const VkBufferDeviceAddressInfo* pInfo)
4409{
4410 auto resources = ResourceTracker::get();
4411 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4412 {
4413 sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureAddressKHR", "VK_KHR_buffer_device_address");
4414 }
4415 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
4416 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4417 uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4418 vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4419 return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
4420}
4421static uint64_t entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
4422 VkDevice device,
4423 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
4424{
4425 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
4426 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4427 uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4428 vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4429 return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
4430}
4431static uint64_t dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
4432 VkDevice device,
4433 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
4434{
4435 auto resources = ResourceTracker::get();
4436 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4437 {
4438 sOnInvalidDynamicallyCheckedCall("vkGetDeviceMemoryOpaqueCaptureAddressKHR", "VK_KHR_buffer_device_address");
4439 }
4440 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
4441 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4442 uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4443 vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4444 return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
4445}
4446#endif
4447#ifdef VK_KHR_deferred_host_operations
4448static VkResult entry_vkCreateDeferredOperationKHR(
4449 VkDevice device,
4450 const VkAllocationCallbacks* pAllocator,
4451 VkDeferredOperationKHR* pDeferredOperation)
4452{
4453 AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
4454 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4455 VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
4456 vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, true /* do lock */);
4457 return vkCreateDeferredOperationKHR_VkResult_return;
4458}
4459static VkResult dynCheck_entry_vkCreateDeferredOperationKHR(
4460 VkDevice device,
4461 const VkAllocationCallbacks* pAllocator,
4462 VkDeferredOperationKHR* pDeferredOperation)
4463{
4464 auto resources = ResourceTracker::get();
4465 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4466 {
4467 sOnInvalidDynamicallyCheckedCall("vkCreateDeferredOperationKHR", "VK_KHR_deferred_host_operations");
4468 }
4469 AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
4470 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4471 VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
4472 vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, true /* do lock */);
4473 return vkCreateDeferredOperationKHR_VkResult_return;
4474}
4475static void entry_vkDestroyDeferredOperationKHR(
4476 VkDevice device,
4477 VkDeferredOperationKHR operation,
4478 const VkAllocationCallbacks* pAllocator)
4479{
4480 AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
4481 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4482 vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
4483}
4484static void dynCheck_entry_vkDestroyDeferredOperationKHR(
4485 VkDevice device,
4486 VkDeferredOperationKHR operation,
4487 const VkAllocationCallbacks* pAllocator)
4488{
4489 auto resources = ResourceTracker::get();
4490 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4491 {
4492 sOnInvalidDynamicallyCheckedCall("vkDestroyDeferredOperationKHR", "VK_KHR_deferred_host_operations");
4493 }
4494 AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
4495 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4496 vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
4497}
4498static uint32_t entry_vkGetDeferredOperationMaxConcurrencyKHR(
4499 VkDevice device,
4500 VkDeferredOperationKHR operation)
4501{
4502 AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
4503 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4504 uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
4505 vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
4506 return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
4507}
4508static uint32_t dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR(
4509 VkDevice device,
4510 VkDeferredOperationKHR operation)
4511{
4512 auto resources = ResourceTracker::get();
4513 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4514 {
4515 sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationMaxConcurrencyKHR", "VK_KHR_deferred_host_operations");
4516 }
4517 AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
4518 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4519 uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
4520 vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
4521 return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
4522}
4523static VkResult entry_vkGetDeferredOperationResultKHR(
4524 VkDevice device,
4525 VkDeferredOperationKHR operation)
4526{
4527 AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
4528 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4529 VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
4530 vkGetDeferredOperationResultKHR_VkResult_return = vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
4531 return vkGetDeferredOperationResultKHR_VkResult_return;
4532}
4533static VkResult dynCheck_entry_vkGetDeferredOperationResultKHR(
4534 VkDevice device,
4535 VkDeferredOperationKHR operation)
4536{
4537 auto resources = ResourceTracker::get();
4538 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4539 {
4540 sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationResultKHR", "VK_KHR_deferred_host_operations");
4541 }
4542 AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
4543 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4544 VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
4545 vkGetDeferredOperationResultKHR_VkResult_return = vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
4546 return vkGetDeferredOperationResultKHR_VkResult_return;
4547}
4548static VkResult entry_vkDeferredOperationJoinKHR(
4549 VkDevice device,
4550 VkDeferredOperationKHR operation)
4551{
4552 AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
4553 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4554 VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
4555 vkDeferredOperationJoinKHR_VkResult_return = vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
4556 return vkDeferredOperationJoinKHR_VkResult_return;
4557}
4558static VkResult dynCheck_entry_vkDeferredOperationJoinKHR(
4559 VkDevice device,
4560 VkDeferredOperationKHR operation)
4561{
4562 auto resources = ResourceTracker::get();
4563 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4564 {
4565 sOnInvalidDynamicallyCheckedCall("vkDeferredOperationJoinKHR", "VK_KHR_deferred_host_operations");
4566 }
4567 AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
4568 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4569 VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
4570 vkDeferredOperationJoinKHR_VkResult_return = vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
4571 return vkDeferredOperationJoinKHR_VkResult_return;
4572}
4573#endif
4574#ifdef VK_KHR_pipeline_executable_properties
4575static VkResult entry_vkGetPipelineExecutablePropertiesKHR(
4576 VkDevice device,
4577 const VkPipelineInfoKHR* pPipelineInfo,
4578 uint32_t* pExecutableCount,
4579 VkPipelineExecutablePropertiesKHR* pProperties)
4580{
4581 AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
4582 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4583 VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
4584 vkGetPipelineExecutablePropertiesKHR_VkResult_return = vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, true /* do lock */);
4585 return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
4586}
4587static VkResult dynCheck_entry_vkGetPipelineExecutablePropertiesKHR(
4588 VkDevice device,
4589 const VkPipelineInfoKHR* pPipelineInfo,
4590 uint32_t* pExecutableCount,
4591 VkPipelineExecutablePropertiesKHR* pProperties)
4592{
4593 auto resources = ResourceTracker::get();
4594 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4595 {
4596 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutablePropertiesKHR", "VK_KHR_pipeline_executable_properties");
4597 }
4598 AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
4599 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4600 VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
4601 vkGetPipelineExecutablePropertiesKHR_VkResult_return = vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, true /* do lock */);
4602 return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
4603}
4604static VkResult entry_vkGetPipelineExecutableStatisticsKHR(
4605 VkDevice device,
4606 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4607 uint32_t* pStatisticCount,
4608 VkPipelineExecutableStatisticKHR* pStatistics)
4609{
4610 AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
4611 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4612 VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
4613 vkGetPipelineExecutableStatisticsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, true /* do lock */);
4614 return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
4615}
4616static VkResult dynCheck_entry_vkGetPipelineExecutableStatisticsKHR(
4617 VkDevice device,
4618 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4619 uint32_t* pStatisticCount,
4620 VkPipelineExecutableStatisticKHR* pStatistics)
4621{
4622 auto resources = ResourceTracker::get();
4623 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4624 {
4625 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableStatisticsKHR", "VK_KHR_pipeline_executable_properties");
4626 }
4627 AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
4628 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4629 VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
4630 vkGetPipelineExecutableStatisticsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, true /* do lock */);
4631 return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
4632}
4633static VkResult entry_vkGetPipelineExecutableInternalRepresentationsKHR(
4634 VkDevice device,
4635 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4636 uint32_t* pInternalRepresentationCount,
4637 VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
4638{
4639 AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
4640 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4641 VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
4642 vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, true /* do lock */);
4643 return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
4644}
4645static VkResult dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR(
4646 VkDevice device,
4647 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4648 uint32_t* pInternalRepresentationCount,
4649 VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
4650{
4651 auto resources = ResourceTracker::get();
4652 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4653 {
4654 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableInternalRepresentationsKHR", "VK_KHR_pipeline_executable_properties");
4655 }
4656 AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
4657 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4658 VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
4659 vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, true /* do lock */);
4660 return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
4661}
4662#endif
Yilong Li353409a2022-01-04 02:37:56 -08004663#ifdef VK_KHR_shader_integer_dot_product
4664#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004665#ifdef VK_KHR_pipeline_library
4666#endif
4667#ifdef VK_KHR_shader_non_semantic_info
4668#endif
Yilong Li353409a2022-01-04 02:37:56 -08004669#ifdef VK_KHR_present_id
4670#endif
4671#ifdef VK_KHR_video_encode_queue
4672static void entry_vkCmdEncodeVideoKHR(
4673 VkCommandBuffer commandBuffer,
4674 const VkVideoEncodeInfoKHR* pEncodeInfo)
4675{
4676 AEMU_SCOPED_TRACE("vkCmdEncodeVideoKHR");
4677 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4678 vkEnc->vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, true /* do lock */);
4679}
4680#endif
4681#ifdef VK_KHR_synchronization2
4682static void entry_vkCmdSetEvent2KHR(
4683 VkCommandBuffer commandBuffer,
4684 VkEvent event,
4685 const VkDependencyInfoKHR* pDependencyInfo)
4686{
4687 AEMU_SCOPED_TRACE("vkCmdSetEvent2KHR");
4688 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4689 vkEnc->vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, true /* do lock */);
4690}
4691static void entry_vkCmdResetEvent2KHR(
4692 VkCommandBuffer commandBuffer,
4693 VkEvent event,
4694 VkPipelineStageFlags2KHR stageMask)
4695{
4696 AEMU_SCOPED_TRACE("vkCmdResetEvent2KHR");
4697 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4698 vkEnc->vkCmdResetEvent2KHR(commandBuffer, event, stageMask, true /* do lock */);
4699}
4700static void entry_vkCmdWaitEvents2KHR(
4701 VkCommandBuffer commandBuffer,
4702 uint32_t eventCount,
4703 const VkEvent* pEvents,
4704 const VkDependencyInfoKHR* pDependencyInfos)
4705{
4706 AEMU_SCOPED_TRACE("vkCmdWaitEvents2KHR");
4707 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4708 vkEnc->vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, true /* do lock */);
4709}
4710static void entry_vkCmdPipelineBarrier2KHR(
4711 VkCommandBuffer commandBuffer,
4712 const VkDependencyInfoKHR* pDependencyInfo)
4713{
4714 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier2KHR");
4715 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4716 vkEnc->vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, true /* do lock */);
4717}
4718static void entry_vkCmdWriteTimestamp2KHR(
4719 VkCommandBuffer commandBuffer,
4720 VkPipelineStageFlags2KHR stage,
4721 VkQueryPool queryPool,
4722 uint32_t query)
4723{
4724 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp2KHR");
4725 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4726 vkEnc->vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, true /* do lock */);
4727}
4728static VkResult entry_vkQueueSubmit2KHR(
4729 VkQueue queue,
4730 uint32_t submitCount,
4731 const VkSubmitInfo2KHR* pSubmits,
4732 VkFence fence)
4733{
4734 AEMU_SCOPED_TRACE("vkQueueSubmit2KHR");
4735 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
4736 VkResult vkQueueSubmit2KHR_VkResult_return = (VkResult)0;
4737 vkQueueSubmit2KHR_VkResult_return = vkEnc->vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, true /* do lock */);
4738 return vkQueueSubmit2KHR_VkResult_return;
4739}
4740static void entry_vkCmdWriteBufferMarker2AMD(
4741 VkCommandBuffer commandBuffer,
4742 VkPipelineStageFlags2KHR stage,
4743 VkBuffer dstBuffer,
4744 VkDeviceSize dstOffset,
4745 uint32_t marker)
4746{
4747 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarker2AMD");
4748 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4749 vkEnc->vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, true /* do lock */);
4750}
4751static void entry_vkGetQueueCheckpointData2NV(
4752 VkQueue queue,
4753 uint32_t* pCheckpointDataCount,
4754 VkCheckpointData2NV* pCheckpointData)
4755{
4756 AEMU_SCOPED_TRACE("vkGetQueueCheckpointData2NV");
4757 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
4758 vkEnc->vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, true /* do lock */);
4759}
4760#endif
4761#ifdef VK_KHR_shader_subgroup_uniform_control_flow
4762#endif
4763#ifdef VK_KHR_zero_initialize_workgroup_memory
4764#endif
4765#ifdef VK_KHR_workgroup_memory_explicit_layout
4766#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004767#ifdef VK_KHR_copy_commands2
4768static void entry_vkCmdCopyBuffer2KHR(
4769 VkCommandBuffer commandBuffer,
4770 const VkCopyBufferInfo2KHR* pCopyBufferInfo)
4771{
4772 AEMU_SCOPED_TRACE("vkCmdCopyBuffer2KHR");
4773 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4774 vkEnc->vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, true /* do lock */);
4775}
4776static void entry_vkCmdCopyImage2KHR(
4777 VkCommandBuffer commandBuffer,
4778 const VkCopyImageInfo2KHR* pCopyImageInfo)
4779{
4780 AEMU_SCOPED_TRACE("vkCmdCopyImage2KHR");
4781 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4782 vkEnc->vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, true /* do lock */);
4783}
4784static void entry_vkCmdCopyBufferToImage2KHR(
4785 VkCommandBuffer commandBuffer,
4786 const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo)
4787{
4788 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage2KHR");
4789 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4790 vkEnc->vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, true /* do lock */);
4791}
4792static void entry_vkCmdCopyImageToBuffer2KHR(
4793 VkCommandBuffer commandBuffer,
4794 const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo)
4795{
4796 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer2KHR");
4797 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4798 vkEnc->vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, true /* do lock */);
4799}
4800static void entry_vkCmdBlitImage2KHR(
4801 VkCommandBuffer commandBuffer,
4802 const VkBlitImageInfo2KHR* pBlitImageInfo)
4803{
4804 AEMU_SCOPED_TRACE("vkCmdBlitImage2KHR");
4805 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4806 vkEnc->vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, true /* do lock */);
4807}
4808static void entry_vkCmdResolveImage2KHR(
4809 VkCommandBuffer commandBuffer,
4810 const VkResolveImageInfo2KHR* pResolveImageInfo)
4811{
4812 AEMU_SCOPED_TRACE("vkCmdResolveImage2KHR");
4813 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4814 vkEnc->vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, true /* do lock */);
4815}
Lingfeng Yang4c056b22020-07-02 11:43:57 -07004816#endif
Yilong Li353409a2022-01-04 02:37:56 -08004817#ifdef VK_KHR_format_feature_flags2
4818#endif
4819#ifdef VK_KHR_maintenance4
4820static void entry_vkGetDeviceBufferMemoryRequirementsKHR(
4821 VkDevice device,
4822 const VkDeviceBufferMemoryRequirementsKHR* pInfo,
4823 VkMemoryRequirements2* pMemoryRequirements)
4824{
4825 AEMU_SCOPED_TRACE("vkGetDeviceBufferMemoryRequirementsKHR");
4826 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4827 vkEnc->vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, true /* do lock */);
4828}
4829static void dynCheck_entry_vkGetDeviceBufferMemoryRequirementsKHR(
4830 VkDevice device,
4831 const VkDeviceBufferMemoryRequirementsKHR* pInfo,
4832 VkMemoryRequirements2* pMemoryRequirements)
4833{
4834 auto resources = ResourceTracker::get();
4835 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance4"))
4836 {
4837 sOnInvalidDynamicallyCheckedCall("vkGetDeviceBufferMemoryRequirementsKHR", "VK_KHR_maintenance4");
4838 }
4839 AEMU_SCOPED_TRACE("vkGetDeviceBufferMemoryRequirementsKHR");
4840 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4841 vkEnc->vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, true /* do lock */);
4842}
4843static void entry_vkGetDeviceImageMemoryRequirementsKHR(
4844 VkDevice device,
4845 const VkDeviceImageMemoryRequirementsKHR* pInfo,
4846 VkMemoryRequirements2* pMemoryRequirements)
4847{
4848 AEMU_SCOPED_TRACE("vkGetDeviceImageMemoryRequirementsKHR");
4849 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4850 vkEnc->vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, true /* do lock */);
4851}
4852static void dynCheck_entry_vkGetDeviceImageMemoryRequirementsKHR(
4853 VkDevice device,
4854 const VkDeviceImageMemoryRequirementsKHR* pInfo,
4855 VkMemoryRequirements2* pMemoryRequirements)
4856{
4857 auto resources = ResourceTracker::get();
4858 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance4"))
4859 {
4860 sOnInvalidDynamicallyCheckedCall("vkGetDeviceImageMemoryRequirementsKHR", "VK_KHR_maintenance4");
4861 }
4862 AEMU_SCOPED_TRACE("vkGetDeviceImageMemoryRequirementsKHR");
4863 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4864 vkEnc->vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, true /* do lock */);
4865}
4866static void entry_vkGetDeviceImageSparseMemoryRequirementsKHR(
4867 VkDevice device,
4868 const VkDeviceImageMemoryRequirementsKHR* pInfo,
4869 uint32_t* pSparseMemoryRequirementCount,
4870 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
4871{
4872 AEMU_SCOPED_TRACE("vkGetDeviceImageSparseMemoryRequirementsKHR");
4873 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4874 vkEnc->vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
4875}
4876static void dynCheck_entry_vkGetDeviceImageSparseMemoryRequirementsKHR(
4877 VkDevice device,
4878 const VkDeviceImageMemoryRequirementsKHR* pInfo,
4879 uint32_t* pSparseMemoryRequirementCount,
4880 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
4881{
4882 auto resources = ResourceTracker::get();
4883 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance4"))
4884 {
4885 sOnInvalidDynamicallyCheckedCall("vkGetDeviceImageSparseMemoryRequirementsKHR", "VK_KHR_maintenance4");
4886 }
4887 AEMU_SCOPED_TRACE("vkGetDeviceImageSparseMemoryRequirementsKHR");
4888 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4889 vkEnc->vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
4890}
4891#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08004892#ifdef VK_ANDROID_native_buffer
4893static VkResult entry_vkGetSwapchainGrallocUsageANDROID(
4894 VkDevice device,
4895 VkFormat format,
4896 VkImageUsageFlags imageUsage,
4897 int* grallocUsage)
4898{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004899 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004900 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang808a6312018-11-13 21:06:15 -08004901 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004902 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004903 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
4904}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004905static VkResult dynCheck_entry_vkGetSwapchainGrallocUsageANDROID(
4906 VkDevice device,
4907 VkFormat format,
4908 VkImageUsageFlags imageUsage,
4909 int* grallocUsage)
4910{
4911 auto resources = ResourceTracker::get();
4912 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
4913 {
4914 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainGrallocUsageANDROID", "VK_ANDROID_native_buffer");
4915 }
4916 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004917 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004918 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004919 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004920 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
4921}
Lingfeng Yang808a6312018-11-13 21:06:15 -08004922static VkResult entry_vkAcquireImageANDROID(
4923 VkDevice device,
4924 VkImage image,
4925 int nativeFenceFd,
4926 VkSemaphore semaphore,
4927 VkFence fence)
4928{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004929 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004930 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang808a6312018-11-13 21:06:15 -08004931 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004932 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004933 return vkAcquireImageANDROID_VkResult_return;
4934}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004935static VkResult dynCheck_entry_vkAcquireImageANDROID(
4936 VkDevice device,
4937 VkImage image,
4938 int nativeFenceFd,
4939 VkSemaphore semaphore,
4940 VkFence fence)
4941{
4942 auto resources = ResourceTracker::get();
4943 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
4944 {
4945 sOnInvalidDynamicallyCheckedCall("vkAcquireImageANDROID", "VK_ANDROID_native_buffer");
4946 }
4947 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004948 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004949 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004950 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004951 return vkAcquireImageANDROID_VkResult_return;
4952}
Lingfeng Yang808a6312018-11-13 21:06:15 -08004953static VkResult entry_vkQueueSignalReleaseImageANDROID(
4954 VkQueue queue,
4955 uint32_t waitSemaphoreCount,
4956 const VkSemaphore* pWaitSemaphores,
4957 VkImage image,
4958 int* pNativeFenceFd)
4959{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004960 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004961 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004962 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang084e5342021-07-15 13:06:43 -07004963 auto resources = ResourceTracker::get();
4964 vkQueueSignalReleaseImageANDROID_VkResult_return = resources->on_vkQueueSignalReleaseImageANDROID(vkEnc, VK_SUCCESS, queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004965 return vkQueueSignalReleaseImageANDROID_VkResult_return;
4966}
4967#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004968#ifdef VK_EXT_debug_report
4969static VkResult entry_vkCreateDebugReportCallbackEXT(
4970 VkInstance instance,
4971 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
4972 const VkAllocationCallbacks* pAllocator,
4973 VkDebugReportCallbackEXT* pCallback)
4974{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004975 AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004976 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004977 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004978 vkCreateDebugReportCallbackEXT_VkResult_return = vkEnc->vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004979 return vkCreateDebugReportCallbackEXT_VkResult_return;
4980}
4981static void entry_vkDestroyDebugReportCallbackEXT(
4982 VkInstance instance,
4983 VkDebugReportCallbackEXT callback,
4984 const VkAllocationCallbacks* pAllocator)
4985{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004986 AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004987 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004988 vkEnc->vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004989}
4990static void entry_vkDebugReportMessageEXT(
4991 VkInstance instance,
4992 VkDebugReportFlagsEXT flags,
4993 VkDebugReportObjectTypeEXT objectType,
4994 uint64_t object,
4995 size_t location,
4996 int32_t messageCode,
4997 const char* pLayerPrefix,
4998 const char* pMessage)
4999{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005000 AEMU_SCOPED_TRACE("vkDebugReportMessageEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005001 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005002 vkEnc->vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005003}
5004#endif
5005#ifdef VK_NV_glsl_shader
5006#endif
5007#ifdef VK_EXT_depth_range_unrestricted
5008#endif
5009#ifdef VK_IMG_filter_cubic
5010#endif
5011#ifdef VK_AMD_rasterization_order
5012#endif
5013#ifdef VK_AMD_shader_trinary_minmax
5014#endif
5015#ifdef VK_AMD_shader_explicit_vertex_parameter
5016#endif
5017#ifdef VK_EXT_debug_marker
5018static VkResult entry_vkDebugMarkerSetObjectTagEXT(
5019 VkDevice device,
5020 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
5021{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005022 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005023 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005024 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005025 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005026 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
5027}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005028static VkResult dynCheck_entry_vkDebugMarkerSetObjectTagEXT(
5029 VkDevice device,
5030 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
5031{
5032 auto resources = ResourceTracker::get();
5033 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
5034 {
5035 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectTagEXT", "VK_EXT_debug_marker");
5036 }
5037 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005038 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005039 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005040 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005041 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
5042}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005043static VkResult entry_vkDebugMarkerSetObjectNameEXT(
5044 VkDevice device,
5045 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
5046{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005047 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005048 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005049 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005050 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005051 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
5052}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005053static VkResult dynCheck_entry_vkDebugMarkerSetObjectNameEXT(
5054 VkDevice device,
5055 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
5056{
5057 auto resources = ResourceTracker::get();
5058 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
5059 {
5060 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectNameEXT", "VK_EXT_debug_marker");
5061 }
5062 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005063 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005064 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005065 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005066 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
5067}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005068static void entry_vkCmdDebugMarkerBeginEXT(
5069 VkCommandBuffer commandBuffer,
5070 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
5071{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005072 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005073 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005074 vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005075}
5076static void entry_vkCmdDebugMarkerEndEXT(
5077 VkCommandBuffer commandBuffer)
5078{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005079 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005080 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005081 vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005082}
5083static void entry_vkCmdDebugMarkerInsertEXT(
5084 VkCommandBuffer commandBuffer,
5085 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
5086{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005087 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005088 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005089 vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005090}
5091#endif
5092#ifdef VK_AMD_gcn_shader
5093#endif
5094#ifdef VK_NV_dedicated_allocation
5095#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005096#ifdef VK_EXT_transform_feedback
5097static void entry_vkCmdBindTransformFeedbackBuffersEXT(
5098 VkCommandBuffer commandBuffer,
5099 uint32_t firstBinding,
5100 uint32_t bindingCount,
5101 const VkBuffer* pBuffers,
5102 const VkDeviceSize* pOffsets,
5103 const VkDeviceSize* pSizes)
5104{
5105 AEMU_SCOPED_TRACE("vkCmdBindTransformFeedbackBuffersEXT");
5106 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5107 vkEnc->vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, true /* do lock */);
5108}
5109static void entry_vkCmdBeginTransformFeedbackEXT(
5110 VkCommandBuffer commandBuffer,
5111 uint32_t firstCounterBuffer,
5112 uint32_t counterBufferCount,
5113 const VkBuffer* pCounterBuffers,
5114 const VkDeviceSize* pCounterBufferOffsets)
5115{
5116 AEMU_SCOPED_TRACE("vkCmdBeginTransformFeedbackEXT");
5117 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5118 vkEnc->vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
5119}
5120static void entry_vkCmdEndTransformFeedbackEXT(
5121 VkCommandBuffer commandBuffer,
5122 uint32_t firstCounterBuffer,
5123 uint32_t counterBufferCount,
5124 const VkBuffer* pCounterBuffers,
5125 const VkDeviceSize* pCounterBufferOffsets)
5126{
5127 AEMU_SCOPED_TRACE("vkCmdEndTransformFeedbackEXT");
5128 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5129 vkEnc->vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
5130}
5131static void entry_vkCmdBeginQueryIndexedEXT(
5132 VkCommandBuffer commandBuffer,
5133 VkQueryPool queryPool,
5134 uint32_t query,
5135 VkQueryControlFlags flags,
5136 uint32_t index)
5137{
5138 AEMU_SCOPED_TRACE("vkCmdBeginQueryIndexedEXT");
5139 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5140 vkEnc->vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, true /* do lock */);
5141}
5142static void entry_vkCmdEndQueryIndexedEXT(
5143 VkCommandBuffer commandBuffer,
5144 VkQueryPool queryPool,
5145 uint32_t query,
5146 uint32_t index)
5147{
5148 AEMU_SCOPED_TRACE("vkCmdEndQueryIndexedEXT");
5149 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5150 vkEnc->vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, true /* do lock */);
5151}
5152static void entry_vkCmdDrawIndirectByteCountEXT(
5153 VkCommandBuffer commandBuffer,
5154 uint32_t instanceCount,
5155 uint32_t firstInstance,
5156 VkBuffer counterBuffer,
5157 VkDeviceSize counterBufferOffset,
5158 uint32_t counterOffset,
5159 uint32_t vertexStride)
5160{
5161 AEMU_SCOPED_TRACE("vkCmdDrawIndirectByteCountEXT");
5162 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5163 vkEnc->vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, true /* do lock */);
5164}
5165#endif
Yilong Li353409a2022-01-04 02:37:56 -08005166#ifdef VK_NVX_binary_import
5167static VkResult entry_vkCreateCuModuleNVX(
5168 VkDevice device,
5169 const VkCuModuleCreateInfoNVX* pCreateInfo,
5170 const VkAllocationCallbacks* pAllocator,
5171 VkCuModuleNVX* pModule)
5172{
5173 AEMU_SCOPED_TRACE("vkCreateCuModuleNVX");
5174 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5175 VkResult vkCreateCuModuleNVX_VkResult_return = (VkResult)0;
5176 vkCreateCuModuleNVX_VkResult_return = vkEnc->vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, true /* do lock */);
5177 return vkCreateCuModuleNVX_VkResult_return;
5178}
5179static VkResult dynCheck_entry_vkCreateCuModuleNVX(
5180 VkDevice device,
5181 const VkCuModuleCreateInfoNVX* pCreateInfo,
5182 const VkAllocationCallbacks* pAllocator,
5183 VkCuModuleNVX* pModule)
5184{
5185 auto resources = ResourceTracker::get();
5186 if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import"))
5187 {
5188 sOnInvalidDynamicallyCheckedCall("vkCreateCuModuleNVX", "VK_NVX_binary_import");
5189 }
5190 AEMU_SCOPED_TRACE("vkCreateCuModuleNVX");
5191 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5192 VkResult vkCreateCuModuleNVX_VkResult_return = (VkResult)0;
5193 vkCreateCuModuleNVX_VkResult_return = vkEnc->vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, true /* do lock */);
5194 return vkCreateCuModuleNVX_VkResult_return;
5195}
5196static VkResult entry_vkCreateCuFunctionNVX(
5197 VkDevice device,
5198 const VkCuFunctionCreateInfoNVX* pCreateInfo,
5199 const VkAllocationCallbacks* pAllocator,
5200 VkCuFunctionNVX* pFunction)
5201{
5202 AEMU_SCOPED_TRACE("vkCreateCuFunctionNVX");
5203 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5204 VkResult vkCreateCuFunctionNVX_VkResult_return = (VkResult)0;
5205 vkCreateCuFunctionNVX_VkResult_return = vkEnc->vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, true /* do lock */);
5206 return vkCreateCuFunctionNVX_VkResult_return;
5207}
5208static VkResult dynCheck_entry_vkCreateCuFunctionNVX(
5209 VkDevice device,
5210 const VkCuFunctionCreateInfoNVX* pCreateInfo,
5211 const VkAllocationCallbacks* pAllocator,
5212 VkCuFunctionNVX* pFunction)
5213{
5214 auto resources = ResourceTracker::get();
5215 if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import"))
5216 {
5217 sOnInvalidDynamicallyCheckedCall("vkCreateCuFunctionNVX", "VK_NVX_binary_import");
5218 }
5219 AEMU_SCOPED_TRACE("vkCreateCuFunctionNVX");
5220 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5221 VkResult vkCreateCuFunctionNVX_VkResult_return = (VkResult)0;
5222 vkCreateCuFunctionNVX_VkResult_return = vkEnc->vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, true /* do lock */);
5223 return vkCreateCuFunctionNVX_VkResult_return;
5224}
5225static void entry_vkDestroyCuModuleNVX(
5226 VkDevice device,
5227 VkCuModuleNVX module,
5228 const VkAllocationCallbacks* pAllocator)
5229{
5230 AEMU_SCOPED_TRACE("vkDestroyCuModuleNVX");
5231 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5232 vkEnc->vkDestroyCuModuleNVX(device, module, pAllocator, true /* do lock */);
5233}
5234static void dynCheck_entry_vkDestroyCuModuleNVX(
5235 VkDevice device,
5236 VkCuModuleNVX module,
5237 const VkAllocationCallbacks* pAllocator)
5238{
5239 auto resources = ResourceTracker::get();
5240 if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import"))
5241 {
5242 sOnInvalidDynamicallyCheckedCall("vkDestroyCuModuleNVX", "VK_NVX_binary_import");
5243 }
5244 AEMU_SCOPED_TRACE("vkDestroyCuModuleNVX");
5245 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5246 vkEnc->vkDestroyCuModuleNVX(device, module, pAllocator, true /* do lock */);
5247}
5248static void entry_vkDestroyCuFunctionNVX(
5249 VkDevice device,
5250 VkCuFunctionNVX function,
5251 const VkAllocationCallbacks* pAllocator)
5252{
5253 AEMU_SCOPED_TRACE("vkDestroyCuFunctionNVX");
5254 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5255 vkEnc->vkDestroyCuFunctionNVX(device, function, pAllocator, true /* do lock */);
5256}
5257static void dynCheck_entry_vkDestroyCuFunctionNVX(
5258 VkDevice device,
5259 VkCuFunctionNVX function,
5260 const VkAllocationCallbacks* pAllocator)
5261{
5262 auto resources = ResourceTracker::get();
5263 if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import"))
5264 {
5265 sOnInvalidDynamicallyCheckedCall("vkDestroyCuFunctionNVX", "VK_NVX_binary_import");
5266 }
5267 AEMU_SCOPED_TRACE("vkDestroyCuFunctionNVX");
5268 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5269 vkEnc->vkDestroyCuFunctionNVX(device, function, pAllocator, true /* do lock */);
5270}
5271static void entry_vkCmdCuLaunchKernelNVX(
5272 VkCommandBuffer commandBuffer,
5273 const VkCuLaunchInfoNVX* pLaunchInfo)
5274{
5275 AEMU_SCOPED_TRACE("vkCmdCuLaunchKernelNVX");
5276 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5277 vkEnc->vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, true /* do lock */);
5278}
5279#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005280#ifdef VK_NVX_image_view_handle
5281static uint32_t entry_vkGetImageViewHandleNVX(
5282 VkDevice device,
5283 const VkImageViewHandleInfoNVX* pInfo)
5284{
5285 AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
5286 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5287 uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
5288 vkGetImageViewHandleNVX_uint32_t_return = vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
5289 return vkGetImageViewHandleNVX_uint32_t_return;
5290}
5291static uint32_t dynCheck_entry_vkGetImageViewHandleNVX(
5292 VkDevice device,
5293 const VkImageViewHandleInfoNVX* pInfo)
5294{
5295 auto resources = ResourceTracker::get();
5296 if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle"))
5297 {
5298 sOnInvalidDynamicallyCheckedCall("vkGetImageViewHandleNVX", "VK_NVX_image_view_handle");
5299 }
5300 AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
5301 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5302 uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
5303 vkGetImageViewHandleNVX_uint32_t_return = vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
5304 return vkGetImageViewHandleNVX_uint32_t_return;
5305}
5306static VkResult entry_vkGetImageViewAddressNVX(
5307 VkDevice device,
5308 VkImageView imageView,
5309 VkImageViewAddressPropertiesNVX* pProperties)
5310{
5311 AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
5312 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5313 VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
5314 vkGetImageViewAddressNVX_VkResult_return = vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
5315 return vkGetImageViewAddressNVX_VkResult_return;
5316}
5317static VkResult dynCheck_entry_vkGetImageViewAddressNVX(
5318 VkDevice device,
5319 VkImageView imageView,
5320 VkImageViewAddressPropertiesNVX* pProperties)
5321{
5322 auto resources = ResourceTracker::get();
5323 if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle"))
5324 {
5325 sOnInvalidDynamicallyCheckedCall("vkGetImageViewAddressNVX", "VK_NVX_image_view_handle");
5326 }
5327 AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
5328 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5329 VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
5330 vkGetImageViewAddressNVX_VkResult_return = vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
5331 return vkGetImageViewAddressNVX_VkResult_return;
5332}
5333#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005334#ifdef VK_AMD_draw_indirect_count
5335static void entry_vkCmdDrawIndirectCountAMD(
5336 VkCommandBuffer commandBuffer,
5337 VkBuffer buffer,
5338 VkDeviceSize offset,
5339 VkBuffer countBuffer,
5340 VkDeviceSize countBufferOffset,
5341 uint32_t maxDrawCount,
5342 uint32_t stride)
5343{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005344 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005345 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005346 vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005347}
5348static void entry_vkCmdDrawIndexedIndirectCountAMD(
5349 VkCommandBuffer commandBuffer,
5350 VkBuffer buffer,
5351 VkDeviceSize offset,
5352 VkBuffer countBuffer,
5353 VkDeviceSize countBufferOffset,
5354 uint32_t maxDrawCount,
5355 uint32_t stride)
5356{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005357 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005358 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005359 vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005360}
5361#endif
5362#ifdef VK_AMD_negative_viewport_height
5363#endif
5364#ifdef VK_AMD_gpu_shader_half_float
5365#endif
5366#ifdef VK_AMD_shader_ballot
5367#endif
Yilong Li353409a2022-01-04 02:37:56 -08005368#ifdef VK_EXT_video_encode_h264
5369#endif
5370#ifdef VK_EXT_video_encode_h265
5371#endif
5372#ifdef VK_EXT_video_decode_h264
5373#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005374#ifdef VK_AMD_texture_gather_bias_lod
5375#endif
5376#ifdef VK_AMD_shader_info
5377static VkResult entry_vkGetShaderInfoAMD(
5378 VkDevice device,
5379 VkPipeline pipeline,
5380 VkShaderStageFlagBits shaderStage,
5381 VkShaderInfoTypeAMD infoType,
5382 size_t* pInfoSize,
5383 void* pInfo)
5384{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005385 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005386 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005387 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005388 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005389 return vkGetShaderInfoAMD_VkResult_return;
5390}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005391static VkResult dynCheck_entry_vkGetShaderInfoAMD(
5392 VkDevice device,
5393 VkPipeline pipeline,
5394 VkShaderStageFlagBits shaderStage,
5395 VkShaderInfoTypeAMD infoType,
5396 size_t* pInfoSize,
5397 void* pInfo)
5398{
5399 auto resources = ResourceTracker::get();
5400 if (!resources->hasDeviceExtension(device, "VK_AMD_shader_info"))
5401 {
5402 sOnInvalidDynamicallyCheckedCall("vkGetShaderInfoAMD", "VK_AMD_shader_info");
5403 }
5404 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005405 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005406 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005407 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005408 return vkGetShaderInfoAMD_VkResult_return;
5409}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005410#endif
5411#ifdef VK_AMD_shader_image_load_store_lod
5412#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005413#ifdef VK_GGP_stream_descriptor_surface
5414static VkResult entry_vkCreateStreamDescriptorSurfaceGGP(
5415 VkInstance instance,
5416 const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
5417 const VkAllocationCallbacks* pAllocator,
5418 VkSurfaceKHR* pSurface)
5419{
5420 AEMU_SCOPED_TRACE("vkCreateStreamDescriptorSurfaceGGP");
5421 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5422 VkResult vkCreateStreamDescriptorSurfaceGGP_VkResult_return = (VkResult)0;
5423 vkCreateStreamDescriptorSurfaceGGP_VkResult_return = vkEnc->vkCreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
5424 return vkCreateStreamDescriptorSurfaceGGP_VkResult_return;
5425}
5426#endif
5427#ifdef VK_NV_corner_sampled_image
5428#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005429#ifdef VK_IMG_format_pvrtc
5430#endif
5431#ifdef VK_NV_external_memory_capabilities
5432static VkResult entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
5433 VkPhysicalDevice physicalDevice,
5434 VkFormat format,
5435 VkImageType type,
5436 VkImageTiling tiling,
5437 VkImageUsageFlags usage,
5438 VkImageCreateFlags flags,
5439 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
5440 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
5441{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005442 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005443 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005444 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005445 vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005446 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
5447}
5448#endif
5449#ifdef VK_NV_external_memory
5450#endif
5451#ifdef VK_NV_external_memory_win32
5452static VkResult entry_vkGetMemoryWin32HandleNV(
5453 VkDevice device,
5454 VkDeviceMemory memory,
5455 VkExternalMemoryHandleTypeFlagsNV handleType,
5456 HANDLE* pHandle)
5457{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005458 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005459 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005460 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005461 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005462 return vkGetMemoryWin32HandleNV_VkResult_return;
5463}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005464static VkResult dynCheck_entry_vkGetMemoryWin32HandleNV(
5465 VkDevice device,
5466 VkDeviceMemory memory,
5467 VkExternalMemoryHandleTypeFlagsNV handleType,
5468 HANDLE* pHandle)
5469{
5470 auto resources = ResourceTracker::get();
5471 if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_win32"))
5472 {
5473 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleNV", "VK_NV_external_memory_win32");
5474 }
5475 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005476 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005477 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005478 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005479 return vkGetMemoryWin32HandleNV_VkResult_return;
5480}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005481#endif
5482#ifdef VK_NV_win32_keyed_mutex
5483#endif
5484#ifdef VK_EXT_validation_flags
5485#endif
5486#ifdef VK_NN_vi_surface
5487static VkResult entry_vkCreateViSurfaceNN(
5488 VkInstance instance,
5489 const VkViSurfaceCreateInfoNN* pCreateInfo,
5490 const VkAllocationCallbacks* pAllocator,
5491 VkSurfaceKHR* pSurface)
5492{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005493 AEMU_SCOPED_TRACE("vkCreateViSurfaceNN");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005494 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005495 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005496 vkCreateViSurfaceNN_VkResult_return = vkEnc->vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005497 return vkCreateViSurfaceNN_VkResult_return;
5498}
5499#endif
5500#ifdef VK_EXT_shader_subgroup_ballot
5501#endif
5502#ifdef VK_EXT_shader_subgroup_vote
5503#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005504#ifdef VK_EXT_texture_compression_astc_hdr
5505#endif
5506#ifdef VK_EXT_astc_decode_mode
5507#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005508#ifdef VK_EXT_conditional_rendering
5509static void entry_vkCmdBeginConditionalRenderingEXT(
5510 VkCommandBuffer commandBuffer,
5511 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
5512{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005513 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005514 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005515 vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005516}
5517static void entry_vkCmdEndConditionalRenderingEXT(
5518 VkCommandBuffer commandBuffer)
5519{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005520 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005521 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005522 vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005523}
5524#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005525#ifdef VK_NV_clip_space_w_scaling
5526static void entry_vkCmdSetViewportWScalingNV(
5527 VkCommandBuffer commandBuffer,
5528 uint32_t firstViewport,
5529 uint32_t viewportCount,
5530 const VkViewportWScalingNV* pViewportWScalings)
5531{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005532 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005533 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005534 vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005535}
5536#endif
5537#ifdef VK_EXT_direct_mode_display
5538static VkResult entry_vkReleaseDisplayEXT(
5539 VkPhysicalDevice physicalDevice,
5540 VkDisplayKHR display)
5541{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005542 AEMU_SCOPED_TRACE("vkReleaseDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005543 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005544 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005545 vkReleaseDisplayEXT_VkResult_return = vkEnc->vkReleaseDisplayEXT(physicalDevice, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005546 return vkReleaseDisplayEXT_VkResult_return;
5547}
5548#endif
5549#ifdef VK_EXT_acquire_xlib_display
5550static VkResult entry_vkAcquireXlibDisplayEXT(
5551 VkPhysicalDevice physicalDevice,
5552 Display* dpy,
5553 VkDisplayKHR display)
5554{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005555 AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005556 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005557 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005558 vkAcquireXlibDisplayEXT_VkResult_return = vkEnc->vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005559 return vkAcquireXlibDisplayEXT_VkResult_return;
5560}
5561static VkResult entry_vkGetRandROutputDisplayEXT(
5562 VkPhysicalDevice physicalDevice,
5563 Display* dpy,
5564 RROutput rrOutput,
5565 VkDisplayKHR* pDisplay)
5566{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005567 AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005568 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005569 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005570 vkGetRandROutputDisplayEXT_VkResult_return = vkEnc->vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005571 return vkGetRandROutputDisplayEXT_VkResult_return;
5572}
5573#endif
5574#ifdef VK_EXT_display_surface_counter
5575static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
5576 VkPhysicalDevice physicalDevice,
5577 VkSurfaceKHR surface,
5578 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
5579{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005580 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005581 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005582 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005583 vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005584 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
5585}
5586#endif
5587#ifdef VK_EXT_display_control
5588static VkResult entry_vkDisplayPowerControlEXT(
5589 VkDevice device,
5590 VkDisplayKHR display,
5591 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
5592{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005593 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005594 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005595 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005596 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005597 return vkDisplayPowerControlEXT_VkResult_return;
5598}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005599static VkResult dynCheck_entry_vkDisplayPowerControlEXT(
5600 VkDevice device,
5601 VkDisplayKHR display,
5602 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
5603{
5604 auto resources = ResourceTracker::get();
5605 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5606 {
5607 sOnInvalidDynamicallyCheckedCall("vkDisplayPowerControlEXT", "VK_EXT_display_control");
5608 }
5609 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005610 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005611 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005612 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005613 return vkDisplayPowerControlEXT_VkResult_return;
5614}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005615static VkResult entry_vkRegisterDeviceEventEXT(
5616 VkDevice device,
5617 const VkDeviceEventInfoEXT* pDeviceEventInfo,
5618 const VkAllocationCallbacks* pAllocator,
5619 VkFence* pFence)
5620{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005621 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005622 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005623 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005624 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005625 return vkRegisterDeviceEventEXT_VkResult_return;
5626}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005627static VkResult dynCheck_entry_vkRegisterDeviceEventEXT(
5628 VkDevice device,
5629 const VkDeviceEventInfoEXT* pDeviceEventInfo,
5630 const VkAllocationCallbacks* pAllocator,
5631 VkFence* pFence)
5632{
5633 auto resources = ResourceTracker::get();
5634 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5635 {
5636 sOnInvalidDynamicallyCheckedCall("vkRegisterDeviceEventEXT", "VK_EXT_display_control");
5637 }
5638 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005639 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005640 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005641 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005642 return vkRegisterDeviceEventEXT_VkResult_return;
5643}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005644static VkResult entry_vkRegisterDisplayEventEXT(
5645 VkDevice device,
5646 VkDisplayKHR display,
5647 const VkDisplayEventInfoEXT* pDisplayEventInfo,
5648 const VkAllocationCallbacks* pAllocator,
5649 VkFence* pFence)
5650{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005651 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005652 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005653 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005654 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005655 return vkRegisterDisplayEventEXT_VkResult_return;
5656}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005657static VkResult dynCheck_entry_vkRegisterDisplayEventEXT(
5658 VkDevice device,
5659 VkDisplayKHR display,
5660 const VkDisplayEventInfoEXT* pDisplayEventInfo,
5661 const VkAllocationCallbacks* pAllocator,
5662 VkFence* pFence)
5663{
5664 auto resources = ResourceTracker::get();
5665 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5666 {
5667 sOnInvalidDynamicallyCheckedCall("vkRegisterDisplayEventEXT", "VK_EXT_display_control");
5668 }
5669 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005670 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005671 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005672 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005673 return vkRegisterDisplayEventEXT_VkResult_return;
5674}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005675static VkResult entry_vkGetSwapchainCounterEXT(
5676 VkDevice device,
5677 VkSwapchainKHR swapchain,
5678 VkSurfaceCounterFlagBitsEXT counter,
5679 uint64_t* pCounterValue)
5680{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005681 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005682 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005683 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005684 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005685 return vkGetSwapchainCounterEXT_VkResult_return;
5686}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005687static VkResult dynCheck_entry_vkGetSwapchainCounterEXT(
5688 VkDevice device,
5689 VkSwapchainKHR swapchain,
5690 VkSurfaceCounterFlagBitsEXT counter,
5691 uint64_t* pCounterValue)
5692{
5693 auto resources = ResourceTracker::get();
5694 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5695 {
5696 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainCounterEXT", "VK_EXT_display_control");
5697 }
5698 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005699 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005700 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005701 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005702 return vkGetSwapchainCounterEXT_VkResult_return;
5703}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005704#endif
5705#ifdef VK_GOOGLE_display_timing
5706static VkResult entry_vkGetRefreshCycleDurationGOOGLE(
5707 VkDevice device,
5708 VkSwapchainKHR swapchain,
5709 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
5710{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005711 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005712 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005713 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005714 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005715 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
5716}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005717static VkResult dynCheck_entry_vkGetRefreshCycleDurationGOOGLE(
5718 VkDevice device,
5719 VkSwapchainKHR swapchain,
5720 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
5721{
5722 auto resources = ResourceTracker::get();
5723 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
5724 {
5725 sOnInvalidDynamicallyCheckedCall("vkGetRefreshCycleDurationGOOGLE", "VK_GOOGLE_display_timing");
5726 }
5727 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005728 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005729 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005730 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005731 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
5732}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005733static VkResult entry_vkGetPastPresentationTimingGOOGLE(
5734 VkDevice device,
5735 VkSwapchainKHR swapchain,
5736 uint32_t* pPresentationTimingCount,
5737 VkPastPresentationTimingGOOGLE* pPresentationTimings)
5738{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005739 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005740 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005741 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005742 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005743 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
5744}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005745static VkResult dynCheck_entry_vkGetPastPresentationTimingGOOGLE(
5746 VkDevice device,
5747 VkSwapchainKHR swapchain,
5748 uint32_t* pPresentationTimingCount,
5749 VkPastPresentationTimingGOOGLE* pPresentationTimings)
5750{
5751 auto resources = ResourceTracker::get();
5752 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
5753 {
5754 sOnInvalidDynamicallyCheckedCall("vkGetPastPresentationTimingGOOGLE", "VK_GOOGLE_display_timing");
5755 }
5756 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005757 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005758 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005759 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005760 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
5761}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005762#endif
5763#ifdef VK_NV_sample_mask_override_coverage
5764#endif
5765#ifdef VK_NV_geometry_shader_passthrough
5766#endif
5767#ifdef VK_NV_viewport_array2
5768#endif
5769#ifdef VK_NVX_multiview_per_view_attributes
5770#endif
5771#ifdef VK_NV_viewport_swizzle
5772#endif
5773#ifdef VK_EXT_discard_rectangles
5774static void entry_vkCmdSetDiscardRectangleEXT(
5775 VkCommandBuffer commandBuffer,
5776 uint32_t firstDiscardRectangle,
5777 uint32_t discardRectangleCount,
5778 const VkRect2D* pDiscardRectangles)
5779{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005780 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005781 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005782 vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005783}
5784#endif
5785#ifdef VK_EXT_conservative_rasterization
5786#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005787#ifdef VK_EXT_depth_clip_enable
5788#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005789#ifdef VK_EXT_swapchain_colorspace
5790#endif
5791#ifdef VK_EXT_hdr_metadata
5792static void entry_vkSetHdrMetadataEXT(
5793 VkDevice device,
5794 uint32_t swapchainCount,
5795 const VkSwapchainKHR* pSwapchains,
5796 const VkHdrMetadataEXT* pMetadata)
5797{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005798 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005799 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005800 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005801}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005802static void dynCheck_entry_vkSetHdrMetadataEXT(
5803 VkDevice device,
5804 uint32_t swapchainCount,
5805 const VkSwapchainKHR* pSwapchains,
5806 const VkHdrMetadataEXT* pMetadata)
5807{
5808 auto resources = ResourceTracker::get();
5809 if (!resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata"))
5810 {
5811 sOnInvalidDynamicallyCheckedCall("vkSetHdrMetadataEXT", "VK_EXT_hdr_metadata");
5812 }
5813 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005814 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005815 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005816}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005817#endif
5818#ifdef VK_MVK_ios_surface
5819static VkResult entry_vkCreateIOSSurfaceMVK(
5820 VkInstance instance,
5821 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
5822 const VkAllocationCallbacks* pAllocator,
5823 VkSurfaceKHR* pSurface)
5824{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005825 AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005826 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005827 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005828 vkCreateIOSSurfaceMVK_VkResult_return = vkEnc->vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005829 return vkCreateIOSSurfaceMVK_VkResult_return;
5830}
5831#endif
5832#ifdef VK_MVK_macos_surface
5833static VkResult entry_vkCreateMacOSSurfaceMVK(
5834 VkInstance instance,
5835 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
5836 const VkAllocationCallbacks* pAllocator,
5837 VkSurfaceKHR* pSurface)
5838{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005839 AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005840 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005841 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005842 vkCreateMacOSSurfaceMVK_VkResult_return = vkEnc->vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005843 return vkCreateMacOSSurfaceMVK_VkResult_return;
5844}
5845#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005846#ifdef VK_MVK_moltenvk
5847static void entry_vkGetMTLDeviceMVK(
5848 VkPhysicalDevice physicalDevice,
5849 void** pMTLDevice)
5850{
5851 AEMU_SCOPED_TRACE("vkGetMTLDeviceMVK");
5852 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5853 vkEnc->vkGetMTLDeviceMVK(physicalDevice, pMTLDevice, true /* do lock */);
5854}
5855static VkResult entry_vkSetMTLTextureMVK(
5856 VkImage image,
5857 void* mtlTexture)
5858{
5859 AEMU_SCOPED_TRACE("vkSetMTLTextureMVK");
5860 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5861 VkResult vkSetMTLTextureMVK_VkResult_return = (VkResult)0;
5862 vkSetMTLTextureMVK_VkResult_return = vkEnc->vkSetMTLTextureMVK(image, mtlTexture, true /* do lock */);
5863 return vkSetMTLTextureMVK_VkResult_return;
5864}
5865static void entry_vkGetMTLTextureMVK(
5866 VkImage image,
5867 void** pMTLTexture)
5868{
5869 AEMU_SCOPED_TRACE("vkGetMTLTextureMVK");
5870 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5871 vkEnc->vkGetMTLTextureMVK(image, pMTLTexture, true /* do lock */);
5872}
5873static void entry_vkGetMTLBufferMVK(
5874 VkBuffer buffer,
5875 void** pMTLBuffer)
5876{
5877 AEMU_SCOPED_TRACE("vkGetMTLBufferMVK");
5878 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5879 vkEnc->vkGetMTLBufferMVK(buffer, pMTLBuffer, true /* do lock */);
5880}
5881static VkResult entry_vkUseIOSurfaceMVK(
5882 VkImage image,
5883 void* ioSurface)
5884{
5885 AEMU_SCOPED_TRACE("vkUseIOSurfaceMVK");
5886 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5887 VkResult vkUseIOSurfaceMVK_VkResult_return = (VkResult)0;
5888 vkUseIOSurfaceMVK_VkResult_return = vkEnc->vkUseIOSurfaceMVK(image, ioSurface, true /* do lock */);
5889 return vkUseIOSurfaceMVK_VkResult_return;
5890}
5891static void entry_vkGetIOSurfaceMVK(
5892 VkImage image,
5893 void** pIOSurface)
5894{
5895 AEMU_SCOPED_TRACE("vkGetIOSurfaceMVK");
5896 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5897 vkEnc->vkGetIOSurfaceMVK(image, pIOSurface, true /* do lock */);
5898}
5899#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005900#ifdef VK_EXT_external_memory_dma_buf
5901#endif
5902#ifdef VK_EXT_queue_family_foreign
5903#endif
5904#ifdef VK_EXT_debug_utils
5905static VkResult entry_vkSetDebugUtilsObjectNameEXT(
5906 VkDevice device,
5907 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
5908{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005909 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005910 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005911 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005912 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005913 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
5914}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005915static VkResult dynCheck_entry_vkSetDebugUtilsObjectNameEXT(
5916 VkDevice device,
5917 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
5918{
5919 auto resources = ResourceTracker::get();
5920 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
5921 {
5922 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectNameEXT", "VK_EXT_debug_utils");
5923 }
5924 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005925 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005926 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005927 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005928 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
5929}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005930static VkResult entry_vkSetDebugUtilsObjectTagEXT(
5931 VkDevice device,
5932 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
5933{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005934 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005935 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005936 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005937 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005938 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
5939}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005940static VkResult dynCheck_entry_vkSetDebugUtilsObjectTagEXT(
5941 VkDevice device,
5942 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
5943{
5944 auto resources = ResourceTracker::get();
5945 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
5946 {
5947 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectTagEXT", "VK_EXT_debug_utils");
5948 }
5949 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005950 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005951 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005952 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005953 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
5954}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005955static void entry_vkQueueBeginDebugUtilsLabelEXT(
5956 VkQueue queue,
5957 const VkDebugUtilsLabelEXT* pLabelInfo)
5958{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005959 AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005960 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005961 vkEnc->vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005962}
5963static void entry_vkQueueEndDebugUtilsLabelEXT(
5964 VkQueue queue)
5965{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005966 AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005967 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005968 vkEnc->vkQueueEndDebugUtilsLabelEXT(queue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005969}
5970static void entry_vkQueueInsertDebugUtilsLabelEXT(
5971 VkQueue queue,
5972 const VkDebugUtilsLabelEXT* pLabelInfo)
5973{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005974 AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005975 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005976 vkEnc->vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005977}
5978static void entry_vkCmdBeginDebugUtilsLabelEXT(
5979 VkCommandBuffer commandBuffer,
5980 const VkDebugUtilsLabelEXT* pLabelInfo)
5981{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005982 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005983 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005984 vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005985}
5986static void entry_vkCmdEndDebugUtilsLabelEXT(
5987 VkCommandBuffer commandBuffer)
5988{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005989 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005990 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005991 vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005992}
5993static void entry_vkCmdInsertDebugUtilsLabelEXT(
5994 VkCommandBuffer commandBuffer,
5995 const VkDebugUtilsLabelEXT* pLabelInfo)
5996{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005997 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005998 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005999 vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006000}
6001static VkResult entry_vkCreateDebugUtilsMessengerEXT(
6002 VkInstance instance,
6003 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
6004 const VkAllocationCallbacks* pAllocator,
6005 VkDebugUtilsMessengerEXT* pMessenger)
6006{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006007 AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006008 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006009 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006010 vkCreateDebugUtilsMessengerEXT_VkResult_return = vkEnc->vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006011 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
6012}
6013static void entry_vkDestroyDebugUtilsMessengerEXT(
6014 VkInstance instance,
6015 VkDebugUtilsMessengerEXT messenger,
6016 const VkAllocationCallbacks* pAllocator)
6017{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006018 AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006019 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006020 vkEnc->vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006021}
6022static void entry_vkSubmitDebugUtilsMessageEXT(
6023 VkInstance instance,
6024 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
6025 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
6026 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
6027{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006028 AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006029 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006030 vkEnc->vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006031}
6032#endif
6033#ifdef VK_ANDROID_external_memory_android_hardware_buffer
6034static VkResult entry_vkGetAndroidHardwareBufferPropertiesANDROID(
6035 VkDevice device,
6036 const AHardwareBuffer* buffer,
6037 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
6038{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006039 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006040 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006041 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08006042 auto resources = ResourceTracker::get();
6043 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006044 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
6045}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006046static VkResult dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID(
6047 VkDevice device,
6048 const AHardwareBuffer* buffer,
6049 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
6050{
6051 auto resources = ResourceTracker::get();
6052 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
6053 {
6054 sOnInvalidDynamicallyCheckedCall("vkGetAndroidHardwareBufferPropertiesANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
6055 }
6056 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006057 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006058 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
6059 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
6060 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
6061}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006062static VkResult entry_vkGetMemoryAndroidHardwareBufferANDROID(
6063 VkDevice device,
6064 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
6065 AHardwareBuffer** pBuffer)
6066{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006067 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006068 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006069 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08006070 auto resources = ResourceTracker::get();
6071 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006072 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
6073}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006074static VkResult dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID(
6075 VkDevice device,
6076 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
6077 AHardwareBuffer** pBuffer)
6078{
6079 auto resources = ResourceTracker::get();
6080 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
6081 {
6082 sOnInvalidDynamicallyCheckedCall("vkGetMemoryAndroidHardwareBufferANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
6083 }
6084 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006085 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006086 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
6087 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
6088 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
6089}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006090#endif
6091#ifdef VK_EXT_sampler_filter_minmax
6092#endif
6093#ifdef VK_AMD_gpu_shader_int16
6094#endif
6095#ifdef VK_AMD_mixed_attachment_samples
6096#endif
6097#ifdef VK_AMD_shader_fragment_mask
6098#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006099#ifdef VK_EXT_inline_uniform_block
6100#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006101#ifdef VK_EXT_shader_stencil_export
6102#endif
6103#ifdef VK_EXT_sample_locations
6104static void entry_vkCmdSetSampleLocationsEXT(
6105 VkCommandBuffer commandBuffer,
6106 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
6107{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006108 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006109 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006110 vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006111}
6112static void entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(
6113 VkPhysicalDevice physicalDevice,
6114 VkSampleCountFlagBits samples,
6115 VkMultisamplePropertiesEXT* pMultisampleProperties)
6116{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006117 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006118 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006119 vkEnc->vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006120}
6121#endif
6122#ifdef VK_EXT_blend_operation_advanced
6123#endif
6124#ifdef VK_NV_fragment_coverage_to_color
6125#endif
6126#ifdef VK_NV_framebuffer_mixed_samples
6127#endif
6128#ifdef VK_NV_fill_rectangle
6129#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006130#ifdef VK_NV_shader_sm_builtins
6131#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006132#ifdef VK_EXT_post_depth_coverage
6133#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006134#ifdef VK_EXT_image_drm_format_modifier
6135static VkResult entry_vkGetImageDrmFormatModifierPropertiesEXT(
6136 VkDevice device,
6137 VkImage image,
6138 VkImageDrmFormatModifierPropertiesEXT* pProperties)
6139{
6140 AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
6141 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6142 VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
6143 vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, true /* do lock */);
6144 return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
6145}
6146static VkResult dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT(
6147 VkDevice device,
6148 VkImage image,
6149 VkImageDrmFormatModifierPropertiesEXT* pProperties)
6150{
6151 auto resources = ResourceTracker::get();
6152 if (!resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier"))
6153 {
6154 sOnInvalidDynamicallyCheckedCall("vkGetImageDrmFormatModifierPropertiesEXT", "VK_EXT_image_drm_format_modifier");
6155 }
6156 AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
6157 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6158 VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
6159 vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, true /* do lock */);
6160 return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
6161}
6162#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006163#ifdef VK_EXT_validation_cache
6164static VkResult entry_vkCreateValidationCacheEXT(
6165 VkDevice device,
6166 const VkValidationCacheCreateInfoEXT* pCreateInfo,
6167 const VkAllocationCallbacks* pAllocator,
6168 VkValidationCacheEXT* pValidationCache)
6169{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006170 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006171 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006172 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006173 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006174 return vkCreateValidationCacheEXT_VkResult_return;
6175}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006176static VkResult dynCheck_entry_vkCreateValidationCacheEXT(
6177 VkDevice device,
6178 const VkValidationCacheCreateInfoEXT* pCreateInfo,
6179 const VkAllocationCallbacks* pAllocator,
6180 VkValidationCacheEXT* pValidationCache)
6181{
6182 auto resources = ResourceTracker::get();
6183 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
6184 {
6185 sOnInvalidDynamicallyCheckedCall("vkCreateValidationCacheEXT", "VK_EXT_validation_cache");
6186 }
6187 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006188 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006189 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006190 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006191 return vkCreateValidationCacheEXT_VkResult_return;
6192}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006193static void entry_vkDestroyValidationCacheEXT(
6194 VkDevice device,
6195 VkValidationCacheEXT validationCache,
6196 const VkAllocationCallbacks* pAllocator)
6197{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006198 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006199 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006200 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006201}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006202static void dynCheck_entry_vkDestroyValidationCacheEXT(
6203 VkDevice device,
6204 VkValidationCacheEXT validationCache,
6205 const VkAllocationCallbacks* pAllocator)
6206{
6207 auto resources = ResourceTracker::get();
6208 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
6209 {
6210 sOnInvalidDynamicallyCheckedCall("vkDestroyValidationCacheEXT", "VK_EXT_validation_cache");
6211 }
6212 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006213 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006214 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006215}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006216static VkResult entry_vkMergeValidationCachesEXT(
6217 VkDevice device,
6218 VkValidationCacheEXT dstCache,
6219 uint32_t srcCacheCount,
6220 const VkValidationCacheEXT* pSrcCaches)
6221{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006222 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006223 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006224 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006225 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006226 return vkMergeValidationCachesEXT_VkResult_return;
6227}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006228static VkResult dynCheck_entry_vkMergeValidationCachesEXT(
6229 VkDevice device,
6230 VkValidationCacheEXT dstCache,
6231 uint32_t srcCacheCount,
6232 const VkValidationCacheEXT* pSrcCaches)
6233{
6234 auto resources = ResourceTracker::get();
6235 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
6236 {
6237 sOnInvalidDynamicallyCheckedCall("vkMergeValidationCachesEXT", "VK_EXT_validation_cache");
6238 }
6239 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006240 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006241 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006242 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006243 return vkMergeValidationCachesEXT_VkResult_return;
6244}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006245static VkResult entry_vkGetValidationCacheDataEXT(
6246 VkDevice device,
6247 VkValidationCacheEXT validationCache,
6248 size_t* pDataSize,
6249 void* pData)
6250{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006251 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006252 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006253 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006254 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006255 return vkGetValidationCacheDataEXT_VkResult_return;
6256}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006257static VkResult dynCheck_entry_vkGetValidationCacheDataEXT(
6258 VkDevice device,
6259 VkValidationCacheEXT validationCache,
6260 size_t* pDataSize,
6261 void* pData)
6262{
6263 auto resources = ResourceTracker::get();
6264 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
6265 {
6266 sOnInvalidDynamicallyCheckedCall("vkGetValidationCacheDataEXT", "VK_EXT_validation_cache");
6267 }
6268 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006269 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006270 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006271 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006272 return vkGetValidationCacheDataEXT_VkResult_return;
6273}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006274#endif
6275#ifdef VK_EXT_descriptor_indexing
6276#endif
6277#ifdef VK_EXT_shader_viewport_index_layer
6278#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006279#ifdef VK_NV_shading_rate_image
6280static void entry_vkCmdBindShadingRateImageNV(
6281 VkCommandBuffer commandBuffer,
6282 VkImageView imageView,
6283 VkImageLayout imageLayout)
6284{
6285 AEMU_SCOPED_TRACE("vkCmdBindShadingRateImageNV");
6286 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6287 vkEnc->vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, true /* do lock */);
6288}
6289static void entry_vkCmdSetViewportShadingRatePaletteNV(
6290 VkCommandBuffer commandBuffer,
6291 uint32_t firstViewport,
6292 uint32_t viewportCount,
6293 const VkShadingRatePaletteNV* pShadingRatePalettes)
6294{
6295 AEMU_SCOPED_TRACE("vkCmdSetViewportShadingRatePaletteNV");
6296 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6297 vkEnc->vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, true /* do lock */);
6298}
6299static void entry_vkCmdSetCoarseSampleOrderNV(
6300 VkCommandBuffer commandBuffer,
6301 VkCoarseSampleOrderTypeNV sampleOrderType,
6302 uint32_t customSampleOrderCount,
6303 const VkCoarseSampleOrderCustomNV* pCustomSampleOrders)
6304{
6305 AEMU_SCOPED_TRACE("vkCmdSetCoarseSampleOrderNV");
6306 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6307 vkEnc->vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, true /* do lock */);
6308}
6309#endif
6310#ifdef VK_NV_ray_tracing
6311static VkResult entry_vkCreateAccelerationStructureNV(
6312 VkDevice device,
6313 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
6314 const VkAllocationCallbacks* pAllocator,
6315 VkAccelerationStructureNV* pAccelerationStructure)
6316{
6317 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
6318 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6319 VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
6320 vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
6321 return vkCreateAccelerationStructureNV_VkResult_return;
6322}
6323static VkResult dynCheck_entry_vkCreateAccelerationStructureNV(
6324 VkDevice device,
6325 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
6326 const VkAllocationCallbacks* pAllocator,
6327 VkAccelerationStructureNV* pAccelerationStructure)
6328{
6329 auto resources = ResourceTracker::get();
6330 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6331 {
6332 sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureNV", "VK_NV_ray_tracing");
6333 }
6334 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
6335 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6336 VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
6337 vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
6338 return vkCreateAccelerationStructureNV_VkResult_return;
6339}
6340static void entry_vkDestroyAccelerationStructureNV(
6341 VkDevice device,
6342 VkAccelerationStructureNV accelerationStructure,
6343 const VkAllocationCallbacks* pAllocator)
6344{
6345 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
6346 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6347 vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, true /* do lock */);
6348}
6349static void dynCheck_entry_vkDestroyAccelerationStructureNV(
6350 VkDevice device,
6351 VkAccelerationStructureNV accelerationStructure,
6352 const VkAllocationCallbacks* pAllocator)
6353{
6354 auto resources = ResourceTracker::get();
6355 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6356 {
6357 sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureNV", "VK_NV_ray_tracing");
6358 }
6359 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
6360 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6361 vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, true /* do lock */);
6362}
6363static void entry_vkGetAccelerationStructureMemoryRequirementsNV(
6364 VkDevice device,
6365 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
6366 VkMemoryRequirements2KHR* pMemoryRequirements)
6367{
6368 AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
6369 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6370 vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
6371}
6372static void dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV(
6373 VkDevice device,
6374 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
6375 VkMemoryRequirements2KHR* pMemoryRequirements)
6376{
6377 auto resources = ResourceTracker::get();
6378 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6379 {
6380 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureMemoryRequirementsNV", "VK_NV_ray_tracing");
6381 }
6382 AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
6383 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6384 vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
6385}
6386static VkResult entry_vkBindAccelerationStructureMemoryNV(
6387 VkDevice device,
6388 uint32_t bindInfoCount,
6389 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
6390{
6391 AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
6392 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6393 VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
6394 vkBindAccelerationStructureMemoryNV_VkResult_return = vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, true /* do lock */);
6395 return vkBindAccelerationStructureMemoryNV_VkResult_return;
6396}
6397static VkResult dynCheck_entry_vkBindAccelerationStructureMemoryNV(
6398 VkDevice device,
6399 uint32_t bindInfoCount,
6400 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
6401{
6402 auto resources = ResourceTracker::get();
6403 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6404 {
6405 sOnInvalidDynamicallyCheckedCall("vkBindAccelerationStructureMemoryNV", "VK_NV_ray_tracing");
6406 }
6407 AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
6408 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6409 VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
6410 vkBindAccelerationStructureMemoryNV_VkResult_return = vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, true /* do lock */);
6411 return vkBindAccelerationStructureMemoryNV_VkResult_return;
6412}
6413static void entry_vkCmdBuildAccelerationStructureNV(
6414 VkCommandBuffer commandBuffer,
6415 const VkAccelerationStructureInfoNV* pInfo,
6416 VkBuffer instanceData,
6417 VkDeviceSize instanceOffset,
6418 VkBool32 update,
6419 VkAccelerationStructureNV dst,
6420 VkAccelerationStructureNV src,
6421 VkBuffer scratch,
6422 VkDeviceSize scratchOffset)
6423{
6424 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructureNV");
6425 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6426 vkEnc->vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, true /* do lock */);
6427}
6428static void entry_vkCmdCopyAccelerationStructureNV(
6429 VkCommandBuffer commandBuffer,
6430 VkAccelerationStructureNV dst,
6431 VkAccelerationStructureNV src,
6432 VkCopyAccelerationStructureModeKHR mode)
6433{
6434 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureNV");
6435 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6436 vkEnc->vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, true /* do lock */);
6437}
6438static void entry_vkCmdTraceRaysNV(
6439 VkCommandBuffer commandBuffer,
6440 VkBuffer raygenShaderBindingTableBuffer,
6441 VkDeviceSize raygenShaderBindingOffset,
6442 VkBuffer missShaderBindingTableBuffer,
6443 VkDeviceSize missShaderBindingOffset,
6444 VkDeviceSize missShaderBindingStride,
6445 VkBuffer hitShaderBindingTableBuffer,
6446 VkDeviceSize hitShaderBindingOffset,
6447 VkDeviceSize hitShaderBindingStride,
6448 VkBuffer callableShaderBindingTableBuffer,
6449 VkDeviceSize callableShaderBindingOffset,
6450 VkDeviceSize callableShaderBindingStride,
6451 uint32_t width,
6452 uint32_t height,
6453 uint32_t depth)
6454{
6455 AEMU_SCOPED_TRACE("vkCmdTraceRaysNV");
6456 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6457 vkEnc->vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, true /* do lock */);
6458}
6459static VkResult entry_vkCreateRayTracingPipelinesNV(
6460 VkDevice device,
6461 VkPipelineCache pipelineCache,
6462 uint32_t createInfoCount,
6463 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
6464 const VkAllocationCallbacks* pAllocator,
6465 VkPipeline* pPipelines)
6466{
6467 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
6468 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6469 VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
6470 vkCreateRayTracingPipelinesNV_VkResult_return = vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
6471 return vkCreateRayTracingPipelinesNV_VkResult_return;
6472}
6473static VkResult dynCheck_entry_vkCreateRayTracingPipelinesNV(
6474 VkDevice device,
6475 VkPipelineCache pipelineCache,
6476 uint32_t createInfoCount,
6477 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
6478 const VkAllocationCallbacks* pAllocator,
6479 VkPipeline* pPipelines)
6480{
6481 auto resources = ResourceTracker::get();
6482 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6483 {
6484 sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesNV", "VK_NV_ray_tracing");
6485 }
6486 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
6487 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6488 VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
6489 vkCreateRayTracingPipelinesNV_VkResult_return = vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
6490 return vkCreateRayTracingPipelinesNV_VkResult_return;
6491}
6492static VkResult entry_vkGetRayTracingShaderGroupHandlesKHR(
6493 VkDevice device,
6494 VkPipeline pipeline,
6495 uint32_t firstGroup,
6496 uint32_t groupCount,
6497 size_t dataSize,
6498 void* pData)
6499{
6500 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
6501 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6502 VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
6503 vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
6504 return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
6505}
6506static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR(
6507 VkDevice device,
6508 VkPipeline pipeline,
6509 uint32_t firstGroup,
6510 uint32_t groupCount,
6511 size_t dataSize,
6512 void* pData)
6513{
6514 auto resources = ResourceTracker::get();
6515 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6516 {
6517 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesKHR", "VK_NV_ray_tracing");
6518 }
6519 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
6520 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6521 VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
6522 vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
6523 return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
6524}
6525static VkResult entry_vkGetRayTracingShaderGroupHandlesNV(
6526 VkDevice device,
6527 VkPipeline pipeline,
6528 uint32_t firstGroup,
6529 uint32_t groupCount,
6530 size_t dataSize,
6531 void* pData)
6532{
6533 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
6534 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6535 VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
6536 vkGetRayTracingShaderGroupHandlesNV_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
6537 return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
6538}
6539static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV(
6540 VkDevice device,
6541 VkPipeline pipeline,
6542 uint32_t firstGroup,
6543 uint32_t groupCount,
6544 size_t dataSize,
6545 void* pData)
6546{
6547 auto resources = ResourceTracker::get();
6548 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6549 {
6550 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesNV", "VK_NV_ray_tracing");
6551 }
6552 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
6553 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6554 VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
6555 vkGetRayTracingShaderGroupHandlesNV_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
6556 return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
6557}
6558static VkResult entry_vkGetAccelerationStructureHandleNV(
6559 VkDevice device,
6560 VkAccelerationStructureNV accelerationStructure,
6561 size_t dataSize,
6562 void* pData)
6563{
6564 AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
6565 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6566 VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
6567 vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, true /* do lock */);
6568 return vkGetAccelerationStructureHandleNV_VkResult_return;
6569}
6570static VkResult dynCheck_entry_vkGetAccelerationStructureHandleNV(
6571 VkDevice device,
6572 VkAccelerationStructureNV accelerationStructure,
6573 size_t dataSize,
6574 void* pData)
6575{
6576 auto resources = ResourceTracker::get();
6577 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6578 {
6579 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureHandleNV", "VK_NV_ray_tracing");
6580 }
6581 AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
6582 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6583 VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
6584 vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, true /* do lock */);
6585 return vkGetAccelerationStructureHandleNV_VkResult_return;
6586}
6587static void entry_vkCmdWriteAccelerationStructuresPropertiesNV(
6588 VkCommandBuffer commandBuffer,
6589 uint32_t accelerationStructureCount,
6590 const VkAccelerationStructureNV* pAccelerationStructures,
6591 VkQueryType queryType,
6592 VkQueryPool queryPool,
6593 uint32_t firstQuery)
6594{
6595 AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesNV");
6596 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6597 vkEnc->vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
6598}
6599static VkResult entry_vkCompileDeferredNV(
6600 VkDevice device,
6601 VkPipeline pipeline,
6602 uint32_t shader)
6603{
6604 AEMU_SCOPED_TRACE("vkCompileDeferredNV");
6605 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6606 VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
6607 vkCompileDeferredNV_VkResult_return = vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
6608 return vkCompileDeferredNV_VkResult_return;
6609}
6610static VkResult dynCheck_entry_vkCompileDeferredNV(
6611 VkDevice device,
6612 VkPipeline pipeline,
6613 uint32_t shader)
6614{
6615 auto resources = ResourceTracker::get();
6616 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6617 {
6618 sOnInvalidDynamicallyCheckedCall("vkCompileDeferredNV", "VK_NV_ray_tracing");
6619 }
6620 AEMU_SCOPED_TRACE("vkCompileDeferredNV");
6621 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6622 VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
6623 vkCompileDeferredNV_VkResult_return = vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
6624 return vkCompileDeferredNV_VkResult_return;
6625}
6626#endif
6627#ifdef VK_NV_representative_fragment_test
6628#endif
6629#ifdef VK_EXT_filter_cubic
6630#endif
6631#ifdef VK_QCOM_render_pass_shader_resolve
6632#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006633#ifdef VK_EXT_global_priority
6634#endif
6635#ifdef VK_EXT_external_memory_host
6636static VkResult entry_vkGetMemoryHostPointerPropertiesEXT(
6637 VkDevice device,
6638 VkExternalMemoryHandleTypeFlagBits handleType,
6639 const void* pHostPointer,
6640 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
6641{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006642 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006643 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006644 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006645 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006646 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
6647}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006648static VkResult dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT(
6649 VkDevice device,
6650 VkExternalMemoryHandleTypeFlagBits handleType,
6651 const void* pHostPointer,
6652 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
6653{
6654 auto resources = ResourceTracker::get();
6655 if (!resources->hasDeviceExtension(device, "VK_EXT_external_memory_host"))
6656 {
6657 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostPointerPropertiesEXT", "VK_EXT_external_memory_host");
6658 }
6659 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006660 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006661 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006662 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006663 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
6664}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006665#endif
6666#ifdef VK_AMD_buffer_marker
6667static void entry_vkCmdWriteBufferMarkerAMD(
6668 VkCommandBuffer commandBuffer,
6669 VkPipelineStageFlagBits pipelineStage,
6670 VkBuffer dstBuffer,
6671 VkDeviceSize dstOffset,
6672 uint32_t marker)
6673{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006674 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006675 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006676 vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006677}
6678#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006679#ifdef VK_AMD_pipeline_compiler_control
6680#endif
6681#ifdef VK_EXT_calibrated_timestamps
6682static VkResult entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
6683 VkPhysicalDevice physicalDevice,
6684 uint32_t* pTimeDomainCount,
6685 VkTimeDomainEXT* pTimeDomains)
6686{
6687 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCalibrateableTimeDomainsEXT");
6688 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6689 VkResult vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return = (VkResult)0;
6690 vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return = vkEnc->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, true /* do lock */);
6691 return vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return;
6692}
6693static VkResult entry_vkGetCalibratedTimestampsEXT(
6694 VkDevice device,
6695 uint32_t timestampCount,
6696 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
6697 uint64_t* pTimestamps,
6698 uint64_t* pMaxDeviation)
6699{
6700 AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
6701 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6702 VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
6703 vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
6704 return vkGetCalibratedTimestampsEXT_VkResult_return;
6705}
6706static VkResult dynCheck_entry_vkGetCalibratedTimestampsEXT(
6707 VkDevice device,
6708 uint32_t timestampCount,
6709 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
6710 uint64_t* pTimestamps,
6711 uint64_t* pMaxDeviation)
6712{
6713 auto resources = ResourceTracker::get();
6714 if (!resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps"))
6715 {
6716 sOnInvalidDynamicallyCheckedCall("vkGetCalibratedTimestampsEXT", "VK_EXT_calibrated_timestamps");
6717 }
6718 AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
6719 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6720 VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
6721 vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
6722 return vkGetCalibratedTimestampsEXT_VkResult_return;
6723}
6724#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006725#ifdef VK_AMD_shader_core_properties
6726#endif
Yilong Li353409a2022-01-04 02:37:56 -08006727#ifdef VK_EXT_video_decode_h265
6728#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006729#ifdef VK_AMD_memory_overallocation_behavior
6730#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006731#ifdef VK_EXT_vertex_attribute_divisor
6732#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006733#ifdef VK_GGP_frame_token
6734#endif
6735#ifdef VK_EXT_pipeline_creation_feedback
6736#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006737#ifdef VK_NV_shader_subgroup_partitioned
6738#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006739#ifdef VK_NV_compute_shader_derivatives
6740#endif
6741#ifdef VK_NV_mesh_shader
6742static void entry_vkCmdDrawMeshTasksNV(
6743 VkCommandBuffer commandBuffer,
6744 uint32_t taskCount,
6745 uint32_t firstTask)
6746{
6747 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksNV");
6748 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6749 vkEnc->vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, true /* do lock */);
6750}
6751static void entry_vkCmdDrawMeshTasksIndirectNV(
6752 VkCommandBuffer commandBuffer,
6753 VkBuffer buffer,
6754 VkDeviceSize offset,
6755 uint32_t drawCount,
6756 uint32_t stride)
6757{
6758 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectNV");
6759 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6760 vkEnc->vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
6761}
6762static void entry_vkCmdDrawMeshTasksIndirectCountNV(
6763 VkCommandBuffer commandBuffer,
6764 VkBuffer buffer,
6765 VkDeviceSize offset,
6766 VkBuffer countBuffer,
6767 VkDeviceSize countBufferOffset,
6768 uint32_t maxDrawCount,
6769 uint32_t stride)
6770{
6771 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectCountNV");
6772 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6773 vkEnc->vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
6774}
6775#endif
6776#ifdef VK_NV_fragment_shader_barycentric
6777#endif
6778#ifdef VK_NV_shader_image_footprint
6779#endif
6780#ifdef VK_NV_scissor_exclusive
6781static void entry_vkCmdSetExclusiveScissorNV(
6782 VkCommandBuffer commandBuffer,
6783 uint32_t firstExclusiveScissor,
6784 uint32_t exclusiveScissorCount,
6785 const VkRect2D* pExclusiveScissors)
6786{
6787 AEMU_SCOPED_TRACE("vkCmdSetExclusiveScissorNV");
6788 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6789 vkEnc->vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, true /* do lock */);
6790}
6791#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006792#ifdef VK_NV_device_diagnostic_checkpoints
6793static void entry_vkCmdSetCheckpointNV(
6794 VkCommandBuffer commandBuffer,
6795 const void* pCheckpointMarker)
6796{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006797 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006798 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006799 vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006800}
6801static void entry_vkGetQueueCheckpointDataNV(
6802 VkQueue queue,
6803 uint32_t* pCheckpointDataCount,
6804 VkCheckpointDataNV* pCheckpointData)
6805{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006806 AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006807 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006808 vkEnc->vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006809}
6810#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006811#ifdef VK_INTEL_shader_integer_functions2
6812#endif
6813#ifdef VK_INTEL_performance_query
6814static VkResult entry_vkInitializePerformanceApiINTEL(
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006815 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08006816 const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006817{
Yilong Lia8d45f12021-02-07 02:30:21 -08006818 AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006819 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Yilong Lia8d45f12021-02-07 02:30:21 -08006820 VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
6821 vkInitializePerformanceApiINTEL_VkResult_return = vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
6822 return vkInitializePerformanceApiINTEL_VkResult_return;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006823}
Yilong Lia8d45f12021-02-07 02:30:21 -08006824static VkResult dynCheck_entry_vkInitializePerformanceApiINTEL(
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006825 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08006826 const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006827{
6828 auto resources = ResourceTracker::get();
Yilong Lia8d45f12021-02-07 02:30:21 -08006829 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006830 {
Yilong Lia8d45f12021-02-07 02:30:21 -08006831 sOnInvalidDynamicallyCheckedCall("vkInitializePerformanceApiINTEL", "VK_INTEL_performance_query");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006832 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006833 AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006834 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Yilong Lia8d45f12021-02-07 02:30:21 -08006835 VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
6836 vkInitializePerformanceApiINTEL_VkResult_return = vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
6837 return vkInitializePerformanceApiINTEL_VkResult_return;
6838}
6839static void entry_vkUninitializePerformanceApiINTEL(
6840 VkDevice device)
6841{
6842 AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
6843 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6844 vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
6845}
6846static void dynCheck_entry_vkUninitializePerformanceApiINTEL(
6847 VkDevice device)
6848{
6849 auto resources = ResourceTracker::get();
6850 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6851 {
6852 sOnInvalidDynamicallyCheckedCall("vkUninitializePerformanceApiINTEL", "VK_INTEL_performance_query");
6853 }
6854 AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
6855 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6856 vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
6857}
6858static VkResult entry_vkCmdSetPerformanceMarkerINTEL(
6859 VkCommandBuffer commandBuffer,
6860 const VkPerformanceMarkerInfoINTEL* pMarkerInfo)
6861{
6862 AEMU_SCOPED_TRACE("vkCmdSetPerformanceMarkerINTEL");
6863 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6864 VkResult vkCmdSetPerformanceMarkerINTEL_VkResult_return = (VkResult)0;
6865 vkCmdSetPerformanceMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
6866 return vkCmdSetPerformanceMarkerINTEL_VkResult_return;
6867}
6868static VkResult entry_vkCmdSetPerformanceStreamMarkerINTEL(
6869 VkCommandBuffer commandBuffer,
6870 const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo)
6871{
6872 AEMU_SCOPED_TRACE("vkCmdSetPerformanceStreamMarkerINTEL");
6873 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6874 VkResult vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = (VkResult)0;
6875 vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
6876 return vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return;
6877}
6878static VkResult entry_vkCmdSetPerformanceOverrideINTEL(
6879 VkCommandBuffer commandBuffer,
6880 const VkPerformanceOverrideInfoINTEL* pOverrideInfo)
6881{
6882 AEMU_SCOPED_TRACE("vkCmdSetPerformanceOverrideINTEL");
6883 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6884 VkResult vkCmdSetPerformanceOverrideINTEL_VkResult_return = (VkResult)0;
6885 vkCmdSetPerformanceOverrideINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, true /* do lock */);
6886 return vkCmdSetPerformanceOverrideINTEL_VkResult_return;
6887}
6888static VkResult entry_vkAcquirePerformanceConfigurationINTEL(
6889 VkDevice device,
6890 const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
6891 VkPerformanceConfigurationINTEL* pConfiguration)
6892{
6893 AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
6894 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6895 VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6896 vkAcquirePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, true /* do lock */);
6897 return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
6898}
6899static VkResult dynCheck_entry_vkAcquirePerformanceConfigurationINTEL(
6900 VkDevice device,
6901 const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
6902 VkPerformanceConfigurationINTEL* pConfiguration)
6903{
6904 auto resources = ResourceTracker::get();
6905 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6906 {
6907 sOnInvalidDynamicallyCheckedCall("vkAcquirePerformanceConfigurationINTEL", "VK_INTEL_performance_query");
6908 }
6909 AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
6910 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6911 VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6912 vkAcquirePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, true /* do lock */);
6913 return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
6914}
6915static VkResult entry_vkReleasePerformanceConfigurationINTEL(
6916 VkDevice device,
6917 VkPerformanceConfigurationINTEL configuration)
6918{
6919 AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
6920 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6921 VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6922 vkReleasePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
6923 return vkReleasePerformanceConfigurationINTEL_VkResult_return;
6924}
6925static VkResult dynCheck_entry_vkReleasePerformanceConfigurationINTEL(
6926 VkDevice device,
6927 VkPerformanceConfigurationINTEL configuration)
6928{
6929 auto resources = ResourceTracker::get();
6930 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6931 {
6932 sOnInvalidDynamicallyCheckedCall("vkReleasePerformanceConfigurationINTEL", "VK_INTEL_performance_query");
6933 }
6934 AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
6935 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6936 VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6937 vkReleasePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
6938 return vkReleasePerformanceConfigurationINTEL_VkResult_return;
6939}
6940static VkResult entry_vkQueueSetPerformanceConfigurationINTEL(
6941 VkQueue queue,
6942 VkPerformanceConfigurationINTEL configuration)
6943{
6944 AEMU_SCOPED_TRACE("vkQueueSetPerformanceConfigurationINTEL");
6945 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
6946 VkResult vkQueueSetPerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6947 vkQueueSetPerformanceConfigurationINTEL_VkResult_return = vkEnc->vkQueueSetPerformanceConfigurationINTEL(queue, configuration, true /* do lock */);
6948 return vkQueueSetPerformanceConfigurationINTEL_VkResult_return;
6949}
6950static VkResult entry_vkGetPerformanceParameterINTEL(
6951 VkDevice device,
6952 VkPerformanceParameterTypeINTEL parameter,
6953 VkPerformanceValueINTEL* pValue)
6954{
6955 AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
6956 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6957 VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
6958 vkGetPerformanceParameterINTEL_VkResult_return = vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
6959 return vkGetPerformanceParameterINTEL_VkResult_return;
6960}
6961static VkResult dynCheck_entry_vkGetPerformanceParameterINTEL(
6962 VkDevice device,
6963 VkPerformanceParameterTypeINTEL parameter,
6964 VkPerformanceValueINTEL* pValue)
6965{
6966 auto resources = ResourceTracker::get();
6967 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6968 {
6969 sOnInvalidDynamicallyCheckedCall("vkGetPerformanceParameterINTEL", "VK_INTEL_performance_query");
6970 }
6971 AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
6972 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6973 VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
6974 vkGetPerformanceParameterINTEL_VkResult_return = vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
6975 return vkGetPerformanceParameterINTEL_VkResult_return;
6976}
6977#endif
6978#ifdef VK_EXT_pci_bus_info
6979#endif
6980#ifdef VK_AMD_display_native_hdr
6981static void entry_vkSetLocalDimmingAMD(
6982 VkDevice device,
6983 VkSwapchainKHR swapChain,
6984 VkBool32 localDimmingEnable)
6985{
6986 AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
6987 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6988 vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
6989}
6990static void dynCheck_entry_vkSetLocalDimmingAMD(
6991 VkDevice device,
6992 VkSwapchainKHR swapChain,
6993 VkBool32 localDimmingEnable)
6994{
6995 auto resources = ResourceTracker::get();
6996 if (!resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr"))
6997 {
6998 sOnInvalidDynamicallyCheckedCall("vkSetLocalDimmingAMD", "VK_AMD_display_native_hdr");
6999 }
7000 AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
7001 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7002 vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
7003}
7004#endif
7005#ifdef VK_FUCHSIA_imagepipe_surface
7006static VkResult entry_vkCreateImagePipeSurfaceFUCHSIA(
7007 VkInstance instance,
7008 const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
7009 const VkAllocationCallbacks* pAllocator,
7010 VkSurfaceKHR* pSurface)
7011{
7012 AEMU_SCOPED_TRACE("vkCreateImagePipeSurfaceFUCHSIA");
7013 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7014 VkResult vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = (VkResult)0;
7015 vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = vkEnc->vkCreateImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
7016 return vkCreateImagePipeSurfaceFUCHSIA_VkResult_return;
7017}
7018#endif
7019#ifdef VK_EXT_metal_surface
7020static VkResult entry_vkCreateMetalSurfaceEXT(
7021 VkInstance instance,
7022 const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
7023 const VkAllocationCallbacks* pAllocator,
7024 VkSurfaceKHR* pSurface)
7025{
7026 AEMU_SCOPED_TRACE("vkCreateMetalSurfaceEXT");
7027 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7028 VkResult vkCreateMetalSurfaceEXT_VkResult_return = (VkResult)0;
7029 vkCreateMetalSurfaceEXT_VkResult_return = vkEnc->vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
7030 return vkCreateMetalSurfaceEXT_VkResult_return;
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007031}
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08007032#endif
Yilong Li48081632021-04-13 22:38:10 -07007033#ifdef VK_EXT_fragment_density_map
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08007034#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007035#ifdef VK_EXT_scalar_block_layout
7036#endif
7037#ifdef VK_GOOGLE_hlsl_functionality1
7038#endif
7039#ifdef VK_GOOGLE_decorate_string
7040#endif
7041#ifdef VK_EXT_subgroup_size_control
7042#endif
7043#ifdef VK_AMD_shader_core_properties2
7044#endif
7045#ifdef VK_AMD_device_coherent_memory
7046#endif
7047#ifdef VK_EXT_shader_image_atomic_int64
7048#endif
7049#ifdef VK_EXT_memory_budget
7050#endif
7051#ifdef VK_EXT_memory_priority
7052#endif
7053#ifdef VK_NV_dedicated_allocation_image_aliasing
7054#endif
7055#ifdef VK_EXT_buffer_device_address
7056static VkDeviceAddress entry_vkGetBufferDeviceAddressEXT(
7057 VkDevice device,
7058 const VkBufferDeviceAddressInfo* pInfo)
7059{
7060 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
7061 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7062 VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
7063 vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
7064 return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
7065}
7066static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressEXT(
7067 VkDevice device,
7068 const VkBufferDeviceAddressInfo* pInfo)
7069{
7070 auto resources = ResourceTracker::get();
7071 if (!resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address"))
7072 {
7073 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressEXT", "VK_EXT_buffer_device_address");
7074 }
7075 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
7076 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7077 VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
7078 vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
7079 return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
7080}
7081#endif
7082#ifdef VK_EXT_tooling_info
7083static VkResult entry_vkGetPhysicalDeviceToolPropertiesEXT(
7084 VkPhysicalDevice physicalDevice,
7085 uint32_t* pToolCount,
7086 VkPhysicalDeviceToolPropertiesEXT* pToolProperties)
7087{
7088 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceToolPropertiesEXT");
7089 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7090 VkResult vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = (VkResult)0;
7091 vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = vkEnc->vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, true /* do lock */);
7092 return vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return;
7093}
7094#endif
7095#ifdef VK_EXT_separate_stencil_usage
7096#endif
7097#ifdef VK_EXT_validation_features
7098#endif
7099#ifdef VK_NV_cooperative_matrix
7100static VkResult entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
7101 VkPhysicalDevice physicalDevice,
7102 uint32_t* pPropertyCount,
7103 VkCooperativeMatrixPropertiesNV* pProperties)
7104{
7105 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
7106 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7107 VkResult vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return = (VkResult)0;
7108 vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
7109 return vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return;
7110}
7111#endif
7112#ifdef VK_NV_coverage_reduction_mode
7113static VkResult entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
7114 VkPhysicalDevice physicalDevice,
7115 uint32_t* pCombinationCount,
7116 VkFramebufferMixedSamplesCombinationNV* pCombinations)
7117{
7118 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
7119 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7120 VkResult vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return = (VkResult)0;
7121 vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return = vkEnc->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, true /* do lock */);
7122 return vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return;
7123}
7124#endif
7125#ifdef VK_EXT_fragment_shader_interlock
7126#endif
7127#ifdef VK_EXT_ycbcr_image_arrays
7128#endif
Yilong Li353409a2022-01-04 02:37:56 -08007129#ifdef VK_EXT_provoking_vertex
7130#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007131#ifdef VK_EXT_full_screen_exclusive
7132static VkResult entry_vkGetPhysicalDeviceSurfacePresentModes2EXT(
7133 VkPhysicalDevice physicalDevice,
7134 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
7135 uint32_t* pPresentModeCount,
7136 VkPresentModeKHR* pPresentModes)
7137{
7138 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModes2EXT");
7139 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7140 VkResult vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
7141 vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes, true /* do lock */);
7142 return vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return;
7143}
7144static VkResult entry_vkAcquireFullScreenExclusiveModeEXT(
7145 VkDevice device,
7146 VkSwapchainKHR swapchain)
7147{
7148 AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
7149 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7150 VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
7151 vkAcquireFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
7152 return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
7153}
7154static VkResult dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT(
7155 VkDevice device,
7156 VkSwapchainKHR swapchain)
7157{
7158 auto resources = ResourceTracker::get();
7159 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
7160 {
7161 sOnInvalidDynamicallyCheckedCall("vkAcquireFullScreenExclusiveModeEXT", "VK_EXT_full_screen_exclusive");
7162 }
7163 AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
7164 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7165 VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
7166 vkAcquireFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
7167 return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
7168}
7169static VkResult entry_vkReleaseFullScreenExclusiveModeEXT(
7170 VkDevice device,
7171 VkSwapchainKHR swapchain)
7172{
7173 AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
7174 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7175 VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
7176 vkReleaseFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
7177 return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
7178}
7179static VkResult dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT(
7180 VkDevice device,
7181 VkSwapchainKHR swapchain)
7182{
7183 auto resources = ResourceTracker::get();
7184 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
7185 {
7186 sOnInvalidDynamicallyCheckedCall("vkReleaseFullScreenExclusiveModeEXT", "VK_EXT_full_screen_exclusive");
7187 }
7188 AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
7189 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7190 VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
7191 vkReleaseFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
7192 return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
7193}
7194static VkResult entry_vkGetDeviceGroupSurfacePresentModes2EXT(
7195 VkDevice device,
7196 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
7197 VkDeviceGroupPresentModeFlagsKHR* pModes)
7198{
7199 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
7200 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7201 VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
7202 vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, true /* do lock */);
7203 return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
7204}
7205static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT(
7206 VkDevice device,
7207 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
7208 VkDeviceGroupPresentModeFlagsKHR* pModes)
7209{
7210 auto resources = ResourceTracker::get();
7211 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
7212 {
7213 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModes2EXT", "VK_EXT_full_screen_exclusive");
7214 }
7215 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
7216 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7217 VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
7218 vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, true /* do lock */);
7219 return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
7220}
7221#endif
7222#ifdef VK_EXT_headless_surface
7223static VkResult entry_vkCreateHeadlessSurfaceEXT(
7224 VkInstance instance,
7225 const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo,
7226 const VkAllocationCallbacks* pAllocator,
7227 VkSurfaceKHR* pSurface)
7228{
7229 AEMU_SCOPED_TRACE("vkCreateHeadlessSurfaceEXT");
7230 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7231 VkResult vkCreateHeadlessSurfaceEXT_VkResult_return = (VkResult)0;
7232 vkCreateHeadlessSurfaceEXT_VkResult_return = vkEnc->vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
7233 return vkCreateHeadlessSurfaceEXT_VkResult_return;
7234}
7235#endif
7236#ifdef VK_EXT_line_rasterization
7237static void entry_vkCmdSetLineStippleEXT(
7238 VkCommandBuffer commandBuffer,
7239 uint32_t lineStippleFactor,
7240 uint16_t lineStipplePattern)
7241{
7242 AEMU_SCOPED_TRACE("vkCmdSetLineStippleEXT");
7243 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7244 vkEnc->vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, true /* do lock */);
7245}
7246#endif
7247#ifdef VK_EXT_shader_atomic_float
7248#endif
7249#ifdef VK_EXT_host_query_reset
7250static void entry_vkResetQueryPoolEXT(
7251 VkDevice device,
7252 VkQueryPool queryPool,
7253 uint32_t firstQuery,
7254 uint32_t queryCount)
7255{
7256 AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
7257 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7258 vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
7259}
7260static void dynCheck_entry_vkResetQueryPoolEXT(
7261 VkDevice device,
7262 VkQueryPool queryPool,
7263 uint32_t firstQuery,
7264 uint32_t queryCount)
7265{
7266 auto resources = ResourceTracker::get();
7267 if (!resources->hasDeviceExtension(device, "VK_EXT_host_query_reset"))
7268 {
7269 sOnInvalidDynamicallyCheckedCall("vkResetQueryPoolEXT", "VK_EXT_host_query_reset");
7270 }
7271 AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
7272 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7273 vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
7274}
7275#endif
7276#ifdef VK_EXT_index_type_uint8
7277#endif
7278#ifdef VK_EXT_extended_dynamic_state
7279static void entry_vkCmdSetCullModeEXT(
7280 VkCommandBuffer commandBuffer,
7281 VkCullModeFlags cullMode)
7282{
7283 AEMU_SCOPED_TRACE("vkCmdSetCullModeEXT");
7284 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7285 vkEnc->vkCmdSetCullModeEXT(commandBuffer, cullMode, true /* do lock */);
7286}
7287static void entry_vkCmdSetFrontFaceEXT(
7288 VkCommandBuffer commandBuffer,
7289 VkFrontFace frontFace)
7290{
7291 AEMU_SCOPED_TRACE("vkCmdSetFrontFaceEXT");
7292 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7293 vkEnc->vkCmdSetFrontFaceEXT(commandBuffer, frontFace, true /* do lock */);
7294}
7295static void entry_vkCmdSetPrimitiveTopologyEXT(
7296 VkCommandBuffer commandBuffer,
7297 VkPrimitiveTopology primitiveTopology)
7298{
7299 AEMU_SCOPED_TRACE("vkCmdSetPrimitiveTopologyEXT");
7300 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7301 vkEnc->vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, true /* do lock */);
7302}
7303static void entry_vkCmdSetViewportWithCountEXT(
7304 VkCommandBuffer commandBuffer,
7305 uint32_t viewportCount,
7306 const VkViewport* pViewports)
7307{
7308 AEMU_SCOPED_TRACE("vkCmdSetViewportWithCountEXT");
7309 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7310 vkEnc->vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, true /* do lock */);
7311}
7312static void entry_vkCmdSetScissorWithCountEXT(
7313 VkCommandBuffer commandBuffer,
7314 uint32_t scissorCount,
7315 const VkRect2D* pScissors)
7316{
7317 AEMU_SCOPED_TRACE("vkCmdSetScissorWithCountEXT");
7318 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7319 vkEnc->vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, true /* do lock */);
7320}
7321static void entry_vkCmdBindVertexBuffers2EXT(
7322 VkCommandBuffer commandBuffer,
7323 uint32_t firstBinding,
7324 uint32_t bindingCount,
7325 const VkBuffer* pBuffers,
7326 const VkDeviceSize* pOffsets,
7327 const VkDeviceSize* pSizes,
7328 const VkDeviceSize* pStrides)
7329{
7330 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers2EXT");
7331 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7332 vkEnc->vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, true /* do lock */);
7333}
7334static void entry_vkCmdSetDepthTestEnableEXT(
7335 VkCommandBuffer commandBuffer,
7336 VkBool32 depthTestEnable)
7337{
7338 AEMU_SCOPED_TRACE("vkCmdSetDepthTestEnableEXT");
7339 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7340 vkEnc->vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, true /* do lock */);
7341}
7342static void entry_vkCmdSetDepthWriteEnableEXT(
7343 VkCommandBuffer commandBuffer,
7344 VkBool32 depthWriteEnable)
7345{
7346 AEMU_SCOPED_TRACE("vkCmdSetDepthWriteEnableEXT");
7347 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7348 vkEnc->vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, true /* do lock */);
7349}
7350static void entry_vkCmdSetDepthCompareOpEXT(
7351 VkCommandBuffer commandBuffer,
7352 VkCompareOp depthCompareOp)
7353{
7354 AEMU_SCOPED_TRACE("vkCmdSetDepthCompareOpEXT");
7355 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7356 vkEnc->vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, true /* do lock */);
7357}
7358static void entry_vkCmdSetDepthBoundsTestEnableEXT(
7359 VkCommandBuffer commandBuffer,
7360 VkBool32 depthBoundsTestEnable)
7361{
7362 AEMU_SCOPED_TRACE("vkCmdSetDepthBoundsTestEnableEXT");
7363 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7364 vkEnc->vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, true /* do lock */);
7365}
7366static void entry_vkCmdSetStencilTestEnableEXT(
7367 VkCommandBuffer commandBuffer,
7368 VkBool32 stencilTestEnable)
7369{
7370 AEMU_SCOPED_TRACE("vkCmdSetStencilTestEnableEXT");
7371 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7372 vkEnc->vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, true /* do lock */);
7373}
7374static void entry_vkCmdSetStencilOpEXT(
7375 VkCommandBuffer commandBuffer,
7376 VkStencilFaceFlags faceMask,
7377 VkStencilOp failOp,
7378 VkStencilOp passOp,
7379 VkStencilOp depthFailOp,
7380 VkCompareOp compareOp)
7381{
7382 AEMU_SCOPED_TRACE("vkCmdSetStencilOpEXT");
7383 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7384 vkEnc->vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, true /* do lock */);
7385}
7386#endif
Yilong Li353409a2022-01-04 02:37:56 -08007387#ifdef VK_EXT_shader_atomic_float2
7388#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007389#ifdef VK_EXT_shader_demote_to_helper_invocation
7390#endif
7391#ifdef VK_NV_device_generated_commands
7392static void entry_vkGetGeneratedCommandsMemoryRequirementsNV(
7393 VkDevice device,
7394 const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
7395 VkMemoryRequirements2* pMemoryRequirements)
7396{
7397 AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
7398 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7399 vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
7400}
7401static void dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV(
7402 VkDevice device,
7403 const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
7404 VkMemoryRequirements2* pMemoryRequirements)
7405{
7406 auto resources = ResourceTracker::get();
7407 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
7408 {
7409 sOnInvalidDynamicallyCheckedCall("vkGetGeneratedCommandsMemoryRequirementsNV", "VK_NV_device_generated_commands");
7410 }
7411 AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
7412 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7413 vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
7414}
7415static void entry_vkCmdPreprocessGeneratedCommandsNV(
7416 VkCommandBuffer commandBuffer,
7417 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
7418{
7419 AEMU_SCOPED_TRACE("vkCmdPreprocessGeneratedCommandsNV");
7420 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7421 vkEnc->vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, true /* do lock */);
7422}
7423static void entry_vkCmdExecuteGeneratedCommandsNV(
7424 VkCommandBuffer commandBuffer,
7425 VkBool32 isPreprocessed,
7426 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
7427{
7428 AEMU_SCOPED_TRACE("vkCmdExecuteGeneratedCommandsNV");
7429 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7430 vkEnc->vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, true /* do lock */);
7431}
7432static void entry_vkCmdBindPipelineShaderGroupNV(
7433 VkCommandBuffer commandBuffer,
7434 VkPipelineBindPoint pipelineBindPoint,
7435 VkPipeline pipeline,
7436 uint32_t groupIndex)
7437{
7438 AEMU_SCOPED_TRACE("vkCmdBindPipelineShaderGroupNV");
7439 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7440 vkEnc->vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, true /* do lock */);
7441}
7442static VkResult entry_vkCreateIndirectCommandsLayoutNV(
7443 VkDevice device,
7444 const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
7445 const VkAllocationCallbacks* pAllocator,
7446 VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
7447{
7448 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
7449 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7450 VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
7451 vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
7452 return vkCreateIndirectCommandsLayoutNV_VkResult_return;
7453}
7454static VkResult dynCheck_entry_vkCreateIndirectCommandsLayoutNV(
7455 VkDevice device,
7456 const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
7457 const VkAllocationCallbacks* pAllocator,
7458 VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
7459{
7460 auto resources = ResourceTracker::get();
7461 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
7462 {
7463 sOnInvalidDynamicallyCheckedCall("vkCreateIndirectCommandsLayoutNV", "VK_NV_device_generated_commands");
7464 }
7465 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
7466 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7467 VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
7468 vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
7469 return vkCreateIndirectCommandsLayoutNV_VkResult_return;
7470}
7471static void entry_vkDestroyIndirectCommandsLayoutNV(
7472 VkDevice device,
7473 VkIndirectCommandsLayoutNV indirectCommandsLayout,
7474 const VkAllocationCallbacks* pAllocator)
7475{
7476 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
7477 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7478 vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, true /* do lock */);
7479}
7480static void dynCheck_entry_vkDestroyIndirectCommandsLayoutNV(
7481 VkDevice device,
7482 VkIndirectCommandsLayoutNV indirectCommandsLayout,
7483 const VkAllocationCallbacks* pAllocator)
7484{
7485 auto resources = ResourceTracker::get();
7486 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
7487 {
7488 sOnInvalidDynamicallyCheckedCall("vkDestroyIndirectCommandsLayoutNV", "VK_NV_device_generated_commands");
7489 }
7490 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
7491 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7492 vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, true /* do lock */);
7493}
7494#endif
Yilong Li353409a2022-01-04 02:37:56 -08007495#ifdef VK_NV_inherited_viewport_scissor
7496#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007497#ifdef VK_EXT_texel_buffer_alignment
7498#endif
7499#ifdef VK_QCOM_render_pass_transform
7500#endif
7501#ifdef VK_EXT_device_memory_report
7502#endif
Yilong Li353409a2022-01-04 02:37:56 -08007503#ifdef VK_EXT_acquire_drm_display
7504static VkResult entry_vkAcquireDrmDisplayEXT(
7505 VkPhysicalDevice physicalDevice,
7506 int32_t drmFd,
7507 VkDisplayKHR display)
7508{
7509 AEMU_SCOPED_TRACE("vkAcquireDrmDisplayEXT");
7510 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7511 VkResult vkAcquireDrmDisplayEXT_VkResult_return = (VkResult)0;
7512 vkAcquireDrmDisplayEXT_VkResult_return = vkEnc->vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, true /* do lock */);
7513 return vkAcquireDrmDisplayEXT_VkResult_return;
7514}
7515static VkResult entry_vkGetDrmDisplayEXT(
7516 VkPhysicalDevice physicalDevice,
7517 int32_t drmFd,
7518 uint32_t connectorId,
7519 VkDisplayKHR* display)
7520{
7521 AEMU_SCOPED_TRACE("vkGetDrmDisplayEXT");
7522 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7523 VkResult vkGetDrmDisplayEXT_VkResult_return = (VkResult)0;
7524 vkGetDrmDisplayEXT_VkResult_return = vkEnc->vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, true /* do lock */);
7525 return vkGetDrmDisplayEXT_VkResult_return;
7526}
7527#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007528#ifdef VK_EXT_robustness2
7529#endif
7530#ifdef VK_EXT_custom_border_color
7531#endif
7532#ifdef VK_GOOGLE_user_type
7533#endif
7534#ifdef VK_EXT_private_data
7535static VkResult entry_vkCreatePrivateDataSlotEXT(
7536 VkDevice device,
7537 const VkPrivateDataSlotCreateInfoEXT* pCreateInfo,
7538 const VkAllocationCallbacks* pAllocator,
7539 VkPrivateDataSlotEXT* pPrivateDataSlot)
7540{
7541 AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
7542 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7543 VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
7544 vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
7545 return vkCreatePrivateDataSlotEXT_VkResult_return;
7546}
7547static VkResult dynCheck_entry_vkCreatePrivateDataSlotEXT(
7548 VkDevice device,
7549 const VkPrivateDataSlotCreateInfoEXT* pCreateInfo,
7550 const VkAllocationCallbacks* pAllocator,
7551 VkPrivateDataSlotEXT* pPrivateDataSlot)
7552{
7553 auto resources = ResourceTracker::get();
7554 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
7555 {
7556 sOnInvalidDynamicallyCheckedCall("vkCreatePrivateDataSlotEXT", "VK_EXT_private_data");
7557 }
7558 AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
7559 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7560 VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
7561 vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
7562 return vkCreatePrivateDataSlotEXT_VkResult_return;
7563}
7564static void entry_vkDestroyPrivateDataSlotEXT(
7565 VkDevice device,
7566 VkPrivateDataSlotEXT privateDataSlot,
7567 const VkAllocationCallbacks* pAllocator)
7568{
7569 AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
7570 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7571 vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
7572}
7573static void dynCheck_entry_vkDestroyPrivateDataSlotEXT(
7574 VkDevice device,
7575 VkPrivateDataSlotEXT privateDataSlot,
7576 const VkAllocationCallbacks* pAllocator)
7577{
7578 auto resources = ResourceTracker::get();
7579 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
7580 {
7581 sOnInvalidDynamicallyCheckedCall("vkDestroyPrivateDataSlotEXT", "VK_EXT_private_data");
7582 }
7583 AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
7584 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7585 vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
7586}
7587static VkResult entry_vkSetPrivateDataEXT(
7588 VkDevice device,
7589 VkObjectType objectType,
7590 uint64_t objectHandle,
7591 VkPrivateDataSlotEXT privateDataSlot,
7592 uint64_t data)
7593{
7594 AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
7595 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7596 VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
7597 vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
7598 return vkSetPrivateDataEXT_VkResult_return;
7599}
7600static VkResult dynCheck_entry_vkSetPrivateDataEXT(
7601 VkDevice device,
7602 VkObjectType objectType,
7603 uint64_t objectHandle,
7604 VkPrivateDataSlotEXT privateDataSlot,
7605 uint64_t data)
7606{
7607 auto resources = ResourceTracker::get();
7608 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
7609 {
7610 sOnInvalidDynamicallyCheckedCall("vkSetPrivateDataEXT", "VK_EXT_private_data");
7611 }
7612 AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
7613 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7614 VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
7615 vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
7616 return vkSetPrivateDataEXT_VkResult_return;
7617}
7618static void entry_vkGetPrivateDataEXT(
7619 VkDevice device,
7620 VkObjectType objectType,
7621 uint64_t objectHandle,
7622 VkPrivateDataSlotEXT privateDataSlot,
7623 uint64_t* pData)
7624{
7625 AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
7626 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7627 vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, true /* do lock */);
7628}
7629static void dynCheck_entry_vkGetPrivateDataEXT(
7630 VkDevice device,
7631 VkObjectType objectType,
7632 uint64_t objectHandle,
7633 VkPrivateDataSlotEXT privateDataSlot,
7634 uint64_t* pData)
7635{
7636 auto resources = ResourceTracker::get();
7637 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
7638 {
7639 sOnInvalidDynamicallyCheckedCall("vkGetPrivateDataEXT", "VK_EXT_private_data");
7640 }
7641 AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
7642 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7643 vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, true /* do lock */);
7644}
7645#endif
7646#ifdef VK_EXT_pipeline_creation_cache_control
7647#endif
7648#ifdef VK_NV_device_diagnostics_config
7649#endif
7650#ifdef VK_QCOM_render_pass_store_ops
7651#endif
7652#ifdef VK_NV_fragment_shading_rate_enums
7653static void entry_vkCmdSetFragmentShadingRateEnumNV(
7654 VkCommandBuffer commandBuffer,
7655 VkFragmentShadingRateNV shadingRate,
7656 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
7657{
7658 AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateEnumNV");
7659 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7660 vkEnc->vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, true /* do lock */);
7661}
7662#endif
Yilong Li353409a2022-01-04 02:37:56 -08007663#ifdef VK_NV_ray_tracing_motion_blur
7664#endif
7665#ifdef VK_EXT_ycbcr_2plane_444_formats
7666#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007667#ifdef VK_EXT_fragment_density_map2
7668#endif
7669#ifdef VK_QCOM_rotated_copy_commands
7670#endif
7671#ifdef VK_EXT_image_robustness
7672#endif
7673#ifdef VK_EXT_4444_formats
7674#endif
Yilong Li353409a2022-01-04 02:37:56 -08007675#ifdef VK_EXT_rgba10x6_formats
7676#endif
7677#ifdef VK_NV_acquire_winrt_display
7678static VkResult entry_vkAcquireWinrtDisplayNV(
7679 VkPhysicalDevice physicalDevice,
7680 VkDisplayKHR display)
7681{
7682 AEMU_SCOPED_TRACE("vkAcquireWinrtDisplayNV");
7683 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7684 VkResult vkAcquireWinrtDisplayNV_VkResult_return = (VkResult)0;
7685 vkAcquireWinrtDisplayNV_VkResult_return = vkEnc->vkAcquireWinrtDisplayNV(physicalDevice, display, true /* do lock */);
7686 return vkAcquireWinrtDisplayNV_VkResult_return;
7687}
7688static VkResult entry_vkGetWinrtDisplayNV(
7689 VkPhysicalDevice physicalDevice,
7690 uint32_t deviceRelativeId,
7691 VkDisplayKHR* pDisplay)
7692{
7693 AEMU_SCOPED_TRACE("vkGetWinrtDisplayNV");
7694 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7695 VkResult vkGetWinrtDisplayNV_VkResult_return = (VkResult)0;
7696 vkGetWinrtDisplayNV_VkResult_return = vkEnc->vkGetWinrtDisplayNV(physicalDevice, deviceRelativeId, pDisplay, true /* do lock */);
7697 return vkGetWinrtDisplayNV_VkResult_return;
7698}
7699#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007700#ifdef VK_EXT_directfb_surface
7701static VkResult entry_vkCreateDirectFBSurfaceEXT(
7702 VkInstance instance,
7703 const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo,
7704 const VkAllocationCallbacks* pAllocator,
7705 VkSurfaceKHR* pSurface)
7706{
7707 AEMU_SCOPED_TRACE("vkCreateDirectFBSurfaceEXT");
7708 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7709 VkResult vkCreateDirectFBSurfaceEXT_VkResult_return = (VkResult)0;
7710 vkCreateDirectFBSurfaceEXT_VkResult_return = vkEnc->vkCreateDirectFBSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
7711 return vkCreateDirectFBSurfaceEXT_VkResult_return;
7712}
7713static VkBool32 entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT(
7714 VkPhysicalDevice physicalDevice,
7715 uint32_t queueFamilyIndex,
7716 IDirectFB* dfb)
7717{
7718 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDirectFBPresentationSupportEXT");
7719 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7720 VkBool32 vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return = (VkBool32)0;
7721 vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return = vkEnc->vkGetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice, queueFamilyIndex, dfb, true /* do lock */);
7722 return vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return;
7723}
7724#endif
Yilong Li353409a2022-01-04 02:37:56 -08007725#ifdef VK_VALVE_mutable_descriptor_type
7726#endif
7727#ifdef VK_EXT_vertex_input_dynamic_state
7728static void entry_vkCmdSetVertexInputEXT(
7729 VkCommandBuffer commandBuffer,
7730 uint32_t vertexBindingDescriptionCount,
7731 const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions,
7732 uint32_t vertexAttributeDescriptionCount,
7733 const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions)
7734{
7735 AEMU_SCOPED_TRACE("vkCmdSetVertexInputEXT");
7736 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7737 vkEnc->vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, true /* do lock */);
7738}
7739#endif
7740#ifdef VK_EXT_physical_device_drm
7741#endif
7742#ifdef VK_EXT_primitive_topology_list_restart
7743#endif
7744#ifdef VK_FUCHSIA_external_memory
7745static VkResult entry_vkGetMemoryZirconHandleFUCHSIA(
7746 VkDevice device,
7747 const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
7748 zx_handle_t* pZirconHandle)
7749{
7750 AEMU_SCOPED_TRACE("vkGetMemoryZirconHandleFUCHSIA");
7751 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7752 VkResult vkGetMemoryZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
7753 vkGetMemoryZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetMemoryZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
7754 return vkGetMemoryZirconHandleFUCHSIA_VkResult_return;
7755}
7756static VkResult dynCheck_entry_vkGetMemoryZirconHandleFUCHSIA(
7757 VkDevice device,
7758 const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
7759 zx_handle_t* pZirconHandle)
7760{
7761 auto resources = ResourceTracker::get();
7762 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_external_memory"))
7763 {
7764 sOnInvalidDynamicallyCheckedCall("vkGetMemoryZirconHandleFUCHSIA", "VK_FUCHSIA_external_memory");
7765 }
7766 AEMU_SCOPED_TRACE("vkGetMemoryZirconHandleFUCHSIA");
7767 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7768 VkResult vkGetMemoryZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
7769 vkGetMemoryZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetMemoryZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
7770 return vkGetMemoryZirconHandleFUCHSIA_VkResult_return;
7771}
7772static VkResult entry_vkGetMemoryZirconHandlePropertiesFUCHSIA(
7773 VkDevice device,
7774 VkExternalMemoryHandleTypeFlagBits handleType,
7775 zx_handle_t zirconHandle,
7776 VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties)
7777{
7778 AEMU_SCOPED_TRACE("vkGetMemoryZirconHandlePropertiesFUCHSIA");
7779 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7780 VkResult vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return = (VkResult)0;
7781 vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return = vkEnc->vkGetMemoryZirconHandlePropertiesFUCHSIA(device, handleType, zirconHandle, pMemoryZirconHandleProperties, true /* do lock */);
7782 return vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return;
7783}
7784static VkResult dynCheck_entry_vkGetMemoryZirconHandlePropertiesFUCHSIA(
7785 VkDevice device,
7786 VkExternalMemoryHandleTypeFlagBits handleType,
7787 zx_handle_t zirconHandle,
7788 VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties)
7789{
7790 auto resources = ResourceTracker::get();
7791 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_external_memory"))
7792 {
7793 sOnInvalidDynamicallyCheckedCall("vkGetMemoryZirconHandlePropertiesFUCHSIA", "VK_FUCHSIA_external_memory");
7794 }
7795 AEMU_SCOPED_TRACE("vkGetMemoryZirconHandlePropertiesFUCHSIA");
7796 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7797 VkResult vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return = (VkResult)0;
7798 vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return = vkEnc->vkGetMemoryZirconHandlePropertiesFUCHSIA(device, handleType, zirconHandle, pMemoryZirconHandleProperties, true /* do lock */);
7799 return vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return;
7800}
7801#endif
7802#ifdef VK_FUCHSIA_external_semaphore
7803static VkResult entry_vkImportSemaphoreZirconHandleFUCHSIA(
7804 VkDevice device,
7805 const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo)
7806{
7807 AEMU_SCOPED_TRACE("vkImportSemaphoreZirconHandleFUCHSIA");
7808 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7809 VkResult vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
7810 vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return = vkEnc->vkImportSemaphoreZirconHandleFUCHSIA(device, pImportSemaphoreZirconHandleInfo, true /* do lock */);
7811 return vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return;
7812}
7813static VkResult dynCheck_entry_vkImportSemaphoreZirconHandleFUCHSIA(
7814 VkDevice device,
7815 const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo)
7816{
7817 auto resources = ResourceTracker::get();
7818 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_external_semaphore"))
7819 {
7820 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreZirconHandleFUCHSIA", "VK_FUCHSIA_external_semaphore");
7821 }
7822 AEMU_SCOPED_TRACE("vkImportSemaphoreZirconHandleFUCHSIA");
7823 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7824 VkResult vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
7825 vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return = vkEnc->vkImportSemaphoreZirconHandleFUCHSIA(device, pImportSemaphoreZirconHandleInfo, true /* do lock */);
7826 return vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return;
7827}
7828static VkResult entry_vkGetSemaphoreZirconHandleFUCHSIA(
7829 VkDevice device,
7830 const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
7831 zx_handle_t* pZirconHandle)
7832{
7833 AEMU_SCOPED_TRACE("vkGetSemaphoreZirconHandleFUCHSIA");
7834 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7835 VkResult vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
7836 vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetSemaphoreZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
7837 return vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return;
7838}
7839static VkResult dynCheck_entry_vkGetSemaphoreZirconHandleFUCHSIA(
7840 VkDevice device,
7841 const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
7842 zx_handle_t* pZirconHandle)
7843{
7844 auto resources = ResourceTracker::get();
7845 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_external_semaphore"))
7846 {
7847 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreZirconHandleFUCHSIA", "VK_FUCHSIA_external_semaphore");
7848 }
7849 AEMU_SCOPED_TRACE("vkGetSemaphoreZirconHandleFUCHSIA");
7850 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7851 VkResult vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
7852 vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetSemaphoreZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
7853 return vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return;
7854}
7855#endif
7856#ifdef VK_FUCHSIA_buffer_collection
7857static VkResult entry_vkCreateBufferCollectionFUCHSIA(
7858 VkDevice device,
7859 const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo,
7860 const VkAllocationCallbacks* pAllocator,
7861 VkBufferCollectionFUCHSIA* pCollection)
7862{
7863 AEMU_SCOPED_TRACE("vkCreateBufferCollectionFUCHSIA");
7864 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7865 VkResult vkCreateBufferCollectionFUCHSIA_VkResult_return = (VkResult)0;
7866 vkCreateBufferCollectionFUCHSIA_VkResult_return = vkEnc->vkCreateBufferCollectionFUCHSIA(device, pCreateInfo, pAllocator, pCollection, true /* do lock */);
7867 return vkCreateBufferCollectionFUCHSIA_VkResult_return;
7868}
7869static VkResult dynCheck_entry_vkCreateBufferCollectionFUCHSIA(
7870 VkDevice device,
7871 const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo,
7872 const VkAllocationCallbacks* pAllocator,
7873 VkBufferCollectionFUCHSIA* pCollection)
7874{
7875 auto resources = ResourceTracker::get();
7876 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection"))
7877 {
7878 sOnInvalidDynamicallyCheckedCall("vkCreateBufferCollectionFUCHSIA", "VK_FUCHSIA_buffer_collection");
7879 }
7880 AEMU_SCOPED_TRACE("vkCreateBufferCollectionFUCHSIA");
7881 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7882 VkResult vkCreateBufferCollectionFUCHSIA_VkResult_return = (VkResult)0;
7883 vkCreateBufferCollectionFUCHSIA_VkResult_return = vkEnc->vkCreateBufferCollectionFUCHSIA(device, pCreateInfo, pAllocator, pCollection, true /* do lock */);
7884 return vkCreateBufferCollectionFUCHSIA_VkResult_return;
7885}
7886static VkResult entry_vkSetBufferCollectionImageConstraintsFUCHSIA(
7887 VkDevice device,
7888 VkBufferCollectionFUCHSIA collection,
7889 const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo)
7890{
7891 AEMU_SCOPED_TRACE("vkSetBufferCollectionImageConstraintsFUCHSIA");
7892 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7893 VkResult vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return = (VkResult)0;
7894 vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return = vkEnc->vkSetBufferCollectionImageConstraintsFUCHSIA(device, collection, pImageConstraintsInfo, true /* do lock */);
7895 return vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return;
7896}
7897static VkResult dynCheck_entry_vkSetBufferCollectionImageConstraintsFUCHSIA(
7898 VkDevice device,
7899 VkBufferCollectionFUCHSIA collection,
7900 const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo)
7901{
7902 auto resources = ResourceTracker::get();
7903 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection"))
7904 {
7905 sOnInvalidDynamicallyCheckedCall("vkSetBufferCollectionImageConstraintsFUCHSIA", "VK_FUCHSIA_buffer_collection");
7906 }
7907 AEMU_SCOPED_TRACE("vkSetBufferCollectionImageConstraintsFUCHSIA");
7908 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7909 VkResult vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return = (VkResult)0;
7910 vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return = vkEnc->vkSetBufferCollectionImageConstraintsFUCHSIA(device, collection, pImageConstraintsInfo, true /* do lock */);
7911 return vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return;
7912}
7913static VkResult entry_vkSetBufferCollectionBufferConstraintsFUCHSIA(
7914 VkDevice device,
7915 VkBufferCollectionFUCHSIA collection,
7916 const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo)
7917{
7918 AEMU_SCOPED_TRACE("vkSetBufferCollectionBufferConstraintsFUCHSIA");
7919 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7920 VkResult vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return = (VkResult)0;
7921 vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return = vkEnc->vkSetBufferCollectionBufferConstraintsFUCHSIA(device, collection, pBufferConstraintsInfo, true /* do lock */);
7922 return vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return;
7923}
7924static VkResult dynCheck_entry_vkSetBufferCollectionBufferConstraintsFUCHSIA(
7925 VkDevice device,
7926 VkBufferCollectionFUCHSIA collection,
7927 const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo)
7928{
7929 auto resources = ResourceTracker::get();
7930 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection"))
7931 {
7932 sOnInvalidDynamicallyCheckedCall("vkSetBufferCollectionBufferConstraintsFUCHSIA", "VK_FUCHSIA_buffer_collection");
7933 }
7934 AEMU_SCOPED_TRACE("vkSetBufferCollectionBufferConstraintsFUCHSIA");
7935 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7936 VkResult vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return = (VkResult)0;
7937 vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return = vkEnc->vkSetBufferCollectionBufferConstraintsFUCHSIA(device, collection, pBufferConstraintsInfo, true /* do lock */);
7938 return vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return;
7939}
7940static void entry_vkDestroyBufferCollectionFUCHSIA(
7941 VkDevice device,
7942 VkBufferCollectionFUCHSIA collection,
7943 const VkAllocationCallbacks* pAllocator)
7944{
7945 AEMU_SCOPED_TRACE("vkDestroyBufferCollectionFUCHSIA");
7946 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7947 vkEnc->vkDestroyBufferCollectionFUCHSIA(device, collection, pAllocator, true /* do lock */);
7948}
7949static void dynCheck_entry_vkDestroyBufferCollectionFUCHSIA(
7950 VkDevice device,
7951 VkBufferCollectionFUCHSIA collection,
7952 const VkAllocationCallbacks* pAllocator)
7953{
7954 auto resources = ResourceTracker::get();
7955 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection"))
7956 {
7957 sOnInvalidDynamicallyCheckedCall("vkDestroyBufferCollectionFUCHSIA", "VK_FUCHSIA_buffer_collection");
7958 }
7959 AEMU_SCOPED_TRACE("vkDestroyBufferCollectionFUCHSIA");
7960 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7961 vkEnc->vkDestroyBufferCollectionFUCHSIA(device, collection, pAllocator, true /* do lock */);
7962}
7963static VkResult entry_vkGetBufferCollectionPropertiesFUCHSIA(
7964 VkDevice device,
7965 VkBufferCollectionFUCHSIA collection,
7966 VkBufferCollectionPropertiesFUCHSIA* pProperties)
7967{
7968 AEMU_SCOPED_TRACE("vkGetBufferCollectionPropertiesFUCHSIA");
7969 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7970 VkResult vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return = (VkResult)0;
7971 vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return = vkEnc->vkGetBufferCollectionPropertiesFUCHSIA(device, collection, pProperties, true /* do lock */);
7972 return vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return;
7973}
7974static VkResult dynCheck_entry_vkGetBufferCollectionPropertiesFUCHSIA(
7975 VkDevice device,
7976 VkBufferCollectionFUCHSIA collection,
7977 VkBufferCollectionPropertiesFUCHSIA* pProperties)
7978{
7979 auto resources = ResourceTracker::get();
7980 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection"))
7981 {
7982 sOnInvalidDynamicallyCheckedCall("vkGetBufferCollectionPropertiesFUCHSIA", "VK_FUCHSIA_buffer_collection");
7983 }
7984 AEMU_SCOPED_TRACE("vkGetBufferCollectionPropertiesFUCHSIA");
7985 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7986 VkResult vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return = (VkResult)0;
7987 vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return = vkEnc->vkGetBufferCollectionPropertiesFUCHSIA(device, collection, pProperties, true /* do lock */);
7988 return vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return;
7989}
7990#endif
7991#ifdef VK_HUAWEI_subpass_shading
7992static VkResult entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
7993 VkDevice device,
7994 VkRenderPass renderpass,
7995 VkExtent2D* pMaxWorkgroupSize)
7996{
7997 AEMU_SCOPED_TRACE("vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI");
7998 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7999 VkResult vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return = (VkResult)0;
8000 vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return = vkEnc->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, true /* do lock */);
8001 return vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return;
8002}
8003static VkResult dynCheck_entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
8004 VkDevice device,
8005 VkRenderPass renderpass,
8006 VkExtent2D* pMaxWorkgroupSize)
8007{
8008 auto resources = ResourceTracker::get();
8009 if (!resources->hasDeviceExtension(device, "VK_HUAWEI_subpass_shading"))
8010 {
8011 sOnInvalidDynamicallyCheckedCall("vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI", "VK_HUAWEI_subpass_shading");
8012 }
8013 AEMU_SCOPED_TRACE("vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI");
8014 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8015 VkResult vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return = (VkResult)0;
8016 vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return = vkEnc->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, true /* do lock */);
8017 return vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return;
8018}
8019static void entry_vkCmdSubpassShadingHUAWEI(
8020 VkCommandBuffer commandBuffer)
8021{
8022 AEMU_SCOPED_TRACE("vkCmdSubpassShadingHUAWEI");
8023 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8024 vkEnc->vkCmdSubpassShadingHUAWEI(commandBuffer, true /* do lock */);
8025}
8026#endif
8027#ifdef VK_HUAWEI_invocation_mask
8028static void entry_vkCmdBindInvocationMaskHUAWEI(
8029 VkCommandBuffer commandBuffer,
8030 VkImageView imageView,
8031 VkImageLayout imageLayout)
8032{
8033 AEMU_SCOPED_TRACE("vkCmdBindInvocationMaskHUAWEI");
8034 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8035 vkEnc->vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, true /* do lock */);
8036}
8037#endif
8038#ifdef VK_NV_external_memory_rdma
8039static VkResult entry_vkGetMemoryRemoteAddressNV(
8040 VkDevice device,
8041 const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo,
8042 VkRemoteAddressNV* pAddress)
8043{
8044 AEMU_SCOPED_TRACE("vkGetMemoryRemoteAddressNV");
8045 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8046 VkResult vkGetMemoryRemoteAddressNV_VkResult_return = (VkResult)0;
8047 vkGetMemoryRemoteAddressNV_VkResult_return = vkEnc->vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, true /* do lock */);
8048 return vkGetMemoryRemoteAddressNV_VkResult_return;
8049}
8050static VkResult dynCheck_entry_vkGetMemoryRemoteAddressNV(
8051 VkDevice device,
8052 const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo,
8053 VkRemoteAddressNV* pAddress)
8054{
8055 auto resources = ResourceTracker::get();
8056 if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_rdma"))
8057 {
8058 sOnInvalidDynamicallyCheckedCall("vkGetMemoryRemoteAddressNV", "VK_NV_external_memory_rdma");
8059 }
8060 AEMU_SCOPED_TRACE("vkGetMemoryRemoteAddressNV");
8061 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8062 VkResult vkGetMemoryRemoteAddressNV_VkResult_return = (VkResult)0;
8063 vkGetMemoryRemoteAddressNV_VkResult_return = vkEnc->vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, true /* do lock */);
8064 return vkGetMemoryRemoteAddressNV_VkResult_return;
8065}
8066#endif
8067#ifdef VK_EXT_extended_dynamic_state2
8068static void entry_vkCmdSetPatchControlPointsEXT(
8069 VkCommandBuffer commandBuffer,
8070 uint32_t patchControlPoints)
8071{
8072 AEMU_SCOPED_TRACE("vkCmdSetPatchControlPointsEXT");
8073 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8074 vkEnc->vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, true /* do lock */);
8075}
8076static void entry_vkCmdSetRasterizerDiscardEnableEXT(
8077 VkCommandBuffer commandBuffer,
8078 VkBool32 rasterizerDiscardEnable)
8079{
8080 AEMU_SCOPED_TRACE("vkCmdSetRasterizerDiscardEnableEXT");
8081 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8082 vkEnc->vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, true /* do lock */);
8083}
8084static void entry_vkCmdSetDepthBiasEnableEXT(
8085 VkCommandBuffer commandBuffer,
8086 VkBool32 depthBiasEnable)
8087{
8088 AEMU_SCOPED_TRACE("vkCmdSetDepthBiasEnableEXT");
8089 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8090 vkEnc->vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, true /* do lock */);
8091}
8092static void entry_vkCmdSetLogicOpEXT(
8093 VkCommandBuffer commandBuffer,
8094 VkLogicOp logicOp)
8095{
8096 AEMU_SCOPED_TRACE("vkCmdSetLogicOpEXT");
8097 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8098 vkEnc->vkCmdSetLogicOpEXT(commandBuffer, logicOp, true /* do lock */);
8099}
8100static void entry_vkCmdSetPrimitiveRestartEnableEXT(
8101 VkCommandBuffer commandBuffer,
8102 VkBool32 primitiveRestartEnable)
8103{
8104 AEMU_SCOPED_TRACE("vkCmdSetPrimitiveRestartEnableEXT");
8105 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8106 vkEnc->vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, true /* do lock */);
8107}
8108#endif
8109#ifdef VK_QNX_screen_surface
8110static VkResult entry_vkCreateScreenSurfaceQNX(
8111 VkInstance instance,
8112 const VkScreenSurfaceCreateInfoQNX* pCreateInfo,
8113 const VkAllocationCallbacks* pAllocator,
8114 VkSurfaceKHR* pSurface)
8115{
8116 AEMU_SCOPED_TRACE("vkCreateScreenSurfaceQNX");
8117 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8118 VkResult vkCreateScreenSurfaceQNX_VkResult_return = (VkResult)0;
8119 vkCreateScreenSurfaceQNX_VkResult_return = vkEnc->vkCreateScreenSurfaceQNX(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
8120 return vkCreateScreenSurfaceQNX_VkResult_return;
8121}
8122static VkBool32 entry_vkGetPhysicalDeviceScreenPresentationSupportQNX(
8123 VkPhysicalDevice physicalDevice,
8124 uint32_t queueFamilyIndex,
8125 _screen_window* window)
8126{
8127 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceScreenPresentationSupportQNX");
8128 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8129 VkBool32 vkGetPhysicalDeviceScreenPresentationSupportQNX_VkBool32_return = (VkBool32)0;
8130 vkGetPhysicalDeviceScreenPresentationSupportQNX_VkBool32_return = vkEnc->vkGetPhysicalDeviceScreenPresentationSupportQNX(physicalDevice, queueFamilyIndex, window, true /* do lock */);
8131 return vkGetPhysicalDeviceScreenPresentationSupportQNX_VkBool32_return;
8132}
8133#endif
8134#ifdef VK_EXT_color_write_enable
8135static void entry_vkCmdSetColorWriteEnableEXT(
8136 VkCommandBuffer commandBuffer,
8137 uint32_t attachmentCount,
8138 const VkBool32* pColorWriteEnables)
8139{
8140 AEMU_SCOPED_TRACE("vkCmdSetColorWriteEnableEXT");
8141 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8142 vkEnc->vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, true /* do lock */);
8143}
8144#endif
Yilong Li71c43c52021-02-10 02:50:43 -08008145#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -07008146static VkResult entry_vkRegisterImageColorBufferGOOGLE(
8147 VkDevice device,
8148 VkImage image,
8149 uint32_t colorBuffer)
8150{
8151 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
8152 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8153 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
8154 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
8155 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
8156}
8157static VkResult dynCheck_entry_vkRegisterImageColorBufferGOOGLE(
8158 VkDevice device,
8159 VkImage image,
8160 uint32_t colorBuffer)
8161{
8162 auto resources = ResourceTracker::get();
8163 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
8164 {
8165 sOnInvalidDynamicallyCheckedCall("vkRegisterImageColorBufferGOOGLE", "VK_GOOGLE_gfxstream");
8166 }
8167 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
8168 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8169 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
8170 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
8171 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
8172}
8173static VkResult entry_vkRegisterBufferColorBufferGOOGLE(
8174 VkDevice device,
8175 VkBuffer buffer,
8176 uint32_t colorBuffer)
8177{
8178 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
8179 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8180 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
8181 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
8182 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
8183}
8184static VkResult dynCheck_entry_vkRegisterBufferColorBufferGOOGLE(
8185 VkDevice device,
8186 VkBuffer buffer,
8187 uint32_t colorBuffer)
8188{
8189 auto resources = ResourceTracker::get();
8190 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
8191 {
8192 sOnInvalidDynamicallyCheckedCall("vkRegisterBufferColorBufferGOOGLE", "VK_GOOGLE_gfxstream");
8193 }
8194 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
8195 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8196 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
8197 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
8198 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
8199}
Yilong Lia8d45f12021-02-07 02:30:21 -08008200static VkResult entry_vkMapMemoryIntoAddressSpaceGOOGLE(
8201 VkDevice device,
8202 VkDeviceMemory memory,
8203 uint64_t* pAddress)
8204{
8205 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
8206 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8207 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
8208 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
8209 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
8210}
8211static VkResult dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE(
8212 VkDevice device,
8213 VkDeviceMemory memory,
8214 uint64_t* pAddress)
8215{
8216 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08008217 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Yilong Lia8d45f12021-02-07 02:30:21 -08008218 {
Yilong Li71c43c52021-02-10 02:50:43 -08008219 sOnInvalidDynamicallyCheckedCall("vkMapMemoryIntoAddressSpaceGOOGLE", "VK_GOOGLE_gfxstream");
Yilong Lia8d45f12021-02-07 02:30:21 -08008220 }
8221 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
8222 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8223 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
8224 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
8225 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
8226}
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008227static void entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
8228 VkDevice device,
8229 VkDescriptorSet descriptorSet,
8230 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
8231 uint32_t imageInfoCount,
8232 uint32_t bufferInfoCount,
8233 uint32_t bufferViewCount,
8234 const uint32_t* pImageInfoEntryIndices,
8235 const uint32_t* pBufferInfoEntryIndices,
8236 const uint32_t* pBufferViewEntryIndices,
8237 const VkDescriptorImageInfo* pImageInfos,
8238 const VkDescriptorBufferInfo* pBufferInfos,
8239 const VkBufferView* pBufferViews)
8240{
8241 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008242 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008243 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008244}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008245static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
8246 VkDevice device,
8247 VkDescriptorSet descriptorSet,
8248 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
8249 uint32_t imageInfoCount,
8250 uint32_t bufferInfoCount,
8251 uint32_t bufferViewCount,
8252 const uint32_t* pImageInfoEntryIndices,
8253 const uint32_t* pBufferInfoEntryIndices,
8254 const uint32_t* pBufferViewEntryIndices,
8255 const VkDescriptorImageInfo* pImageInfos,
8256 const VkDescriptorBufferInfo* pBufferInfos,
8257 const VkBufferView* pBufferViews)
8258{
8259 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08008260 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008261 {
Yilong Li71c43c52021-02-10 02:50:43 -08008262 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateSizedGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008263 }
8264 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008265 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008266 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008267}
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008268static void entry_vkBeginCommandBufferAsyncGOOGLE(
8269 VkCommandBuffer commandBuffer,
8270 const VkCommandBufferBeginInfo* pBeginInfo)
8271{
8272 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008273 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008274 vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008275}
8276static void entry_vkEndCommandBufferAsyncGOOGLE(
8277 VkCommandBuffer commandBuffer)
8278{
8279 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008280 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008281 vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008282}
8283static void entry_vkResetCommandBufferAsyncGOOGLE(
8284 VkCommandBuffer commandBuffer,
8285 VkCommandBufferResetFlags flags)
8286{
8287 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008288 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008289 vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008290}
Lingfeng Yang39a276e2019-06-17 13:27:22 -07008291static void entry_vkCommandBufferHostSyncGOOGLE(
8292 VkCommandBuffer commandBuffer,
8293 uint32_t needHostSync,
8294 uint32_t sequenceNumber)
8295{
8296 AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008297 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008298 vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber, true /* do lock */);
Lingfeng Yang39a276e2019-06-17 13:27:22 -07008299}
Lingfeng Yang87f11962019-06-27 16:28:53 +00008300static VkResult entry_vkCreateImageWithRequirementsGOOGLE(
8301 VkDevice device,
8302 const VkImageCreateInfo* pCreateInfo,
8303 const VkAllocationCallbacks* pAllocator,
8304 VkImage* pImage,
8305 VkMemoryRequirements* pMemoryRequirements)
8306{
8307 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008308 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang87f11962019-06-27 16:28:53 +00008309 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008310 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
Lingfeng Yang87f11962019-06-27 16:28:53 +00008311 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
8312}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008313static VkResult dynCheck_entry_vkCreateImageWithRequirementsGOOGLE(
8314 VkDevice device,
8315 const VkImageCreateInfo* pCreateInfo,
8316 const VkAllocationCallbacks* pAllocator,
8317 VkImage* pImage,
8318 VkMemoryRequirements* pMemoryRequirements)
8319{
8320 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08008321 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008322 {
Yilong Li71c43c52021-02-10 02:50:43 -08008323 sOnInvalidDynamicallyCheckedCall("vkCreateImageWithRequirementsGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008324 }
8325 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008326 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008327 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008328 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008329 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
8330}
Lingfeng Yang87f11962019-06-27 16:28:53 +00008331static VkResult entry_vkCreateBufferWithRequirementsGOOGLE(
8332 VkDevice device,
8333 const VkBufferCreateInfo* pCreateInfo,
8334 const VkAllocationCallbacks* pAllocator,
8335 VkBuffer* pBuffer,
8336 VkMemoryRequirements* pMemoryRequirements)
8337{
8338 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008339 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang87f11962019-06-27 16:28:53 +00008340 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008341 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
Lingfeng Yang87f11962019-06-27 16:28:53 +00008342 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
8343}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008344static VkResult dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE(
8345 VkDevice device,
8346 const VkBufferCreateInfo* pCreateInfo,
8347 const VkAllocationCallbacks* pAllocator,
8348 VkBuffer* pBuffer,
8349 VkMemoryRequirements* pMemoryRequirements)
8350{
8351 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08008352 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008353 {
Yilong Li71c43c52021-02-10 02:50:43 -08008354 sOnInvalidDynamicallyCheckedCall("vkCreateBufferWithRequirementsGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008355 }
8356 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008357 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008358 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008359 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008360 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
8361}
Lingfeng Yang4c542412020-02-04 18:18:32 -08008362static VkResult entry_vkGetMemoryHostAddressInfoGOOGLE(
8363 VkDevice device,
8364 VkDeviceMemory memory,
8365 uint64_t* pAddress,
8366 uint64_t* pSize,
8367 uint64_t* pHostmemId)
8368{
8369 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008370 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4c542412020-02-04 18:18:32 -08008371 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008372 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
Lingfeng Yang4c542412020-02-04 18:18:32 -08008373 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
8374}
8375static VkResult dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE(
8376 VkDevice device,
8377 VkDeviceMemory memory,
8378 uint64_t* pAddress,
8379 uint64_t* pSize,
8380 uint64_t* pHostmemId)
8381{
8382 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08008383 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang4c542412020-02-04 18:18:32 -08008384 {
Yilong Li71c43c52021-02-10 02:50:43 -08008385 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostAddressInfoGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang4c542412020-02-04 18:18:32 -08008386 }
8387 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008388 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4c542412020-02-04 18:18:32 -08008389 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008390 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
Lingfeng Yang4c542412020-02-04 18:18:32 -08008391 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
8392}
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07008393static VkResult entry_vkFreeMemorySyncGOOGLE(
8394 VkDevice device,
8395 VkDeviceMemory memory,
8396 const VkAllocationCallbacks* pAllocator)
8397{
8398 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008399 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07008400 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008401 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07008402 return vkFreeMemorySyncGOOGLE_VkResult_return;
8403}
8404static VkResult dynCheck_entry_vkFreeMemorySyncGOOGLE(
8405 VkDevice device,
8406 VkDeviceMemory memory,
8407 const VkAllocationCallbacks* pAllocator)
8408{
8409 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08008410 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07008411 {
Yilong Li71c43c52021-02-10 02:50:43 -08008412 sOnInvalidDynamicallyCheckedCall("vkFreeMemorySyncGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07008413 }
8414 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008415 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07008416 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008417 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07008418 return vkFreeMemorySyncGOOGLE_VkResult_return;
8419}
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07008420static void entry_vkQueueHostSyncGOOGLE(
8421 VkQueue queue,
8422 uint32_t needHostSync,
8423 uint32_t sequenceNumber)
8424{
8425 AEMU_SCOPED_TRACE("vkQueueHostSyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008426 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008427 vkEnc->vkQueueHostSyncGOOGLE(queue, needHostSync, sequenceNumber, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07008428}
8429static void entry_vkQueueSubmitAsyncGOOGLE(
8430 VkQueue queue,
8431 uint32_t submitCount,
8432 const VkSubmitInfo* pSubmits,
8433 VkFence fence)
8434{
8435 AEMU_SCOPED_TRACE("vkQueueSubmitAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008436 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008437 vkEnc->vkQueueSubmitAsyncGOOGLE(queue, submitCount, pSubmits, fence, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07008438}
8439static void entry_vkQueueWaitIdleAsyncGOOGLE(
8440 VkQueue queue)
8441{
8442 AEMU_SCOPED_TRACE("vkQueueWaitIdleAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008443 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008444 vkEnc->vkQueueWaitIdleAsyncGOOGLE(queue, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07008445}
8446static void entry_vkQueueBindSparseAsyncGOOGLE(
8447 VkQueue queue,
8448 uint32_t bindInfoCount,
8449 const VkBindSparseInfo* pBindInfo,
8450 VkFence fence)
8451{
8452 AEMU_SCOPED_TRACE("vkQueueBindSparseAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008453 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008454 vkEnc->vkQueueBindSparseAsyncGOOGLE(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07008455}
Yilong Lia48b0102020-09-15 15:08:28 -07008456static void entry_vkGetLinearImageLayoutGOOGLE(
8457 VkDevice device,
8458 VkFormat format,
8459 VkDeviceSize* pOffset,
8460 VkDeviceSize* pRowPitchAlignment)
8461{
8462 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008463 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008464 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
Yilong Lia48b0102020-09-15 15:08:28 -07008465}
8466static void dynCheck_entry_vkGetLinearImageLayoutGOOGLE(
8467 VkDevice device,
8468 VkFormat format,
8469 VkDeviceSize* pOffset,
8470 VkDeviceSize* pRowPitchAlignment)
8471{
8472 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08008473 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Yilong Lia48b0102020-09-15 15:08:28 -07008474 {
Yilong Li71c43c52021-02-10 02:50:43 -08008475 sOnInvalidDynamicallyCheckedCall("vkGetLinearImageLayoutGOOGLE", "VK_GOOGLE_gfxstream");
Yilong Lia48b0102020-09-15 15:08:28 -07008476 }
8477 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008478 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008479 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
Yilong Lia48b0102020-09-15 15:08:28 -07008480}
Lingfeng Yangded34672021-01-22 23:17:47 -08008481static void entry_vkQueueFlushCommandsGOOGLE(
8482 VkQueue queue,
8483 VkCommandBuffer commandBuffer,
8484 VkDeviceSize dataSize,
8485 const void* pData)
8486{
8487 AEMU_SCOPED_TRACE("vkQueueFlushCommandsGOOGLE");
8488 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
8489 vkEnc->vkQueueFlushCommandsGOOGLE(queue, commandBuffer, dataSize, pData, true /* do lock */);
8490}
Lingfeng Yang55676e02021-02-08 08:39:45 -08008491static void entry_vkQueueCommitDescriptorSetUpdatesGOOGLE(
8492 VkQueue queue,
8493 uint32_t descriptorPoolCount,
8494 const VkDescriptorPool* pDescriptorPools,
8495 uint32_t descriptorSetCount,
8496 const VkDescriptorSetLayout* pSetLayouts,
8497 const uint64_t* pDescriptorSetPoolIds,
8498 const uint32_t* pDescriptorSetWhichPool,
8499 const uint32_t* pDescriptorSetPendingAllocation,
8500 const uint32_t* pDescriptorWriteStartingIndices,
8501 uint32_t pendingDescriptorWriteCount,
8502 const VkWriteDescriptorSet* pPendingDescriptorWrites)
8503{
8504 AEMU_SCOPED_TRACE("vkQueueCommitDescriptorSetUpdatesGOOGLE");
8505 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
8506 vkEnc->vkQueueCommitDescriptorSetUpdatesGOOGLE(queue, descriptorPoolCount, pDescriptorPools, descriptorSetCount, pSetLayouts, pDescriptorSetPoolIds, pDescriptorSetWhichPool, pDescriptorSetPendingAllocation, pDescriptorWriteStartingIndices, pendingDescriptorWriteCount, pPendingDescriptorWrites, true /* do lock */);
8507}
8508static void entry_vkCollectDescriptorPoolIdsGOOGLE(
8509 VkDevice device,
8510 VkDescriptorPool descriptorPool,
8511 uint32_t* pPoolIdCount,
8512 uint64_t* pPoolIds)
8513{
8514 AEMU_SCOPED_TRACE("vkCollectDescriptorPoolIdsGOOGLE");
8515 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8516 vkEnc->vkCollectDescriptorPoolIdsGOOGLE(device, descriptorPool, pPoolIdCount, pPoolIds, true /* do lock */);
8517}
8518static void dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE(
8519 VkDevice device,
8520 VkDescriptorPool descriptorPool,
8521 uint32_t* pPoolIdCount,
8522 uint64_t* pPoolIds)
8523{
8524 auto resources = ResourceTracker::get();
8525 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
8526 {
8527 sOnInvalidDynamicallyCheckedCall("vkCollectDescriptorPoolIdsGOOGLE", "VK_GOOGLE_gfxstream");
8528 }
8529 AEMU_SCOPED_TRACE("vkCollectDescriptorPoolIdsGOOGLE");
8530 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8531 vkEnc->vkCollectDescriptorPoolIdsGOOGLE(device, descriptorPool, pPoolIdCount, pPoolIds, true /* do lock */);
8532}
Lingfeng Yang5678e1e2021-07-15 12:28:05 -07008533static void entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(
8534 VkQueue queue,
8535 uint32_t waitSemaphoreCount,
8536 const VkSemaphore* pWaitSemaphores,
8537 VkImage image)
8538{
8539 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROIDAsyncGOOGLE");
8540 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
8541 vkEnc->vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(queue, waitSemaphoreCount, pWaitSemaphores, image, true /* do lock */);
8542}
Lingfeng Yangded34672021-01-22 23:17:47 -08008543#endif
Yilong Li353409a2022-01-04 02:37:56 -08008544#ifdef VK_EXT_global_priority_query
8545#endif
8546#ifdef VK_EXT_multi_draw
8547static void entry_vkCmdDrawMultiEXT(
8548 VkCommandBuffer commandBuffer,
8549 uint32_t drawCount,
8550 const VkMultiDrawInfoEXT* pVertexInfo,
8551 uint32_t instanceCount,
8552 uint32_t firstInstance,
8553 uint32_t stride)
8554{
8555 AEMU_SCOPED_TRACE("vkCmdDrawMultiEXT");
8556 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8557 vkEnc->vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, true /* do lock */);
8558}
8559static void entry_vkCmdDrawMultiIndexedEXT(
8560 VkCommandBuffer commandBuffer,
8561 uint32_t drawCount,
8562 const VkMultiDrawIndexedInfoEXT* pIndexInfo,
8563 uint32_t instanceCount,
8564 uint32_t firstInstance,
8565 uint32_t stride,
8566 const int32_t* pVertexOffset)
8567{
8568 AEMU_SCOPED_TRACE("vkCmdDrawMultiIndexedEXT");
8569 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8570 vkEnc->vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, true /* do lock */);
8571}
8572#endif
8573#ifdef VK_EXT_load_store_op_none
8574#endif
8575#ifdef VK_EXT_border_color_swizzle
8576#endif
8577#ifdef VK_EXT_pageable_device_local_memory
8578static void entry_vkSetDeviceMemoryPriorityEXT(
8579 VkDevice device,
8580 VkDeviceMemory memory,
8581 float priority)
8582{
8583 AEMU_SCOPED_TRACE("vkSetDeviceMemoryPriorityEXT");
8584 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8585 vkEnc->vkSetDeviceMemoryPriorityEXT(device, memory, priority, true /* do lock */);
8586}
8587static void dynCheck_entry_vkSetDeviceMemoryPriorityEXT(
8588 VkDevice device,
8589 VkDeviceMemory memory,
8590 float priority)
8591{
8592 auto resources = ResourceTracker::get();
8593 if (!resources->hasDeviceExtension(device, "VK_EXT_pageable_device_local_memory"))
8594 {
8595 sOnInvalidDynamicallyCheckedCall("vkSetDeviceMemoryPriorityEXT", "VK_EXT_pageable_device_local_memory");
8596 }
8597 AEMU_SCOPED_TRACE("vkSetDeviceMemoryPriorityEXT");
8598 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8599 vkEnc->vkSetDeviceMemoryPriorityEXT(device, memory, priority, true /* do lock */);
8600}
8601#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008602#ifdef VK_KHR_acceleration_structure
8603static VkResult entry_vkCreateAccelerationStructureKHR(
8604 VkDevice device,
8605 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
8606 const VkAllocationCallbacks* pAllocator,
8607 VkAccelerationStructureKHR* pAccelerationStructure)
8608{
8609 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
8610 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8611 VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
8612 vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
8613 return vkCreateAccelerationStructureKHR_VkResult_return;
8614}
8615static VkResult dynCheck_entry_vkCreateAccelerationStructureKHR(
8616 VkDevice device,
8617 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
8618 const VkAllocationCallbacks* pAllocator,
8619 VkAccelerationStructureKHR* pAccelerationStructure)
8620{
8621 auto resources = ResourceTracker::get();
8622 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
8623 {
8624 sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureKHR", "VK_KHR_acceleration_structure");
8625 }
8626 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
8627 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8628 VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
8629 vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
8630 return vkCreateAccelerationStructureKHR_VkResult_return;
8631}
8632static void entry_vkDestroyAccelerationStructureKHR(
8633 VkDevice device,
8634 VkAccelerationStructureKHR accelerationStructure,
8635 const VkAllocationCallbacks* pAllocator)
8636{
8637 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
8638 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8639 vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
8640}
8641static void dynCheck_entry_vkDestroyAccelerationStructureKHR(
8642 VkDevice device,
8643 VkAccelerationStructureKHR accelerationStructure,
8644 const VkAllocationCallbacks* pAllocator)
8645{
8646 auto resources = ResourceTracker::get();
8647 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
8648 {
8649 sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
8650 }
8651 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
8652 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8653 vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
8654}
8655static void entry_vkCmdBuildAccelerationStructuresKHR(
8656 VkCommandBuffer commandBuffer,
8657 uint32_t infoCount,
8658 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
8659 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
8660{
8661 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresKHR");
8662 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8663 vkEnc->vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
8664}
8665static void entry_vkCmdBuildAccelerationStructuresIndirectKHR(
8666 VkCommandBuffer commandBuffer,
8667 uint32_t infoCount,
8668 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
8669 const VkDeviceAddress* pIndirectDeviceAddresses,
8670 const uint32_t* pIndirectStrides,
8671 const uint32_t* const* ppMaxPrimitiveCounts)
8672{
8673 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresIndirectKHR");
8674 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8675 vkEnc->vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, true /* do lock */);
8676}
8677static VkResult entry_vkBuildAccelerationStructuresKHR(
8678 VkDevice device,
8679 VkDeferredOperationKHR deferredOperation,
8680 uint32_t infoCount,
8681 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
8682 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
8683{
8684 AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
8685 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8686 VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
8687 vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
8688 return vkBuildAccelerationStructuresKHR_VkResult_return;
8689}
8690static VkResult dynCheck_entry_vkBuildAccelerationStructuresKHR(
8691 VkDevice device,
8692 VkDeferredOperationKHR deferredOperation,
8693 uint32_t infoCount,
8694 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
8695 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
8696{
8697 auto resources = ResourceTracker::get();
8698 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
8699 {
8700 sOnInvalidDynamicallyCheckedCall("vkBuildAccelerationStructuresKHR", "VK_KHR_acceleration_structure");
8701 }
8702 AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
8703 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8704 VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
8705 vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
8706 return vkBuildAccelerationStructuresKHR_VkResult_return;
8707}
8708static VkResult entry_vkCopyAccelerationStructureKHR(
8709 VkDevice device,
8710 VkDeferredOperationKHR deferredOperation,
8711 const VkCopyAccelerationStructureInfoKHR* pInfo)
8712{
8713 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
8714 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8715 VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
8716 vkCopyAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
8717 return vkCopyAccelerationStructureKHR_VkResult_return;
8718}
8719static VkResult dynCheck_entry_vkCopyAccelerationStructureKHR(
8720 VkDevice device,
8721 VkDeferredOperationKHR deferredOperation,
8722 const VkCopyAccelerationStructureInfoKHR* pInfo)
8723{
8724 auto resources = ResourceTracker::get();
8725 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
8726 {
8727 sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
8728 }
8729 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
8730 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8731 VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
8732 vkCopyAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
8733 return vkCopyAccelerationStructureKHR_VkResult_return;
8734}
8735static VkResult entry_vkCopyAccelerationStructureToMemoryKHR(
8736 VkDevice device,
8737 VkDeferredOperationKHR deferredOperation,
8738 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
8739{
8740 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
8741 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8742 VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
8743 vkCopyAccelerationStructureToMemoryKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, true /* do lock */);
8744 return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
8745}
8746static VkResult dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR(
8747 VkDevice device,
8748 VkDeferredOperationKHR deferredOperation,
8749 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
8750{
8751 auto resources = ResourceTracker::get();
8752 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
8753 {
8754 sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureToMemoryKHR", "VK_KHR_acceleration_structure");
8755 }
8756 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
8757 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8758 VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
8759 vkCopyAccelerationStructureToMemoryKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, true /* do lock */);
8760 return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
8761}
8762static VkResult entry_vkCopyMemoryToAccelerationStructureKHR(
8763 VkDevice device,
8764 VkDeferredOperationKHR deferredOperation,
8765 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
8766{
8767 AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
8768 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8769 VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
8770 vkCopyMemoryToAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
8771 return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
8772}
8773static VkResult dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR(
8774 VkDevice device,
8775 VkDeferredOperationKHR deferredOperation,
8776 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
8777{
8778 auto resources = ResourceTracker::get();
8779 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
8780 {
8781 sOnInvalidDynamicallyCheckedCall("vkCopyMemoryToAccelerationStructureKHR", "VK_KHR_acceleration_structure");
8782 }
8783 AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
8784 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8785 VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
8786 vkCopyMemoryToAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
8787 return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
8788}
8789static VkResult entry_vkWriteAccelerationStructuresPropertiesKHR(
8790 VkDevice device,
8791 uint32_t accelerationStructureCount,
8792 const VkAccelerationStructureKHR* pAccelerationStructures,
8793 VkQueryType queryType,
8794 size_t dataSize,
8795 void* pData,
8796 size_t stride)
8797{
8798 AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
8799 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8800 VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
8801 vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
8802 return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
8803}
8804static VkResult dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR(
8805 VkDevice device,
8806 uint32_t accelerationStructureCount,
8807 const VkAccelerationStructureKHR* pAccelerationStructures,
8808 VkQueryType queryType,
8809 size_t dataSize,
8810 void* pData,
8811 size_t stride)
8812{
8813 auto resources = ResourceTracker::get();
8814 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
8815 {
8816 sOnInvalidDynamicallyCheckedCall("vkWriteAccelerationStructuresPropertiesKHR", "VK_KHR_acceleration_structure");
8817 }
8818 AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
8819 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8820 VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
8821 vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
8822 return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
8823}
8824static void entry_vkCmdCopyAccelerationStructureKHR(
8825 VkCommandBuffer commandBuffer,
8826 const VkCopyAccelerationStructureInfoKHR* pInfo)
8827{
8828 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureKHR");
8829 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8830 vkEnc->vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
8831}
8832static void entry_vkCmdCopyAccelerationStructureToMemoryKHR(
8833 VkCommandBuffer commandBuffer,
8834 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
8835{
8836 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureToMemoryKHR");
8837 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8838 vkEnc->vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, true /* do lock */);
8839}
8840static void entry_vkCmdCopyMemoryToAccelerationStructureKHR(
8841 VkCommandBuffer commandBuffer,
8842 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
8843{
8844 AEMU_SCOPED_TRACE("vkCmdCopyMemoryToAccelerationStructureKHR");
8845 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8846 vkEnc->vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
8847}
8848static VkDeviceAddress entry_vkGetAccelerationStructureDeviceAddressKHR(
8849 VkDevice device,
8850 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
8851{
8852 AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
8853 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8854 VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
8855 vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
8856 return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
8857}
8858static VkDeviceAddress dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR(
8859 VkDevice device,
8860 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
8861{
8862 auto resources = ResourceTracker::get();
8863 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
8864 {
8865 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureDeviceAddressKHR", "VK_KHR_acceleration_structure");
8866 }
8867 AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
8868 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8869 VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
8870 vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
8871 return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
8872}
8873static void entry_vkCmdWriteAccelerationStructuresPropertiesKHR(
8874 VkCommandBuffer commandBuffer,
8875 uint32_t accelerationStructureCount,
8876 const VkAccelerationStructureKHR* pAccelerationStructures,
8877 VkQueryType queryType,
8878 VkQueryPool queryPool,
8879 uint32_t firstQuery)
8880{
8881 AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesKHR");
8882 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8883 vkEnc->vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
8884}
8885static void entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
8886 VkDevice device,
8887 const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
8888 VkAccelerationStructureCompatibilityKHR* pCompatibility)
8889{
8890 AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
8891 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8892 vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
8893}
8894static void dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
8895 VkDevice device,
8896 const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
8897 VkAccelerationStructureCompatibilityKHR* pCompatibility)
8898{
8899 auto resources = ResourceTracker::get();
8900 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
8901 {
8902 sOnInvalidDynamicallyCheckedCall("vkGetDeviceAccelerationStructureCompatibilityKHR", "VK_KHR_acceleration_structure");
8903 }
8904 AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
8905 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8906 vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
8907}
8908static void entry_vkGetAccelerationStructureBuildSizesKHR(
8909 VkDevice device,
8910 VkAccelerationStructureBuildTypeKHR buildType,
8911 const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
8912 const uint32_t* pMaxPrimitiveCounts,
8913 VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
8914{
8915 AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
8916 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8917 vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
8918}
8919static void dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR(
8920 VkDevice device,
8921 VkAccelerationStructureBuildTypeKHR buildType,
8922 const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
8923 const uint32_t* pMaxPrimitiveCounts,
8924 VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
8925{
8926 auto resources = ResourceTracker::get();
8927 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
8928 {
8929 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureBuildSizesKHR", "VK_KHR_acceleration_structure");
8930 }
8931 AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
8932 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8933 vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
8934}
8935#endif
8936#ifdef VK_KHR_ray_tracing_pipeline
8937static void entry_vkCmdTraceRaysKHR(
8938 VkCommandBuffer commandBuffer,
8939 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
8940 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
8941 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
8942 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
8943 uint32_t width,
8944 uint32_t height,
8945 uint32_t depth)
8946{
8947 AEMU_SCOPED_TRACE("vkCmdTraceRaysKHR");
8948 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8949 vkEnc->vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, true /* do lock */);
8950}
8951static VkResult entry_vkCreateRayTracingPipelinesKHR(
8952 VkDevice device,
8953 VkDeferredOperationKHR deferredOperation,
8954 VkPipelineCache pipelineCache,
8955 uint32_t createInfoCount,
8956 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
8957 const VkAllocationCallbacks* pAllocator,
8958 VkPipeline* pPipelines)
8959{
8960 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
8961 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8962 VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
8963 vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
8964 return vkCreateRayTracingPipelinesKHR_VkResult_return;
8965}
8966static VkResult dynCheck_entry_vkCreateRayTracingPipelinesKHR(
8967 VkDevice device,
8968 VkDeferredOperationKHR deferredOperation,
8969 VkPipelineCache pipelineCache,
8970 uint32_t createInfoCount,
8971 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
8972 const VkAllocationCallbacks* pAllocator,
8973 VkPipeline* pPipelines)
8974{
8975 auto resources = ResourceTracker::get();
8976 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
8977 {
8978 sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesKHR", "VK_KHR_ray_tracing_pipeline");
8979 }
8980 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
8981 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8982 VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
8983 vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
8984 return vkCreateRayTracingPipelinesKHR_VkResult_return;
8985}
8986static VkResult entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
8987 VkDevice device,
8988 VkPipeline pipeline,
8989 uint32_t firstGroup,
8990 uint32_t groupCount,
8991 size_t dataSize,
8992 void* pData)
8993{
8994 AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
8995 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8996 VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
8997 vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
8998 return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
8999}
9000static VkResult dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
9001 VkDevice device,
9002 VkPipeline pipeline,
9003 uint32_t firstGroup,
9004 uint32_t groupCount,
9005 size_t dataSize,
9006 void* pData)
9007{
9008 auto resources = ResourceTracker::get();
9009 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
9010 {
9011 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR", "VK_KHR_ray_tracing_pipeline");
9012 }
9013 AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
9014 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9015 VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
9016 vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
9017 return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
9018}
9019static void entry_vkCmdTraceRaysIndirectKHR(
9020 VkCommandBuffer commandBuffer,
9021 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
9022 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
9023 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
9024 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
9025 VkDeviceAddress indirectDeviceAddress)
9026{
9027 AEMU_SCOPED_TRACE("vkCmdTraceRaysIndirectKHR");
9028 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9029 vkEnc->vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, true /* do lock */);
9030}
9031static VkDeviceSize entry_vkGetRayTracingShaderGroupStackSizeKHR(
9032 VkDevice device,
9033 VkPipeline pipeline,
9034 uint32_t group,
9035 VkShaderGroupShaderKHR groupShader)
9036{
9037 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
9038 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9039 VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
9040 vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
9041 return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
9042}
9043static VkDeviceSize dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR(
9044 VkDevice device,
9045 VkPipeline pipeline,
9046 uint32_t group,
9047 VkShaderGroupShaderKHR groupShader)
9048{
9049 auto resources = ResourceTracker::get();
9050 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
9051 {
9052 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupStackSizeKHR", "VK_KHR_ray_tracing_pipeline");
9053 }
9054 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
9055 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9056 VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
9057 vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
9058 return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
9059}
9060static void entry_vkCmdSetRayTracingPipelineStackSizeKHR(
9061 VkCommandBuffer commandBuffer,
9062 uint32_t pipelineStackSize)
9063{
9064 AEMU_SCOPED_TRACE("vkCmdSetRayTracingPipelineStackSizeKHR");
9065 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9066 vkEnc->vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, true /* do lock */);
9067}
9068#endif
9069#ifdef VK_KHR_ray_query
9070#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009071void* goldfish_vulkan_get_proc_address(const char* name){
9072#ifdef VK_VERSION_1_0
9073 if (!strcmp(name, "vkCreateInstance"))
9074 {
9075 return (void*)entry_vkCreateInstance;
9076 }
9077 if (!strcmp(name, "vkDestroyInstance"))
9078 {
9079 return (void*)entry_vkDestroyInstance;
9080 }
9081 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
9082 {
9083 return (void*)entry_vkEnumeratePhysicalDevices;
9084 }
9085 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
9086 {
9087 return (void*)entry_vkGetPhysicalDeviceFeatures;
9088 }
9089 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
9090 {
9091 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
9092 }
9093 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
9094 {
9095 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
9096 }
9097 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
9098 {
9099 return (void*)entry_vkGetPhysicalDeviceProperties;
9100 }
9101 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
9102 {
9103 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
9104 }
9105 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
9106 {
9107 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
9108 }
9109 if (!strcmp(name, "vkGetInstanceProcAddr"))
9110 {
9111 return (void*)entry_vkGetInstanceProcAddr;
9112 }
9113 if (!strcmp(name, "vkGetDeviceProcAddr"))
9114 {
9115 return (void*)entry_vkGetDeviceProcAddr;
9116 }
9117 if (!strcmp(name, "vkCreateDevice"))
9118 {
9119 return (void*)entry_vkCreateDevice;
9120 }
9121 if (!strcmp(name, "vkDestroyDevice"))
9122 {
9123 return (void*)entry_vkDestroyDevice;
9124 }
9125 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
9126 {
9127 return (void*)entry_vkEnumerateInstanceExtensionProperties;
9128 }
9129 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
9130 {
9131 return (void*)entry_vkEnumerateDeviceExtensionProperties;
9132 }
9133 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
9134 {
9135 return (void*)entry_vkEnumerateInstanceLayerProperties;
9136 }
9137 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
9138 {
9139 return (void*)entry_vkEnumerateDeviceLayerProperties;
9140 }
9141 if (!strcmp(name, "vkGetDeviceQueue"))
9142 {
9143 return (void*)entry_vkGetDeviceQueue;
9144 }
9145 if (!strcmp(name, "vkQueueSubmit"))
9146 {
9147 return (void*)entry_vkQueueSubmit;
9148 }
9149 if (!strcmp(name, "vkQueueWaitIdle"))
9150 {
9151 return (void*)entry_vkQueueWaitIdle;
9152 }
9153 if (!strcmp(name, "vkDeviceWaitIdle"))
9154 {
9155 return (void*)entry_vkDeviceWaitIdle;
9156 }
9157 if (!strcmp(name, "vkAllocateMemory"))
9158 {
9159 return (void*)entry_vkAllocateMemory;
9160 }
9161 if (!strcmp(name, "vkFreeMemory"))
9162 {
9163 return (void*)entry_vkFreeMemory;
9164 }
9165 if (!strcmp(name, "vkMapMemory"))
9166 {
9167 return (void*)entry_vkMapMemory;
9168 }
9169 if (!strcmp(name, "vkUnmapMemory"))
9170 {
9171 return (void*)entry_vkUnmapMemory;
9172 }
9173 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
9174 {
9175 return (void*)entry_vkFlushMappedMemoryRanges;
9176 }
9177 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
9178 {
9179 return (void*)entry_vkInvalidateMappedMemoryRanges;
9180 }
9181 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
9182 {
9183 return (void*)entry_vkGetDeviceMemoryCommitment;
9184 }
9185 if (!strcmp(name, "vkBindBufferMemory"))
9186 {
9187 return (void*)entry_vkBindBufferMemory;
9188 }
9189 if (!strcmp(name, "vkBindImageMemory"))
9190 {
9191 return (void*)entry_vkBindImageMemory;
9192 }
9193 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
9194 {
9195 return (void*)entry_vkGetBufferMemoryRequirements;
9196 }
9197 if (!strcmp(name, "vkGetImageMemoryRequirements"))
9198 {
9199 return (void*)entry_vkGetImageMemoryRequirements;
9200 }
9201 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
9202 {
9203 return (void*)entry_vkGetImageSparseMemoryRequirements;
9204 }
9205 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
9206 {
9207 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
9208 }
9209 if (!strcmp(name, "vkQueueBindSparse"))
9210 {
9211 return (void*)entry_vkQueueBindSparse;
9212 }
9213 if (!strcmp(name, "vkCreateFence"))
9214 {
9215 return (void*)entry_vkCreateFence;
9216 }
9217 if (!strcmp(name, "vkDestroyFence"))
9218 {
9219 return (void*)entry_vkDestroyFence;
9220 }
9221 if (!strcmp(name, "vkResetFences"))
9222 {
9223 return (void*)entry_vkResetFences;
9224 }
9225 if (!strcmp(name, "vkGetFenceStatus"))
9226 {
9227 return (void*)entry_vkGetFenceStatus;
9228 }
9229 if (!strcmp(name, "vkWaitForFences"))
9230 {
9231 return (void*)entry_vkWaitForFences;
9232 }
9233 if (!strcmp(name, "vkCreateSemaphore"))
9234 {
9235 return (void*)entry_vkCreateSemaphore;
9236 }
9237 if (!strcmp(name, "vkDestroySemaphore"))
9238 {
9239 return (void*)entry_vkDestroySemaphore;
9240 }
9241 if (!strcmp(name, "vkCreateEvent"))
9242 {
9243 return (void*)entry_vkCreateEvent;
9244 }
9245 if (!strcmp(name, "vkDestroyEvent"))
9246 {
9247 return (void*)entry_vkDestroyEvent;
9248 }
9249 if (!strcmp(name, "vkGetEventStatus"))
9250 {
9251 return (void*)entry_vkGetEventStatus;
9252 }
9253 if (!strcmp(name, "vkSetEvent"))
9254 {
9255 return (void*)entry_vkSetEvent;
9256 }
9257 if (!strcmp(name, "vkResetEvent"))
9258 {
9259 return (void*)entry_vkResetEvent;
9260 }
9261 if (!strcmp(name, "vkCreateQueryPool"))
9262 {
9263 return (void*)entry_vkCreateQueryPool;
9264 }
9265 if (!strcmp(name, "vkDestroyQueryPool"))
9266 {
9267 return (void*)entry_vkDestroyQueryPool;
9268 }
9269 if (!strcmp(name, "vkGetQueryPoolResults"))
9270 {
9271 return (void*)entry_vkGetQueryPoolResults;
9272 }
9273 if (!strcmp(name, "vkCreateBuffer"))
9274 {
9275 return (void*)entry_vkCreateBuffer;
9276 }
9277 if (!strcmp(name, "vkDestroyBuffer"))
9278 {
9279 return (void*)entry_vkDestroyBuffer;
9280 }
9281 if (!strcmp(name, "vkCreateBufferView"))
9282 {
9283 return (void*)entry_vkCreateBufferView;
9284 }
9285 if (!strcmp(name, "vkDestroyBufferView"))
9286 {
9287 return (void*)entry_vkDestroyBufferView;
9288 }
9289 if (!strcmp(name, "vkCreateImage"))
9290 {
9291 return (void*)entry_vkCreateImage;
9292 }
9293 if (!strcmp(name, "vkDestroyImage"))
9294 {
9295 return (void*)entry_vkDestroyImage;
9296 }
9297 if (!strcmp(name, "vkGetImageSubresourceLayout"))
9298 {
9299 return (void*)entry_vkGetImageSubresourceLayout;
9300 }
9301 if (!strcmp(name, "vkCreateImageView"))
9302 {
9303 return (void*)entry_vkCreateImageView;
9304 }
9305 if (!strcmp(name, "vkDestroyImageView"))
9306 {
9307 return (void*)entry_vkDestroyImageView;
9308 }
9309 if (!strcmp(name, "vkCreateShaderModule"))
9310 {
9311 return (void*)entry_vkCreateShaderModule;
9312 }
9313 if (!strcmp(name, "vkDestroyShaderModule"))
9314 {
9315 return (void*)entry_vkDestroyShaderModule;
9316 }
9317 if (!strcmp(name, "vkCreatePipelineCache"))
9318 {
9319 return (void*)entry_vkCreatePipelineCache;
9320 }
9321 if (!strcmp(name, "vkDestroyPipelineCache"))
9322 {
9323 return (void*)entry_vkDestroyPipelineCache;
9324 }
9325 if (!strcmp(name, "vkGetPipelineCacheData"))
9326 {
9327 return (void*)entry_vkGetPipelineCacheData;
9328 }
9329 if (!strcmp(name, "vkMergePipelineCaches"))
9330 {
9331 return (void*)entry_vkMergePipelineCaches;
9332 }
9333 if (!strcmp(name, "vkCreateGraphicsPipelines"))
9334 {
9335 return (void*)entry_vkCreateGraphicsPipelines;
9336 }
9337 if (!strcmp(name, "vkCreateComputePipelines"))
9338 {
9339 return (void*)entry_vkCreateComputePipelines;
9340 }
9341 if (!strcmp(name, "vkDestroyPipeline"))
9342 {
9343 return (void*)entry_vkDestroyPipeline;
9344 }
9345 if (!strcmp(name, "vkCreatePipelineLayout"))
9346 {
9347 return (void*)entry_vkCreatePipelineLayout;
9348 }
9349 if (!strcmp(name, "vkDestroyPipelineLayout"))
9350 {
9351 return (void*)entry_vkDestroyPipelineLayout;
9352 }
9353 if (!strcmp(name, "vkCreateSampler"))
9354 {
9355 return (void*)entry_vkCreateSampler;
9356 }
9357 if (!strcmp(name, "vkDestroySampler"))
9358 {
9359 return (void*)entry_vkDestroySampler;
9360 }
9361 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
9362 {
9363 return (void*)entry_vkCreateDescriptorSetLayout;
9364 }
9365 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
9366 {
9367 return (void*)entry_vkDestroyDescriptorSetLayout;
9368 }
9369 if (!strcmp(name, "vkCreateDescriptorPool"))
9370 {
9371 return (void*)entry_vkCreateDescriptorPool;
9372 }
9373 if (!strcmp(name, "vkDestroyDescriptorPool"))
9374 {
9375 return (void*)entry_vkDestroyDescriptorPool;
9376 }
9377 if (!strcmp(name, "vkResetDescriptorPool"))
9378 {
9379 return (void*)entry_vkResetDescriptorPool;
9380 }
9381 if (!strcmp(name, "vkAllocateDescriptorSets"))
9382 {
9383 return (void*)entry_vkAllocateDescriptorSets;
9384 }
9385 if (!strcmp(name, "vkFreeDescriptorSets"))
9386 {
9387 return (void*)entry_vkFreeDescriptorSets;
9388 }
9389 if (!strcmp(name, "vkUpdateDescriptorSets"))
9390 {
9391 return (void*)entry_vkUpdateDescriptorSets;
9392 }
9393 if (!strcmp(name, "vkCreateFramebuffer"))
9394 {
9395 return (void*)entry_vkCreateFramebuffer;
9396 }
9397 if (!strcmp(name, "vkDestroyFramebuffer"))
9398 {
9399 return (void*)entry_vkDestroyFramebuffer;
9400 }
9401 if (!strcmp(name, "vkCreateRenderPass"))
9402 {
9403 return (void*)entry_vkCreateRenderPass;
9404 }
9405 if (!strcmp(name, "vkDestroyRenderPass"))
9406 {
9407 return (void*)entry_vkDestroyRenderPass;
9408 }
9409 if (!strcmp(name, "vkGetRenderAreaGranularity"))
9410 {
9411 return (void*)entry_vkGetRenderAreaGranularity;
9412 }
9413 if (!strcmp(name, "vkCreateCommandPool"))
9414 {
9415 return (void*)entry_vkCreateCommandPool;
9416 }
9417 if (!strcmp(name, "vkDestroyCommandPool"))
9418 {
9419 return (void*)entry_vkDestroyCommandPool;
9420 }
9421 if (!strcmp(name, "vkResetCommandPool"))
9422 {
9423 return (void*)entry_vkResetCommandPool;
9424 }
9425 if (!strcmp(name, "vkAllocateCommandBuffers"))
9426 {
9427 return (void*)entry_vkAllocateCommandBuffers;
9428 }
9429 if (!strcmp(name, "vkFreeCommandBuffers"))
9430 {
9431 return (void*)entry_vkFreeCommandBuffers;
9432 }
9433 if (!strcmp(name, "vkBeginCommandBuffer"))
9434 {
9435 return (void*)entry_vkBeginCommandBuffer;
9436 }
9437 if (!strcmp(name, "vkEndCommandBuffer"))
9438 {
9439 return (void*)entry_vkEndCommandBuffer;
9440 }
9441 if (!strcmp(name, "vkResetCommandBuffer"))
9442 {
9443 return (void*)entry_vkResetCommandBuffer;
9444 }
9445 if (!strcmp(name, "vkCmdBindPipeline"))
9446 {
9447 return (void*)entry_vkCmdBindPipeline;
9448 }
9449 if (!strcmp(name, "vkCmdSetViewport"))
9450 {
9451 return (void*)entry_vkCmdSetViewport;
9452 }
9453 if (!strcmp(name, "vkCmdSetScissor"))
9454 {
9455 return (void*)entry_vkCmdSetScissor;
9456 }
9457 if (!strcmp(name, "vkCmdSetLineWidth"))
9458 {
9459 return (void*)entry_vkCmdSetLineWidth;
9460 }
9461 if (!strcmp(name, "vkCmdSetDepthBias"))
9462 {
9463 return (void*)entry_vkCmdSetDepthBias;
9464 }
9465 if (!strcmp(name, "vkCmdSetBlendConstants"))
9466 {
9467 return (void*)entry_vkCmdSetBlendConstants;
9468 }
9469 if (!strcmp(name, "vkCmdSetDepthBounds"))
9470 {
9471 return (void*)entry_vkCmdSetDepthBounds;
9472 }
9473 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
9474 {
9475 return (void*)entry_vkCmdSetStencilCompareMask;
9476 }
9477 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
9478 {
9479 return (void*)entry_vkCmdSetStencilWriteMask;
9480 }
9481 if (!strcmp(name, "vkCmdSetStencilReference"))
9482 {
9483 return (void*)entry_vkCmdSetStencilReference;
9484 }
9485 if (!strcmp(name, "vkCmdBindDescriptorSets"))
9486 {
9487 return (void*)entry_vkCmdBindDescriptorSets;
9488 }
9489 if (!strcmp(name, "vkCmdBindIndexBuffer"))
9490 {
9491 return (void*)entry_vkCmdBindIndexBuffer;
9492 }
9493 if (!strcmp(name, "vkCmdBindVertexBuffers"))
9494 {
9495 return (void*)entry_vkCmdBindVertexBuffers;
9496 }
9497 if (!strcmp(name, "vkCmdDraw"))
9498 {
9499 return (void*)entry_vkCmdDraw;
9500 }
9501 if (!strcmp(name, "vkCmdDrawIndexed"))
9502 {
9503 return (void*)entry_vkCmdDrawIndexed;
9504 }
9505 if (!strcmp(name, "vkCmdDrawIndirect"))
9506 {
9507 return (void*)entry_vkCmdDrawIndirect;
9508 }
9509 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
9510 {
9511 return (void*)entry_vkCmdDrawIndexedIndirect;
9512 }
9513 if (!strcmp(name, "vkCmdDispatch"))
9514 {
9515 return (void*)entry_vkCmdDispatch;
9516 }
9517 if (!strcmp(name, "vkCmdDispatchIndirect"))
9518 {
9519 return (void*)entry_vkCmdDispatchIndirect;
9520 }
9521 if (!strcmp(name, "vkCmdCopyBuffer"))
9522 {
9523 return (void*)entry_vkCmdCopyBuffer;
9524 }
9525 if (!strcmp(name, "vkCmdCopyImage"))
9526 {
9527 return (void*)entry_vkCmdCopyImage;
9528 }
9529 if (!strcmp(name, "vkCmdBlitImage"))
9530 {
9531 return (void*)entry_vkCmdBlitImage;
9532 }
9533 if (!strcmp(name, "vkCmdCopyBufferToImage"))
9534 {
9535 return (void*)entry_vkCmdCopyBufferToImage;
9536 }
9537 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
9538 {
9539 return (void*)entry_vkCmdCopyImageToBuffer;
9540 }
9541 if (!strcmp(name, "vkCmdUpdateBuffer"))
9542 {
9543 return (void*)entry_vkCmdUpdateBuffer;
9544 }
9545 if (!strcmp(name, "vkCmdFillBuffer"))
9546 {
9547 return (void*)entry_vkCmdFillBuffer;
9548 }
9549 if (!strcmp(name, "vkCmdClearColorImage"))
9550 {
9551 return (void*)entry_vkCmdClearColorImage;
9552 }
9553 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
9554 {
9555 return (void*)entry_vkCmdClearDepthStencilImage;
9556 }
9557 if (!strcmp(name, "vkCmdClearAttachments"))
9558 {
9559 return (void*)entry_vkCmdClearAttachments;
9560 }
9561 if (!strcmp(name, "vkCmdResolveImage"))
9562 {
9563 return (void*)entry_vkCmdResolveImage;
9564 }
9565 if (!strcmp(name, "vkCmdSetEvent"))
9566 {
9567 return (void*)entry_vkCmdSetEvent;
9568 }
9569 if (!strcmp(name, "vkCmdResetEvent"))
9570 {
9571 return (void*)entry_vkCmdResetEvent;
9572 }
9573 if (!strcmp(name, "vkCmdWaitEvents"))
9574 {
9575 return (void*)entry_vkCmdWaitEvents;
9576 }
9577 if (!strcmp(name, "vkCmdPipelineBarrier"))
9578 {
9579 return (void*)entry_vkCmdPipelineBarrier;
9580 }
9581 if (!strcmp(name, "vkCmdBeginQuery"))
9582 {
9583 return (void*)entry_vkCmdBeginQuery;
9584 }
9585 if (!strcmp(name, "vkCmdEndQuery"))
9586 {
9587 return (void*)entry_vkCmdEndQuery;
9588 }
9589 if (!strcmp(name, "vkCmdResetQueryPool"))
9590 {
9591 return (void*)entry_vkCmdResetQueryPool;
9592 }
9593 if (!strcmp(name, "vkCmdWriteTimestamp"))
9594 {
9595 return (void*)entry_vkCmdWriteTimestamp;
9596 }
9597 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
9598 {
9599 return (void*)entry_vkCmdCopyQueryPoolResults;
9600 }
9601 if (!strcmp(name, "vkCmdPushConstants"))
9602 {
9603 return (void*)entry_vkCmdPushConstants;
9604 }
9605 if (!strcmp(name, "vkCmdBeginRenderPass"))
9606 {
9607 return (void*)entry_vkCmdBeginRenderPass;
9608 }
9609 if (!strcmp(name, "vkCmdNextSubpass"))
9610 {
9611 return (void*)entry_vkCmdNextSubpass;
9612 }
9613 if (!strcmp(name, "vkCmdEndRenderPass"))
9614 {
9615 return (void*)entry_vkCmdEndRenderPass;
9616 }
9617 if (!strcmp(name, "vkCmdExecuteCommands"))
9618 {
9619 return (void*)entry_vkCmdExecuteCommands;
9620 }
9621#endif
9622#ifdef VK_VERSION_1_1
9623 if (!strcmp(name, "vkEnumerateInstanceVersion"))
9624 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009625 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009626 }
9627 if (!strcmp(name, "vkBindBufferMemory2"))
9628 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009629 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009630 }
9631 if (!strcmp(name, "vkBindImageMemory2"))
9632 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009633 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009634 }
9635 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
9636 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009637 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009638 }
9639 if (!strcmp(name, "vkCmdSetDeviceMask"))
9640 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009641 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009642 }
9643 if (!strcmp(name, "vkCmdDispatchBase"))
9644 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009645 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009646 }
9647 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
9648 {
Lingfeng Yang113689e2018-11-11 16:48:50 -08009649 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009650 }
9651 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
9652 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009653 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009654 }
9655 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
9656 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009657 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009658 }
9659 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
9660 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009661 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009662 }
9663 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
9664 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009665 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009666 }
9667 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
9668 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009669 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009670 }
9671 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
9672 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009673 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009674 }
9675 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
9676 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009677 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009678 }
9679 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
9680 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009681 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009682 }
9683 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
9684 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009685 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009686 }
9687 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
9688 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009689 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009690 }
9691 if (!strcmp(name, "vkTrimCommandPool"))
9692 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009693 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009694 }
9695 if (!strcmp(name, "vkGetDeviceQueue2"))
9696 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009697 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009698 }
9699 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
9700 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009701 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009702 }
9703 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
9704 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009705 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009706 }
9707 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
9708 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009709 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009710 }
9711 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
9712 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009713 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009714 }
9715 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
9716 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009717 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009718 }
9719 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
9720 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009721 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009722 }
9723 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
9724 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009725 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009726 }
9727 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
9728 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009729 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009730 }
9731 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
9732 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009733 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009734 }
9735#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009736#ifdef VK_VERSION_1_2
9737 if (!strcmp(name, "vkCmdDrawIndirectCount"))
9738 {
9739 return nullptr;
9740 }
9741 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
9742 {
9743 return nullptr;
9744 }
9745 if (!strcmp(name, "vkCreateRenderPass2"))
9746 {
9747 return nullptr;
9748 }
9749 if (!strcmp(name, "vkCmdBeginRenderPass2"))
9750 {
9751 return nullptr;
9752 }
9753 if (!strcmp(name, "vkCmdNextSubpass2"))
9754 {
9755 return nullptr;
9756 }
9757 if (!strcmp(name, "vkCmdEndRenderPass2"))
9758 {
9759 return nullptr;
9760 }
9761 if (!strcmp(name, "vkResetQueryPool"))
9762 {
9763 return nullptr;
9764 }
9765 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
9766 {
9767 return nullptr;
9768 }
9769 if (!strcmp(name, "vkWaitSemaphores"))
9770 {
9771 return nullptr;
9772 }
9773 if (!strcmp(name, "vkSignalSemaphore"))
9774 {
9775 return nullptr;
9776 }
9777 if (!strcmp(name, "vkGetBufferDeviceAddress"))
9778 {
9779 return nullptr;
9780 }
9781 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
9782 {
9783 return nullptr;
9784 }
9785 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
9786 {
9787 return nullptr;
9788 }
9789#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009790#ifdef VK_KHR_surface
9791 if (!strcmp(name, "vkDestroySurfaceKHR"))
9792 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009793 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009794 }
9795 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
9796 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009797 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009798 }
9799 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
9800 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009801 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009802 }
9803 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
9804 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009805 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009806 }
9807 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
9808 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009809 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009810 }
9811#endif
9812#ifdef VK_KHR_swapchain
9813 if (!strcmp(name, "vkCreateSwapchainKHR"))
9814 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009815 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009816 }
9817 if (!strcmp(name, "vkDestroySwapchainKHR"))
9818 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009819 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009820 }
9821 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
9822 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009823 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009824 }
9825 if (!strcmp(name, "vkAcquireNextImageKHR"))
9826 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009827 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009828 }
9829 if (!strcmp(name, "vkQueuePresentKHR"))
9830 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009831 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009832 }
9833 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
9834 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009835 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009836 }
9837 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
9838 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009839 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009840 }
9841 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
9842 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009843 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009844 }
9845 if (!strcmp(name, "vkAcquireNextImage2KHR"))
9846 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009847 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009848 }
9849#endif
9850#ifdef VK_KHR_display
9851 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
9852 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009853 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009854 }
9855 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
9856 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009857 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009858 }
9859 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
9860 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009861 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009862 }
9863 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
9864 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009865 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009866 }
9867 if (!strcmp(name, "vkCreateDisplayModeKHR"))
9868 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009869 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009870 }
9871 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
9872 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009873 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009874 }
9875 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
9876 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009877 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009878 }
9879#endif
9880#ifdef VK_KHR_display_swapchain
9881 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
9882 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009883 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009884 }
9885#endif
9886#ifdef VK_KHR_xlib_surface
9887 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
9888 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009889 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009890 }
9891 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
9892 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009893 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009894 }
9895#endif
9896#ifdef VK_KHR_xcb_surface
9897 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
9898 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009899 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009900 }
9901 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
9902 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009903 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009904 }
9905#endif
9906#ifdef VK_KHR_wayland_surface
9907 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
9908 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009909 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009910 }
9911 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
9912 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009913 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009914 }
9915#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009916#ifdef VK_KHR_android_surface
9917 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
9918 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009919 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009920 }
9921#endif
9922#ifdef VK_KHR_win32_surface
9923 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
9924 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009925 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009926 }
9927 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
9928 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009929 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009930 }
9931#endif
Yilong Li353409a2022-01-04 02:37:56 -08009932#ifdef VK_KHR_video_queue
9933 if (!strcmp(name, "vkGetPhysicalDeviceVideoCapabilitiesKHR"))
9934 {
9935 return nullptr;
9936 }
9937 if (!strcmp(name, "vkGetPhysicalDeviceVideoFormatPropertiesKHR"))
9938 {
9939 return nullptr;
9940 }
9941 if (!strcmp(name, "vkCreateVideoSessionKHR"))
9942 {
9943 return nullptr;
9944 }
9945 if (!strcmp(name, "vkDestroyVideoSessionKHR"))
9946 {
9947 return nullptr;
9948 }
9949 if (!strcmp(name, "vkGetVideoSessionMemoryRequirementsKHR"))
9950 {
9951 return nullptr;
9952 }
9953 if (!strcmp(name, "vkBindVideoSessionMemoryKHR"))
9954 {
9955 return nullptr;
9956 }
9957 if (!strcmp(name, "vkCreateVideoSessionParametersKHR"))
9958 {
9959 return nullptr;
9960 }
9961 if (!strcmp(name, "vkUpdateVideoSessionParametersKHR"))
9962 {
9963 return nullptr;
9964 }
9965 if (!strcmp(name, "vkDestroyVideoSessionParametersKHR"))
9966 {
9967 return nullptr;
9968 }
9969 if (!strcmp(name, "vkCmdBeginVideoCodingKHR"))
9970 {
9971 return nullptr;
9972 }
9973 if (!strcmp(name, "vkCmdEndVideoCodingKHR"))
9974 {
9975 return nullptr;
9976 }
9977 if (!strcmp(name, "vkCmdControlVideoCodingKHR"))
9978 {
9979 return nullptr;
9980 }
9981#endif
9982#ifdef VK_KHR_video_decode_queue
9983 if (!strcmp(name, "vkCmdDecodeVideoKHR"))
9984 {
9985 return nullptr;
9986 }
9987#endif
9988#ifdef VK_KHR_dynamic_rendering
9989 if (!strcmp(name, "vkCmdBeginRenderingKHR"))
9990 {
9991 return nullptr;
9992 }
9993 if (!strcmp(name, "vkCmdEndRenderingKHR"))
9994 {
9995 return nullptr;
9996 }
9997#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009998#ifdef VK_KHR_get_physical_device_properties2
9999 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
10000 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010001 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010002 }
10003 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
10004 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010005 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010006 }
10007 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
10008 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010009 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010010 }
10011 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
10012 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010013 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010014 }
10015 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
10016 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010017 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010018 }
10019 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
10020 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010021 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010022 }
10023 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
10024 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010025 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010026 }
10027#endif
10028#ifdef VK_KHR_device_group
10029 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
10030 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010031 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010032 }
10033 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
10034 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010035 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010036 }
10037 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
10038 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010039 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010040 }
10041#endif
10042#ifdef VK_KHR_maintenance1
10043 if (!strcmp(name, "vkTrimCommandPoolKHR"))
10044 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010045 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010046 }
10047#endif
10048#ifdef VK_KHR_device_group_creation
10049 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
10050 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010051 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010052 }
10053#endif
10054#ifdef VK_KHR_external_memory_capabilities
10055 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
10056 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010057 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010058 }
10059#endif
10060#ifdef VK_KHR_external_memory_win32
10061 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
10062 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010063 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010064 }
10065 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
10066 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010067 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010068 }
10069#endif
10070#ifdef VK_KHR_external_memory_fd
10071 if (!strcmp(name, "vkGetMemoryFdKHR"))
10072 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010073 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010074 }
10075 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
10076 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010077 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010078 }
10079#endif
10080#ifdef VK_KHR_external_semaphore_capabilities
10081 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
10082 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010083 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010084 }
10085#endif
10086#ifdef VK_KHR_external_semaphore_win32
10087 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
10088 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010089 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010090 }
10091 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
10092 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010093 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010094 }
10095#endif
10096#ifdef VK_KHR_external_semaphore_fd
10097 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
10098 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010099 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010100 }
10101 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
10102 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010103 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010104 }
10105#endif
10106#ifdef VK_KHR_push_descriptor
10107 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
10108 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010109 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010110 }
10111 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
10112 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010113 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010114 }
10115#endif
10116#ifdef VK_KHR_descriptor_update_template
10117 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
10118 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010119 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010120 }
10121 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
10122 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010123 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010124 }
10125 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
10126 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010127 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010128 }
10129#endif
10130#ifdef VK_KHR_create_renderpass2
10131 if (!strcmp(name, "vkCreateRenderPass2KHR"))
10132 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010133 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010134 }
10135 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
10136 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010137 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010138 }
10139 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
10140 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010141 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010142 }
10143 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
10144 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010145 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010146 }
10147#endif
10148#ifdef VK_KHR_shared_presentable_image
10149 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
10150 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010151 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010152 }
10153#endif
10154#ifdef VK_KHR_external_fence_capabilities
10155 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
10156 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010157 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010158 }
10159#endif
10160#ifdef VK_KHR_external_fence_win32
10161 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
10162 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010163 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010164 }
10165 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
10166 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010167 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010168 }
10169#endif
10170#ifdef VK_KHR_external_fence_fd
10171 if (!strcmp(name, "vkImportFenceFdKHR"))
10172 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010173 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010174 }
10175 if (!strcmp(name, "vkGetFenceFdKHR"))
10176 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010177 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010178 }
10179#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010180#ifdef VK_KHR_performance_query
10181 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
10182 {
10183 return nullptr;
10184 }
10185 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
10186 {
10187 return nullptr;
10188 }
10189 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
10190 {
10191 return nullptr;
10192 }
10193 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
10194 {
10195 return nullptr;
10196 }
10197#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010198#ifdef VK_KHR_get_surface_capabilities2
10199 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
10200 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010201 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010202 }
10203 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
10204 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010205 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010206 }
10207#endif
10208#ifdef VK_KHR_get_display_properties2
10209 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
10210 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010211 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010212 }
10213 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
10214 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010215 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010216 }
10217 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
10218 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010219 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010220 }
10221 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
10222 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010223 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010224 }
10225#endif
10226#ifdef VK_KHR_get_memory_requirements2
10227 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
10228 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010229 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010230 }
10231 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
10232 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010233 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010234 }
10235 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
10236 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010237 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010238 }
10239#endif
10240#ifdef VK_KHR_sampler_ycbcr_conversion
10241 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
10242 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010243 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010244 }
10245 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
10246 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010247 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010248 }
10249#endif
10250#ifdef VK_KHR_bind_memory2
10251 if (!strcmp(name, "vkBindBufferMemory2KHR"))
10252 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010253 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010254 }
10255 if (!strcmp(name, "vkBindImageMemory2KHR"))
10256 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010257 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010258 }
10259#endif
10260#ifdef VK_KHR_maintenance3
10261 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
10262 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010263 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010264 }
10265#endif
10266#ifdef VK_KHR_draw_indirect_count
10267 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
10268 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010269 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010270 }
10271 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
10272 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010273 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010274 }
10275#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010276#ifdef VK_KHR_timeline_semaphore
10277 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
10278 {
10279 return nullptr;
10280 }
10281 if (!strcmp(name, "vkWaitSemaphoresKHR"))
10282 {
10283 return nullptr;
10284 }
10285 if (!strcmp(name, "vkSignalSemaphoreKHR"))
10286 {
10287 return nullptr;
10288 }
10289#endif
10290#ifdef VK_KHR_fragment_shading_rate
10291 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
10292 {
10293 return nullptr;
10294 }
10295 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
10296 {
10297 return nullptr;
10298 }
10299#endif
Yilong Li353409a2022-01-04 02:37:56 -080010300#ifdef VK_KHR_present_wait
10301 if (!strcmp(name, "vkWaitForPresentKHR"))
10302 {
10303 return nullptr;
10304 }
10305#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010306#ifdef VK_KHR_buffer_device_address
10307 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
10308 {
10309 return nullptr;
10310 }
10311 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
10312 {
10313 return nullptr;
10314 }
10315 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
10316 {
10317 return nullptr;
10318 }
10319#endif
10320#ifdef VK_KHR_deferred_host_operations
10321 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
10322 {
10323 return nullptr;
10324 }
10325 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
10326 {
10327 return nullptr;
10328 }
10329 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
10330 {
10331 return nullptr;
10332 }
10333 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
10334 {
10335 return nullptr;
10336 }
10337 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
10338 {
10339 return nullptr;
10340 }
10341#endif
10342#ifdef VK_KHR_pipeline_executable_properties
10343 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
10344 {
10345 return nullptr;
10346 }
10347 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
10348 {
10349 return nullptr;
10350 }
10351 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
10352 {
10353 return nullptr;
10354 }
10355#endif
Yilong Li353409a2022-01-04 02:37:56 -080010356#ifdef VK_KHR_video_encode_queue
10357 if (!strcmp(name, "vkCmdEncodeVideoKHR"))
10358 {
10359 return nullptr;
10360 }
10361#endif
10362#ifdef VK_KHR_synchronization2
10363 if (!strcmp(name, "vkCmdSetEvent2KHR"))
10364 {
10365 return nullptr;
10366 }
10367 if (!strcmp(name, "vkCmdResetEvent2KHR"))
10368 {
10369 return nullptr;
10370 }
10371 if (!strcmp(name, "vkCmdWaitEvents2KHR"))
10372 {
10373 return nullptr;
10374 }
10375 if (!strcmp(name, "vkCmdPipelineBarrier2KHR"))
10376 {
10377 return nullptr;
10378 }
10379 if (!strcmp(name, "vkCmdWriteTimestamp2KHR"))
10380 {
10381 return nullptr;
10382 }
10383 if (!strcmp(name, "vkQueueSubmit2KHR"))
10384 {
10385 return nullptr;
10386 }
10387 if (!strcmp(name, "vkCmdWriteBufferMarker2AMD"))
10388 {
10389 return nullptr;
10390 }
10391 if (!strcmp(name, "vkGetQueueCheckpointData2NV"))
10392 {
10393 return nullptr;
10394 }
10395#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010396#ifdef VK_KHR_copy_commands2
10397 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
10398 {
10399 return nullptr;
10400 }
10401 if (!strcmp(name, "vkCmdCopyImage2KHR"))
10402 {
10403 return nullptr;
10404 }
10405 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
10406 {
10407 return nullptr;
10408 }
10409 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
10410 {
10411 return nullptr;
10412 }
10413 if (!strcmp(name, "vkCmdBlitImage2KHR"))
10414 {
10415 return nullptr;
10416 }
10417 if (!strcmp(name, "vkCmdResolveImage2KHR"))
10418 {
10419 return nullptr;
10420 }
10421#endif
Yilong Li353409a2022-01-04 02:37:56 -080010422#ifdef VK_KHR_maintenance4
10423 if (!strcmp(name, "vkGetDeviceBufferMemoryRequirementsKHR"))
10424 {
10425 return nullptr;
10426 }
10427 if (!strcmp(name, "vkGetDeviceImageMemoryRequirementsKHR"))
10428 {
10429 return nullptr;
10430 }
10431 if (!strcmp(name, "vkGetDeviceImageSparseMemoryRequirementsKHR"))
10432 {
10433 return nullptr;
10434 }
10435#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -080010436#ifdef VK_ANDROID_native_buffer
10437 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
10438 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010439 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -080010440 }
10441 if (!strcmp(name, "vkAcquireImageANDROID"))
10442 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010443 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -080010444 }
10445 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
10446 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010447 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -080010448 }
10449#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010450#ifdef VK_EXT_debug_report
10451 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
10452 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010453 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010454 }
10455 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
10456 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010457 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010458 }
10459 if (!strcmp(name, "vkDebugReportMessageEXT"))
10460 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010461 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010462 }
10463#endif
10464#ifdef VK_EXT_debug_marker
10465 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
10466 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010467 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010468 }
10469 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
10470 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010471 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010472 }
10473 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
10474 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010475 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010476 }
10477 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
10478 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010479 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010480 }
10481 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
10482 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010483 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010484 }
10485#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010486#ifdef VK_EXT_transform_feedback
10487 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
10488 {
10489 return nullptr;
10490 }
10491 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
10492 {
10493 return nullptr;
10494 }
10495 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
10496 {
10497 return nullptr;
10498 }
10499 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
10500 {
10501 return nullptr;
10502 }
10503 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
10504 {
10505 return nullptr;
10506 }
10507 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
10508 {
10509 return nullptr;
10510 }
10511#endif
Yilong Li353409a2022-01-04 02:37:56 -080010512#ifdef VK_NVX_binary_import
10513 if (!strcmp(name, "vkCreateCuModuleNVX"))
10514 {
10515 return nullptr;
10516 }
10517 if (!strcmp(name, "vkCreateCuFunctionNVX"))
10518 {
10519 return nullptr;
10520 }
10521 if (!strcmp(name, "vkDestroyCuModuleNVX"))
10522 {
10523 return nullptr;
10524 }
10525 if (!strcmp(name, "vkDestroyCuFunctionNVX"))
10526 {
10527 return nullptr;
10528 }
10529 if (!strcmp(name, "vkCmdCuLaunchKernelNVX"))
10530 {
10531 return nullptr;
10532 }
10533#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010534#ifdef VK_NVX_image_view_handle
10535 if (!strcmp(name, "vkGetImageViewHandleNVX"))
10536 {
10537 return nullptr;
10538 }
10539 if (!strcmp(name, "vkGetImageViewAddressNVX"))
10540 {
10541 return nullptr;
10542 }
10543#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010544#ifdef VK_AMD_draw_indirect_count
10545 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
10546 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010547 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010548 }
10549 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
10550 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010551 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010552 }
10553#endif
10554#ifdef VK_AMD_shader_info
10555 if (!strcmp(name, "vkGetShaderInfoAMD"))
10556 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010557 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010558 }
10559#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010560#ifdef VK_GGP_stream_descriptor_surface
10561 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
10562 {
10563 return nullptr;
10564 }
10565#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010566#ifdef VK_NV_external_memory_capabilities
10567 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
10568 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010569 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010570 }
10571#endif
10572#ifdef VK_NV_external_memory_win32
10573 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
10574 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010575 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010576 }
10577#endif
10578#ifdef VK_NN_vi_surface
10579 if (!strcmp(name, "vkCreateViSurfaceNN"))
10580 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010581 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010582 }
10583#endif
10584#ifdef VK_EXT_conditional_rendering
10585 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
10586 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010587 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010588 }
10589 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
10590 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010591 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010592 }
10593#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010594#ifdef VK_NV_clip_space_w_scaling
10595 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
10596 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010597 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010598 }
10599#endif
10600#ifdef VK_EXT_direct_mode_display
10601 if (!strcmp(name, "vkReleaseDisplayEXT"))
10602 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010603 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010604 }
10605#endif
10606#ifdef VK_EXT_acquire_xlib_display
10607 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
10608 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010609 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010610 }
10611 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
10612 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010613 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010614 }
10615#endif
10616#ifdef VK_EXT_display_surface_counter
10617 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
10618 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010619 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010620 }
10621#endif
10622#ifdef VK_EXT_display_control
10623 if (!strcmp(name, "vkDisplayPowerControlEXT"))
10624 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010625 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010626 }
10627 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
10628 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010629 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010630 }
10631 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
10632 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010633 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010634 }
10635 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
10636 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010637 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010638 }
10639#endif
10640#ifdef VK_GOOGLE_display_timing
10641 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
10642 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010643 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010644 }
10645 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
10646 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010647 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010648 }
10649#endif
10650#ifdef VK_EXT_discard_rectangles
10651 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
10652 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010653 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010654 }
10655#endif
10656#ifdef VK_EXT_hdr_metadata
10657 if (!strcmp(name, "vkSetHdrMetadataEXT"))
10658 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010659 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010660 }
10661#endif
10662#ifdef VK_MVK_ios_surface
10663 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
10664 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010665 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010666 }
10667#endif
10668#ifdef VK_MVK_macos_surface
10669 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
10670 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010671 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010672 }
10673#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010674#ifdef VK_MVK_moltenvk
10675 if (!strcmp(name, "vkGetMTLDeviceMVK"))
10676 {
10677 return nullptr;
10678 }
10679 if (!strcmp(name, "vkSetMTLTextureMVK"))
10680 {
10681 return nullptr;
10682 }
10683 if (!strcmp(name, "vkGetMTLTextureMVK"))
10684 {
10685 return nullptr;
10686 }
10687 if (!strcmp(name, "vkGetMTLBufferMVK"))
10688 {
10689 return nullptr;
10690 }
10691 if (!strcmp(name, "vkUseIOSurfaceMVK"))
10692 {
10693 return nullptr;
10694 }
10695 if (!strcmp(name, "vkGetIOSurfaceMVK"))
10696 {
10697 return nullptr;
10698 }
10699#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010700#ifdef VK_EXT_debug_utils
10701 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
10702 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010703 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010704 }
10705 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
10706 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010707 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010708 }
10709 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
10710 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010711 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010712 }
10713 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
10714 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010715 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010716 }
10717 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
10718 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010719 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010720 }
10721 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
10722 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010723 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010724 }
10725 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
10726 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010727 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010728 }
10729 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
10730 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010731 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010732 }
10733 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
10734 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010735 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010736 }
10737 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
10738 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010739 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010740 }
10741 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
10742 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010743 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010744 }
10745#endif
10746#ifdef VK_ANDROID_external_memory_android_hardware_buffer
10747 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
10748 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010749 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010750 }
10751 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
10752 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010753 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010754 }
10755#endif
10756#ifdef VK_EXT_sample_locations
10757 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
10758 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010759 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010760 }
10761 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
10762 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010763 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010764 }
10765#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010766#ifdef VK_EXT_image_drm_format_modifier
10767 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
10768 {
10769 return nullptr;
10770 }
10771#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010772#ifdef VK_EXT_validation_cache
10773 if (!strcmp(name, "vkCreateValidationCacheEXT"))
10774 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010775 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010776 }
10777 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
10778 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010779 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010780 }
10781 if (!strcmp(name, "vkMergeValidationCachesEXT"))
10782 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010783 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010784 }
10785 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
10786 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010787 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010788 }
10789#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010790#ifdef VK_NV_shading_rate_image
10791 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
10792 {
10793 return nullptr;
10794 }
10795 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
10796 {
10797 return nullptr;
10798 }
10799 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
10800 {
10801 return nullptr;
10802 }
10803#endif
10804#ifdef VK_NV_ray_tracing
10805 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
10806 {
10807 return nullptr;
10808 }
10809 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
10810 {
10811 return nullptr;
10812 }
10813 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
10814 {
10815 return nullptr;
10816 }
10817 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
10818 {
10819 return nullptr;
10820 }
10821 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
10822 {
10823 return nullptr;
10824 }
10825 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
10826 {
10827 return nullptr;
10828 }
10829 if (!strcmp(name, "vkCmdTraceRaysNV"))
10830 {
10831 return nullptr;
10832 }
10833 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
10834 {
10835 return nullptr;
10836 }
10837 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
10838 {
10839 return nullptr;
10840 }
10841 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
10842 {
10843 return nullptr;
10844 }
10845 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
10846 {
10847 return nullptr;
10848 }
10849 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
10850 {
10851 return nullptr;
10852 }
10853 if (!strcmp(name, "vkCompileDeferredNV"))
10854 {
10855 return nullptr;
10856 }
10857#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010858#ifdef VK_EXT_external_memory_host
10859 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
10860 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010861 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010862 }
10863#endif
10864#ifdef VK_AMD_buffer_marker
10865 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
10866 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010867 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010868 }
10869#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010870#ifdef VK_EXT_calibrated_timestamps
10871 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
10872 {
10873 return nullptr;
10874 }
10875 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
10876 {
10877 return nullptr;
10878 }
10879#endif
10880#ifdef VK_NV_mesh_shader
10881 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
10882 {
10883 return nullptr;
10884 }
10885 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
10886 {
10887 return nullptr;
10888 }
10889 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
10890 {
10891 return nullptr;
10892 }
10893#endif
10894#ifdef VK_NV_scissor_exclusive
10895 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
10896 {
10897 return nullptr;
10898 }
10899#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010900#ifdef VK_NV_device_diagnostic_checkpoints
10901 if (!strcmp(name, "vkCmdSetCheckpointNV"))
10902 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010903 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010904 }
10905 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
10906 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010907 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010908 }
10909#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010910#ifdef VK_INTEL_performance_query
10911 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
10912 {
10913 return nullptr;
10914 }
10915 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
10916 {
10917 return nullptr;
10918 }
10919 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
10920 {
10921 return nullptr;
10922 }
10923 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
10924 {
10925 return nullptr;
10926 }
10927 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
10928 {
10929 return nullptr;
10930 }
10931 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
10932 {
10933 return nullptr;
10934 }
10935 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
10936 {
10937 return nullptr;
10938 }
10939 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
10940 {
10941 return nullptr;
10942 }
10943 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
10944 {
10945 return nullptr;
10946 }
10947#endif
10948#ifdef VK_AMD_display_native_hdr
10949 if (!strcmp(name, "vkSetLocalDimmingAMD"))
10950 {
10951 return nullptr;
10952 }
10953#endif
10954#ifdef VK_FUCHSIA_imagepipe_surface
10955 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
10956 {
10957 return nullptr;
10958 }
10959#endif
10960#ifdef VK_EXT_metal_surface
10961 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080010962 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010963 return nullptr;
10964 }
10965#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010966#ifdef VK_EXT_buffer_device_address
10967 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
10968 {
10969 return nullptr;
10970 }
10971#endif
10972#ifdef VK_EXT_tooling_info
10973 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
10974 {
10975 return nullptr;
10976 }
10977#endif
10978#ifdef VK_NV_cooperative_matrix
10979 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
10980 {
10981 return nullptr;
10982 }
10983#endif
10984#ifdef VK_NV_coverage_reduction_mode
10985 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
10986 {
10987 return nullptr;
10988 }
10989#endif
10990#ifdef VK_EXT_full_screen_exclusive
10991 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
10992 {
10993 return nullptr;
10994 }
10995 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
10996 {
10997 return nullptr;
10998 }
10999 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
11000 {
11001 return nullptr;
11002 }
11003 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
11004 {
11005 return nullptr;
11006 }
11007#endif
11008#ifdef VK_EXT_headless_surface
11009 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
11010 {
11011 return nullptr;
11012 }
11013#endif
11014#ifdef VK_EXT_line_rasterization
11015 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
11016 {
11017 return nullptr;
11018 }
11019#endif
11020#ifdef VK_EXT_host_query_reset
11021 if (!strcmp(name, "vkResetQueryPoolEXT"))
11022 {
11023 return nullptr;
11024 }
11025#endif
11026#ifdef VK_EXT_extended_dynamic_state
11027 if (!strcmp(name, "vkCmdSetCullModeEXT"))
11028 {
11029 return nullptr;
11030 }
11031 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
11032 {
11033 return nullptr;
11034 }
11035 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
11036 {
11037 return nullptr;
11038 }
11039 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
11040 {
11041 return nullptr;
11042 }
11043 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
11044 {
11045 return nullptr;
11046 }
11047 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
11048 {
11049 return nullptr;
11050 }
11051 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
11052 {
11053 return nullptr;
11054 }
11055 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
11056 {
11057 return nullptr;
11058 }
11059 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
11060 {
11061 return nullptr;
11062 }
11063 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
11064 {
11065 return nullptr;
11066 }
11067 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
11068 {
11069 return nullptr;
11070 }
11071 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
11072 {
11073 return nullptr;
11074 }
11075#endif
11076#ifdef VK_NV_device_generated_commands
11077 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
11078 {
11079 return nullptr;
11080 }
11081 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
11082 {
11083 return nullptr;
11084 }
11085 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
11086 {
11087 return nullptr;
11088 }
11089 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
11090 {
11091 return nullptr;
11092 }
11093 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
11094 {
11095 return nullptr;
11096 }
11097 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
11098 {
11099 return nullptr;
11100 }
11101#endif
Yilong Li353409a2022-01-04 02:37:56 -080011102#ifdef VK_EXT_acquire_drm_display
11103 if (!strcmp(name, "vkAcquireDrmDisplayEXT"))
11104 {
11105 return nullptr;
11106 }
11107 if (!strcmp(name, "vkGetDrmDisplayEXT"))
11108 {
11109 return nullptr;
11110 }
11111#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011112#ifdef VK_EXT_private_data
11113 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
11114 {
11115 return nullptr;
11116 }
11117 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
11118 {
11119 return nullptr;
11120 }
11121 if (!strcmp(name, "vkSetPrivateDataEXT"))
11122 {
11123 return nullptr;
11124 }
11125 if (!strcmp(name, "vkGetPrivateDataEXT"))
11126 {
11127 return nullptr;
11128 }
11129#endif
11130#ifdef VK_NV_fragment_shading_rate_enums
11131 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
11132 {
11133 return nullptr;
11134 }
11135#endif
Yilong Li353409a2022-01-04 02:37:56 -080011136#ifdef VK_NV_acquire_winrt_display
11137 if (!strcmp(name, "vkAcquireWinrtDisplayNV"))
11138 {
11139 return nullptr;
11140 }
11141 if (!strcmp(name, "vkGetWinrtDisplayNV"))
11142 {
11143 return nullptr;
11144 }
11145#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011146#ifdef VK_EXT_directfb_surface
11147 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
11148 {
11149 return nullptr;
11150 }
11151 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
11152 {
11153 return nullptr;
11154 }
11155#endif
Yilong Li353409a2022-01-04 02:37:56 -080011156#ifdef VK_EXT_vertex_input_dynamic_state
11157 if (!strcmp(name, "vkCmdSetVertexInputEXT"))
11158 {
11159 return nullptr;
11160 }
11161#endif
11162#ifdef VK_FUCHSIA_external_memory
11163 if (!strcmp(name, "vkGetMemoryZirconHandleFUCHSIA"))
11164 {
11165 return nullptr;
11166 }
11167 if (!strcmp(name, "vkGetMemoryZirconHandlePropertiesFUCHSIA"))
11168 {
11169 return nullptr;
11170 }
11171#endif
11172#ifdef VK_FUCHSIA_external_semaphore
11173 if (!strcmp(name, "vkImportSemaphoreZirconHandleFUCHSIA"))
11174 {
11175 return nullptr;
11176 }
11177 if (!strcmp(name, "vkGetSemaphoreZirconHandleFUCHSIA"))
11178 {
11179 return nullptr;
11180 }
11181#endif
11182#ifdef VK_FUCHSIA_buffer_collection
11183 if (!strcmp(name, "vkCreateBufferCollectionFUCHSIA"))
11184 {
11185 return nullptr;
11186 }
11187 if (!strcmp(name, "vkSetBufferCollectionImageConstraintsFUCHSIA"))
11188 {
11189 return nullptr;
11190 }
11191 if (!strcmp(name, "vkSetBufferCollectionBufferConstraintsFUCHSIA"))
11192 {
11193 return nullptr;
11194 }
11195 if (!strcmp(name, "vkDestroyBufferCollectionFUCHSIA"))
11196 {
11197 return nullptr;
11198 }
11199 if (!strcmp(name, "vkGetBufferCollectionPropertiesFUCHSIA"))
11200 {
11201 return nullptr;
11202 }
11203#endif
11204#ifdef VK_HUAWEI_subpass_shading
11205 if (!strcmp(name, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI"))
11206 {
11207 return nullptr;
11208 }
11209 if (!strcmp(name, "vkCmdSubpassShadingHUAWEI"))
11210 {
11211 return nullptr;
11212 }
11213#endif
11214#ifdef VK_HUAWEI_invocation_mask
11215 if (!strcmp(name, "vkCmdBindInvocationMaskHUAWEI"))
11216 {
11217 return nullptr;
11218 }
11219#endif
11220#ifdef VK_NV_external_memory_rdma
11221 if (!strcmp(name, "vkGetMemoryRemoteAddressNV"))
11222 {
11223 return nullptr;
11224 }
11225#endif
11226#ifdef VK_EXT_extended_dynamic_state2
11227 if (!strcmp(name, "vkCmdSetPatchControlPointsEXT"))
11228 {
11229 return nullptr;
11230 }
11231 if (!strcmp(name, "vkCmdSetRasterizerDiscardEnableEXT"))
11232 {
11233 return nullptr;
11234 }
11235 if (!strcmp(name, "vkCmdSetDepthBiasEnableEXT"))
11236 {
11237 return nullptr;
11238 }
11239 if (!strcmp(name, "vkCmdSetLogicOpEXT"))
11240 {
11241 return nullptr;
11242 }
11243 if (!strcmp(name, "vkCmdSetPrimitiveRestartEnableEXT"))
11244 {
11245 return nullptr;
11246 }
11247#endif
11248#ifdef VK_QNX_screen_surface
11249 if (!strcmp(name, "vkCreateScreenSurfaceQNX"))
11250 {
11251 return nullptr;
11252 }
11253 if (!strcmp(name, "vkGetPhysicalDeviceScreenPresentationSupportQNX"))
11254 {
11255 return nullptr;
11256 }
11257#endif
11258#ifdef VK_EXT_color_write_enable
11259 if (!strcmp(name, "vkCmdSetColorWriteEnableEXT"))
11260 {
11261 return nullptr;
11262 }
11263#endif
Yilong Li71c43c52021-02-10 02:50:43 -080011264#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -070011265 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
11266 {
11267 return nullptr;
11268 }
11269 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
11270 {
11271 return nullptr;
11272 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011273 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
11274 {
11275 return nullptr;
11276 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070011277 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
11278 {
11279 return nullptr;
11280 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070011281 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
11282 {
11283 return nullptr;
11284 }
11285 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
11286 {
11287 return nullptr;
11288 }
11289 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
11290 {
11291 return nullptr;
11292 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070011293 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
11294 {
11295 return nullptr;
11296 }
Lingfeng Yang87f11962019-06-27 16:28:53 +000011297 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
11298 {
11299 return nullptr;
11300 }
11301 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
11302 {
11303 return nullptr;
11304 }
Lingfeng Yang4c542412020-02-04 18:18:32 -080011305 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
11306 {
11307 return nullptr;
11308 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070011309 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
11310 {
11311 return nullptr;
11312 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070011313 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
11314 {
11315 return nullptr;
11316 }
11317 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
11318 {
11319 return nullptr;
11320 }
11321 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
11322 {
11323 return nullptr;
11324 }
11325 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
11326 {
11327 return nullptr;
11328 }
Yilong Lia48b0102020-09-15 15:08:28 -070011329 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
11330 {
11331 return nullptr;
11332 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011333 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
Lingfeng Yang2178dc72021-01-08 14:01:47 -080011334 {
11335 return nullptr;
11336 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080011337 if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
11338 {
11339 return nullptr;
11340 }
11341 if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
11342 {
11343 return nullptr;
11344 }
Lingfeng Yang5678e1e2021-07-15 12:28:05 -070011345 if (!strcmp(name, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE"))
11346 {
11347 return nullptr;
11348 }
Lingfeng Yang2178dc72021-01-08 14:01:47 -080011349#endif
Yilong Li353409a2022-01-04 02:37:56 -080011350#ifdef VK_EXT_multi_draw
11351 if (!strcmp(name, "vkCmdDrawMultiEXT"))
11352 {
11353 return nullptr;
11354 }
11355 if (!strcmp(name, "vkCmdDrawMultiIndexedEXT"))
11356 {
11357 return nullptr;
11358 }
11359#endif
11360#ifdef VK_EXT_pageable_device_local_memory
11361 if (!strcmp(name, "vkSetDeviceMemoryPriorityEXT"))
11362 {
11363 return nullptr;
11364 }
11365#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011366#ifdef VK_KHR_acceleration_structure
11367 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
11368 {
11369 return nullptr;
11370 }
11371 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
11372 {
11373 return nullptr;
11374 }
11375 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
11376 {
11377 return nullptr;
11378 }
11379 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
11380 {
11381 return nullptr;
11382 }
11383 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
11384 {
11385 return nullptr;
11386 }
11387 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
11388 {
11389 return nullptr;
11390 }
11391 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
11392 {
11393 return nullptr;
11394 }
11395 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
11396 {
11397 return nullptr;
11398 }
11399 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
11400 {
11401 return nullptr;
11402 }
11403 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
11404 {
11405 return nullptr;
11406 }
11407 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
11408 {
11409 return nullptr;
11410 }
11411 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
11412 {
11413 return nullptr;
11414 }
11415 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
11416 {
11417 return nullptr;
11418 }
11419 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
11420 {
11421 return nullptr;
11422 }
11423 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
11424 {
11425 return nullptr;
11426 }
11427 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
11428 {
11429 return nullptr;
11430 }
11431#endif
11432#ifdef VK_KHR_ray_tracing_pipeline
11433 if (!strcmp(name, "vkCmdTraceRaysKHR"))
11434 {
11435 return nullptr;
11436 }
11437 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
11438 {
11439 return nullptr;
11440 }
11441 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
11442 {
11443 return nullptr;
11444 }
11445 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
11446 {
11447 return nullptr;
11448 }
11449 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
11450 {
11451 return nullptr;
11452 }
11453 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
Lingfeng Yangded34672021-01-22 23:17:47 -080011454 {
11455 return nullptr;
11456 }
11457#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011458 return nullptr;
11459}
11460void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
11461 auto resources = ResourceTracker::get();
11462 bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
11463#ifdef VK_VERSION_1_0
11464 if (!strcmp(name, "vkCreateInstance"))
11465 {
11466 return (void*)entry_vkCreateInstance;
11467 }
11468 if (!strcmp(name, "vkDestroyInstance"))
11469 {
11470 return (void*)entry_vkDestroyInstance;
11471 }
11472 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
11473 {
11474 return (void*)entry_vkEnumeratePhysicalDevices;
11475 }
11476 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
11477 {
11478 return (void*)entry_vkGetPhysicalDeviceFeatures;
11479 }
11480 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
11481 {
11482 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
11483 }
11484 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
11485 {
11486 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
11487 }
11488 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
11489 {
11490 return (void*)entry_vkGetPhysicalDeviceProperties;
11491 }
11492 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
11493 {
11494 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
11495 }
11496 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
11497 {
11498 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
11499 }
11500 if (!strcmp(name, "vkGetInstanceProcAddr"))
11501 {
11502 return (void*)entry_vkGetInstanceProcAddr;
11503 }
11504 if (!strcmp(name, "vkGetDeviceProcAddr"))
11505 {
11506 return (void*)entry_vkGetDeviceProcAddr;
11507 }
11508 if (!strcmp(name, "vkCreateDevice"))
11509 {
11510 return (void*)entry_vkCreateDevice;
11511 }
11512 if (!strcmp(name, "vkDestroyDevice"))
11513 {
11514 return (void*)entry_vkDestroyDevice;
11515 }
11516 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
11517 {
11518 return (void*)entry_vkEnumerateInstanceExtensionProperties;
11519 }
11520 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
11521 {
11522 return (void*)entry_vkEnumerateDeviceExtensionProperties;
11523 }
11524 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
11525 {
11526 return (void*)entry_vkEnumerateInstanceLayerProperties;
11527 }
11528 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
11529 {
11530 return (void*)entry_vkEnumerateDeviceLayerProperties;
11531 }
11532 if (!strcmp(name, "vkGetDeviceQueue"))
11533 {
11534 return (void*)entry_vkGetDeviceQueue;
11535 }
11536 if (!strcmp(name, "vkQueueSubmit"))
11537 {
11538 return (void*)entry_vkQueueSubmit;
11539 }
11540 if (!strcmp(name, "vkQueueWaitIdle"))
11541 {
11542 return (void*)entry_vkQueueWaitIdle;
11543 }
11544 if (!strcmp(name, "vkDeviceWaitIdle"))
11545 {
11546 return (void*)entry_vkDeviceWaitIdle;
11547 }
11548 if (!strcmp(name, "vkAllocateMemory"))
11549 {
11550 return (void*)entry_vkAllocateMemory;
11551 }
11552 if (!strcmp(name, "vkFreeMemory"))
11553 {
11554 return (void*)entry_vkFreeMemory;
11555 }
11556 if (!strcmp(name, "vkMapMemory"))
11557 {
11558 return (void*)entry_vkMapMemory;
11559 }
11560 if (!strcmp(name, "vkUnmapMemory"))
11561 {
11562 return (void*)entry_vkUnmapMemory;
11563 }
11564 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
11565 {
11566 return (void*)entry_vkFlushMappedMemoryRanges;
11567 }
11568 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
11569 {
11570 return (void*)entry_vkInvalidateMappedMemoryRanges;
11571 }
11572 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
11573 {
11574 return (void*)entry_vkGetDeviceMemoryCommitment;
11575 }
11576 if (!strcmp(name, "vkBindBufferMemory"))
11577 {
11578 return (void*)entry_vkBindBufferMemory;
11579 }
11580 if (!strcmp(name, "vkBindImageMemory"))
11581 {
11582 return (void*)entry_vkBindImageMemory;
11583 }
11584 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
11585 {
11586 return (void*)entry_vkGetBufferMemoryRequirements;
11587 }
11588 if (!strcmp(name, "vkGetImageMemoryRequirements"))
11589 {
11590 return (void*)entry_vkGetImageMemoryRequirements;
11591 }
11592 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
11593 {
11594 return (void*)entry_vkGetImageSparseMemoryRequirements;
11595 }
11596 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
11597 {
11598 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
11599 }
11600 if (!strcmp(name, "vkQueueBindSparse"))
11601 {
11602 return (void*)entry_vkQueueBindSparse;
11603 }
11604 if (!strcmp(name, "vkCreateFence"))
11605 {
11606 return (void*)entry_vkCreateFence;
11607 }
11608 if (!strcmp(name, "vkDestroyFence"))
11609 {
11610 return (void*)entry_vkDestroyFence;
11611 }
11612 if (!strcmp(name, "vkResetFences"))
11613 {
11614 return (void*)entry_vkResetFences;
11615 }
11616 if (!strcmp(name, "vkGetFenceStatus"))
11617 {
11618 return (void*)entry_vkGetFenceStatus;
11619 }
11620 if (!strcmp(name, "vkWaitForFences"))
11621 {
11622 return (void*)entry_vkWaitForFences;
11623 }
11624 if (!strcmp(name, "vkCreateSemaphore"))
11625 {
11626 return (void*)entry_vkCreateSemaphore;
11627 }
11628 if (!strcmp(name, "vkDestroySemaphore"))
11629 {
11630 return (void*)entry_vkDestroySemaphore;
11631 }
11632 if (!strcmp(name, "vkCreateEvent"))
11633 {
11634 return (void*)entry_vkCreateEvent;
11635 }
11636 if (!strcmp(name, "vkDestroyEvent"))
11637 {
11638 return (void*)entry_vkDestroyEvent;
11639 }
11640 if (!strcmp(name, "vkGetEventStatus"))
11641 {
11642 return (void*)entry_vkGetEventStatus;
11643 }
11644 if (!strcmp(name, "vkSetEvent"))
11645 {
11646 return (void*)entry_vkSetEvent;
11647 }
11648 if (!strcmp(name, "vkResetEvent"))
11649 {
11650 return (void*)entry_vkResetEvent;
11651 }
11652 if (!strcmp(name, "vkCreateQueryPool"))
11653 {
11654 return (void*)entry_vkCreateQueryPool;
11655 }
11656 if (!strcmp(name, "vkDestroyQueryPool"))
11657 {
11658 return (void*)entry_vkDestroyQueryPool;
11659 }
11660 if (!strcmp(name, "vkGetQueryPoolResults"))
11661 {
11662 return (void*)entry_vkGetQueryPoolResults;
11663 }
11664 if (!strcmp(name, "vkCreateBuffer"))
11665 {
11666 return (void*)entry_vkCreateBuffer;
11667 }
11668 if (!strcmp(name, "vkDestroyBuffer"))
11669 {
11670 return (void*)entry_vkDestroyBuffer;
11671 }
11672 if (!strcmp(name, "vkCreateBufferView"))
11673 {
11674 return (void*)entry_vkCreateBufferView;
11675 }
11676 if (!strcmp(name, "vkDestroyBufferView"))
11677 {
11678 return (void*)entry_vkDestroyBufferView;
11679 }
11680 if (!strcmp(name, "vkCreateImage"))
11681 {
11682 return (void*)entry_vkCreateImage;
11683 }
11684 if (!strcmp(name, "vkDestroyImage"))
11685 {
11686 return (void*)entry_vkDestroyImage;
11687 }
11688 if (!strcmp(name, "vkGetImageSubresourceLayout"))
11689 {
11690 return (void*)entry_vkGetImageSubresourceLayout;
11691 }
11692 if (!strcmp(name, "vkCreateImageView"))
11693 {
11694 return (void*)entry_vkCreateImageView;
11695 }
11696 if (!strcmp(name, "vkDestroyImageView"))
11697 {
11698 return (void*)entry_vkDestroyImageView;
11699 }
11700 if (!strcmp(name, "vkCreateShaderModule"))
11701 {
11702 return (void*)entry_vkCreateShaderModule;
11703 }
11704 if (!strcmp(name, "vkDestroyShaderModule"))
11705 {
11706 return (void*)entry_vkDestroyShaderModule;
11707 }
11708 if (!strcmp(name, "vkCreatePipelineCache"))
11709 {
11710 return (void*)entry_vkCreatePipelineCache;
11711 }
11712 if (!strcmp(name, "vkDestroyPipelineCache"))
11713 {
11714 return (void*)entry_vkDestroyPipelineCache;
11715 }
11716 if (!strcmp(name, "vkGetPipelineCacheData"))
11717 {
11718 return (void*)entry_vkGetPipelineCacheData;
11719 }
11720 if (!strcmp(name, "vkMergePipelineCaches"))
11721 {
11722 return (void*)entry_vkMergePipelineCaches;
11723 }
11724 if (!strcmp(name, "vkCreateGraphicsPipelines"))
11725 {
11726 return (void*)entry_vkCreateGraphicsPipelines;
11727 }
11728 if (!strcmp(name, "vkCreateComputePipelines"))
11729 {
11730 return (void*)entry_vkCreateComputePipelines;
11731 }
11732 if (!strcmp(name, "vkDestroyPipeline"))
11733 {
11734 return (void*)entry_vkDestroyPipeline;
11735 }
11736 if (!strcmp(name, "vkCreatePipelineLayout"))
11737 {
11738 return (void*)entry_vkCreatePipelineLayout;
11739 }
11740 if (!strcmp(name, "vkDestroyPipelineLayout"))
11741 {
11742 return (void*)entry_vkDestroyPipelineLayout;
11743 }
11744 if (!strcmp(name, "vkCreateSampler"))
11745 {
11746 return (void*)entry_vkCreateSampler;
11747 }
11748 if (!strcmp(name, "vkDestroySampler"))
11749 {
11750 return (void*)entry_vkDestroySampler;
11751 }
11752 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
11753 {
11754 return (void*)entry_vkCreateDescriptorSetLayout;
11755 }
11756 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
11757 {
11758 return (void*)entry_vkDestroyDescriptorSetLayout;
11759 }
11760 if (!strcmp(name, "vkCreateDescriptorPool"))
11761 {
11762 return (void*)entry_vkCreateDescriptorPool;
11763 }
11764 if (!strcmp(name, "vkDestroyDescriptorPool"))
11765 {
11766 return (void*)entry_vkDestroyDescriptorPool;
11767 }
11768 if (!strcmp(name, "vkResetDescriptorPool"))
11769 {
11770 return (void*)entry_vkResetDescriptorPool;
11771 }
11772 if (!strcmp(name, "vkAllocateDescriptorSets"))
11773 {
11774 return (void*)entry_vkAllocateDescriptorSets;
11775 }
11776 if (!strcmp(name, "vkFreeDescriptorSets"))
11777 {
11778 return (void*)entry_vkFreeDescriptorSets;
11779 }
11780 if (!strcmp(name, "vkUpdateDescriptorSets"))
11781 {
11782 return (void*)entry_vkUpdateDescriptorSets;
11783 }
11784 if (!strcmp(name, "vkCreateFramebuffer"))
11785 {
11786 return (void*)entry_vkCreateFramebuffer;
11787 }
11788 if (!strcmp(name, "vkDestroyFramebuffer"))
11789 {
11790 return (void*)entry_vkDestroyFramebuffer;
11791 }
11792 if (!strcmp(name, "vkCreateRenderPass"))
11793 {
11794 return (void*)entry_vkCreateRenderPass;
11795 }
11796 if (!strcmp(name, "vkDestroyRenderPass"))
11797 {
11798 return (void*)entry_vkDestroyRenderPass;
11799 }
11800 if (!strcmp(name, "vkGetRenderAreaGranularity"))
11801 {
11802 return (void*)entry_vkGetRenderAreaGranularity;
11803 }
11804 if (!strcmp(name, "vkCreateCommandPool"))
11805 {
11806 return (void*)entry_vkCreateCommandPool;
11807 }
11808 if (!strcmp(name, "vkDestroyCommandPool"))
11809 {
11810 return (void*)entry_vkDestroyCommandPool;
11811 }
11812 if (!strcmp(name, "vkResetCommandPool"))
11813 {
11814 return (void*)entry_vkResetCommandPool;
11815 }
11816 if (!strcmp(name, "vkAllocateCommandBuffers"))
11817 {
11818 return (void*)entry_vkAllocateCommandBuffers;
11819 }
11820 if (!strcmp(name, "vkFreeCommandBuffers"))
11821 {
11822 return (void*)entry_vkFreeCommandBuffers;
11823 }
11824 if (!strcmp(name, "vkBeginCommandBuffer"))
11825 {
11826 return (void*)entry_vkBeginCommandBuffer;
11827 }
11828 if (!strcmp(name, "vkEndCommandBuffer"))
11829 {
11830 return (void*)entry_vkEndCommandBuffer;
11831 }
11832 if (!strcmp(name, "vkResetCommandBuffer"))
11833 {
11834 return (void*)entry_vkResetCommandBuffer;
11835 }
11836 if (!strcmp(name, "vkCmdBindPipeline"))
11837 {
11838 return (void*)entry_vkCmdBindPipeline;
11839 }
11840 if (!strcmp(name, "vkCmdSetViewport"))
11841 {
11842 return (void*)entry_vkCmdSetViewport;
11843 }
11844 if (!strcmp(name, "vkCmdSetScissor"))
11845 {
11846 return (void*)entry_vkCmdSetScissor;
11847 }
11848 if (!strcmp(name, "vkCmdSetLineWidth"))
11849 {
11850 return (void*)entry_vkCmdSetLineWidth;
11851 }
11852 if (!strcmp(name, "vkCmdSetDepthBias"))
11853 {
11854 return (void*)entry_vkCmdSetDepthBias;
11855 }
11856 if (!strcmp(name, "vkCmdSetBlendConstants"))
11857 {
11858 return (void*)entry_vkCmdSetBlendConstants;
11859 }
11860 if (!strcmp(name, "vkCmdSetDepthBounds"))
11861 {
11862 return (void*)entry_vkCmdSetDepthBounds;
11863 }
11864 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
11865 {
11866 return (void*)entry_vkCmdSetStencilCompareMask;
11867 }
11868 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
11869 {
11870 return (void*)entry_vkCmdSetStencilWriteMask;
11871 }
11872 if (!strcmp(name, "vkCmdSetStencilReference"))
11873 {
11874 return (void*)entry_vkCmdSetStencilReference;
11875 }
11876 if (!strcmp(name, "vkCmdBindDescriptorSets"))
11877 {
11878 return (void*)entry_vkCmdBindDescriptorSets;
11879 }
11880 if (!strcmp(name, "vkCmdBindIndexBuffer"))
11881 {
11882 return (void*)entry_vkCmdBindIndexBuffer;
11883 }
11884 if (!strcmp(name, "vkCmdBindVertexBuffers"))
11885 {
11886 return (void*)entry_vkCmdBindVertexBuffers;
11887 }
11888 if (!strcmp(name, "vkCmdDraw"))
11889 {
11890 return (void*)entry_vkCmdDraw;
11891 }
11892 if (!strcmp(name, "vkCmdDrawIndexed"))
11893 {
11894 return (void*)entry_vkCmdDrawIndexed;
11895 }
11896 if (!strcmp(name, "vkCmdDrawIndirect"))
11897 {
11898 return (void*)entry_vkCmdDrawIndirect;
11899 }
11900 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
11901 {
11902 return (void*)entry_vkCmdDrawIndexedIndirect;
11903 }
11904 if (!strcmp(name, "vkCmdDispatch"))
11905 {
11906 return (void*)entry_vkCmdDispatch;
11907 }
11908 if (!strcmp(name, "vkCmdDispatchIndirect"))
11909 {
11910 return (void*)entry_vkCmdDispatchIndirect;
11911 }
11912 if (!strcmp(name, "vkCmdCopyBuffer"))
11913 {
11914 return (void*)entry_vkCmdCopyBuffer;
11915 }
11916 if (!strcmp(name, "vkCmdCopyImage"))
11917 {
11918 return (void*)entry_vkCmdCopyImage;
11919 }
11920 if (!strcmp(name, "vkCmdBlitImage"))
11921 {
11922 return (void*)entry_vkCmdBlitImage;
11923 }
11924 if (!strcmp(name, "vkCmdCopyBufferToImage"))
11925 {
11926 return (void*)entry_vkCmdCopyBufferToImage;
11927 }
11928 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
11929 {
11930 return (void*)entry_vkCmdCopyImageToBuffer;
11931 }
11932 if (!strcmp(name, "vkCmdUpdateBuffer"))
11933 {
11934 return (void*)entry_vkCmdUpdateBuffer;
11935 }
11936 if (!strcmp(name, "vkCmdFillBuffer"))
11937 {
11938 return (void*)entry_vkCmdFillBuffer;
11939 }
11940 if (!strcmp(name, "vkCmdClearColorImage"))
11941 {
11942 return (void*)entry_vkCmdClearColorImage;
11943 }
11944 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
11945 {
11946 return (void*)entry_vkCmdClearDepthStencilImage;
11947 }
11948 if (!strcmp(name, "vkCmdClearAttachments"))
11949 {
11950 return (void*)entry_vkCmdClearAttachments;
11951 }
11952 if (!strcmp(name, "vkCmdResolveImage"))
11953 {
11954 return (void*)entry_vkCmdResolveImage;
11955 }
11956 if (!strcmp(name, "vkCmdSetEvent"))
11957 {
11958 return (void*)entry_vkCmdSetEvent;
11959 }
11960 if (!strcmp(name, "vkCmdResetEvent"))
11961 {
11962 return (void*)entry_vkCmdResetEvent;
11963 }
11964 if (!strcmp(name, "vkCmdWaitEvents"))
11965 {
11966 return (void*)entry_vkCmdWaitEvents;
11967 }
11968 if (!strcmp(name, "vkCmdPipelineBarrier"))
11969 {
11970 return (void*)entry_vkCmdPipelineBarrier;
11971 }
11972 if (!strcmp(name, "vkCmdBeginQuery"))
11973 {
11974 return (void*)entry_vkCmdBeginQuery;
11975 }
11976 if (!strcmp(name, "vkCmdEndQuery"))
11977 {
11978 return (void*)entry_vkCmdEndQuery;
11979 }
11980 if (!strcmp(name, "vkCmdResetQueryPool"))
11981 {
11982 return (void*)entry_vkCmdResetQueryPool;
11983 }
11984 if (!strcmp(name, "vkCmdWriteTimestamp"))
11985 {
11986 return (void*)entry_vkCmdWriteTimestamp;
11987 }
11988 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
11989 {
11990 return (void*)entry_vkCmdCopyQueryPoolResults;
11991 }
11992 if (!strcmp(name, "vkCmdPushConstants"))
11993 {
11994 return (void*)entry_vkCmdPushConstants;
11995 }
11996 if (!strcmp(name, "vkCmdBeginRenderPass"))
11997 {
11998 return (void*)entry_vkCmdBeginRenderPass;
11999 }
12000 if (!strcmp(name, "vkCmdNextSubpass"))
12001 {
12002 return (void*)entry_vkCmdNextSubpass;
12003 }
12004 if (!strcmp(name, "vkCmdEndRenderPass"))
12005 {
12006 return (void*)entry_vkCmdEndRenderPass;
12007 }
12008 if (!strcmp(name, "vkCmdExecuteCommands"))
12009 {
12010 return (void*)entry_vkCmdExecuteCommands;
12011 }
12012#endif
12013#ifdef VK_VERSION_1_1
12014 if (!strcmp(name, "vkEnumerateInstanceVersion"))
12015 {
12016 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
12017 }
12018 if (!strcmp(name, "vkBindBufferMemory2"))
12019 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012020 return (void*)dynCheck_entry_vkBindBufferMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012021 }
12022 if (!strcmp(name, "vkBindImageMemory2"))
12023 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012024 return (void*)dynCheck_entry_vkBindImageMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012025 }
12026 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
12027 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012028 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012029 }
12030 if (!strcmp(name, "vkCmdSetDeviceMask"))
12031 {
12032 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
12033 }
12034 if (!strcmp(name, "vkCmdDispatchBase"))
12035 {
12036 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
12037 }
12038 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
12039 {
12040 return nullptr;
12041 }
12042 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
12043 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012044 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012045 }
12046 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
12047 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012048 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012049 }
12050 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
12051 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012052 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012053 }
12054 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
12055 {
12056 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
12057 }
12058 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
12059 {
12060 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
12061 }
12062 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
12063 {
12064 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
12065 }
12066 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
12067 {
12068 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
12069 }
12070 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
12071 {
12072 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
12073 }
12074 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
12075 {
12076 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
12077 }
12078 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
12079 {
12080 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
12081 }
12082 if (!strcmp(name, "vkTrimCommandPool"))
12083 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012084 return (void*)dynCheck_entry_vkTrimCommandPool;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012085 }
12086 if (!strcmp(name, "vkGetDeviceQueue2"))
12087 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012088 return (void*)dynCheck_entry_vkGetDeviceQueue2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012089 }
12090 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
12091 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012092 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012093 }
12094 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
12095 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012096 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012097 }
12098 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
12099 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012100 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012101 }
12102 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
12103 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012104 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012105 }
12106 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
12107 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012108 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012109 }
12110 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
12111 {
12112 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
12113 }
12114 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
12115 {
12116 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
12117 }
12118 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
12119 {
12120 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
12121 }
12122 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
12123 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012124 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012125 }
12126#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012127#ifdef VK_VERSION_1_2
12128 if (!strcmp(name, "vkCmdDrawIndirectCount"))
12129 {
12130 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
12131 return hasExt ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
12132 }
12133 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
12134 {
12135 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
12136 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
12137 }
12138 if (!strcmp(name, "vkCreateRenderPass2"))
12139 {
12140 return (void*)dynCheck_entry_vkCreateRenderPass2;
12141 }
12142 if (!strcmp(name, "vkCmdBeginRenderPass2"))
12143 {
12144 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
12145 return hasExt ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
12146 }
12147 if (!strcmp(name, "vkCmdNextSubpass2"))
12148 {
12149 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
12150 return hasExt ? (void*)entry_vkCmdNextSubpass2 : nullptr;
12151 }
12152 if (!strcmp(name, "vkCmdEndRenderPass2"))
12153 {
12154 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
12155 return hasExt ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
12156 }
12157 if (!strcmp(name, "vkResetQueryPool"))
12158 {
12159 return (void*)dynCheck_entry_vkResetQueryPool;
12160 }
12161 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
12162 {
12163 return (void*)dynCheck_entry_vkGetSemaphoreCounterValue;
12164 }
12165 if (!strcmp(name, "vkWaitSemaphores"))
12166 {
12167 return (void*)dynCheck_entry_vkWaitSemaphores;
12168 }
12169 if (!strcmp(name, "vkSignalSemaphore"))
12170 {
12171 return (void*)dynCheck_entry_vkSignalSemaphore;
12172 }
12173 if (!strcmp(name, "vkGetBufferDeviceAddress"))
12174 {
12175 return (void*)dynCheck_entry_vkGetBufferDeviceAddress;
12176 }
12177 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
12178 {
12179 return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddress;
12180 }
12181 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
12182 {
12183 return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress;
12184 }
12185#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012186#ifdef VK_KHR_surface
12187 if (!strcmp(name, "vkDestroySurfaceKHR"))
12188 {
12189 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
12190 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
12191 }
12192 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
12193 {
12194 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
12195 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
12196 }
12197 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
12198 {
12199 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
12200 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
12201 }
12202 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
12203 {
12204 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
12205 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
12206 }
12207 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
12208 {
12209 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
12210 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
12211 }
12212#endif
12213#ifdef VK_KHR_swapchain
12214 if (!strcmp(name, "vkCreateSwapchainKHR"))
12215 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012216 return (void*)dynCheck_entry_vkCreateSwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012217 }
12218 if (!strcmp(name, "vkDestroySwapchainKHR"))
12219 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012220 return (void*)dynCheck_entry_vkDestroySwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012221 }
12222 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
12223 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012224 return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012225 }
12226 if (!strcmp(name, "vkAcquireNextImageKHR"))
12227 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012228 return (void*)dynCheck_entry_vkAcquireNextImageKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012229 }
12230 if (!strcmp(name, "vkQueuePresentKHR"))
12231 {
12232 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
12233 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
12234 }
12235 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
12236 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012237 return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012238 }
12239 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
12240 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012241 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012242 }
12243 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
12244 {
12245 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
12246 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
12247 }
12248 if (!strcmp(name, "vkAcquireNextImage2KHR"))
12249 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012250 return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012251 }
12252#endif
12253#ifdef VK_KHR_display
12254 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
12255 {
12256 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
12257 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
12258 }
12259 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
12260 {
12261 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
12262 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
12263 }
12264 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
12265 {
12266 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
12267 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
12268 }
12269 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
12270 {
12271 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
12272 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
12273 }
12274 if (!strcmp(name, "vkCreateDisplayModeKHR"))
12275 {
12276 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
12277 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
12278 }
12279 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
12280 {
12281 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
12282 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
12283 }
12284 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
12285 {
12286 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
12287 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
12288 }
12289#endif
12290#ifdef VK_KHR_display_swapchain
12291 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
12292 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012293 return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012294 }
12295#endif
12296#ifdef VK_KHR_xlib_surface
12297 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
12298 {
12299 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
12300 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
12301 }
12302 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
12303 {
12304 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
12305 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
12306 }
12307#endif
12308#ifdef VK_KHR_xcb_surface
12309 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
12310 {
12311 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
12312 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
12313 }
12314 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
12315 {
12316 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
12317 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
12318 }
12319#endif
12320#ifdef VK_KHR_wayland_surface
12321 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
12322 {
12323 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
12324 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
12325 }
12326 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
12327 {
12328 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
12329 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
12330 }
12331#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012332#ifdef VK_KHR_android_surface
12333 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
12334 {
12335 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
12336 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
12337 }
12338#endif
12339#ifdef VK_KHR_win32_surface
12340 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
12341 {
12342 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
12343 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
12344 }
12345 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
12346 {
12347 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
12348 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
12349 }
12350#endif
Yilong Li353409a2022-01-04 02:37:56 -080012351#ifdef VK_KHR_video_queue
12352 if (!strcmp(name, "vkGetPhysicalDeviceVideoCapabilitiesKHR"))
12353 {
12354 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_video_queue");
12355 return hasExt ? (void*)entry_vkGetPhysicalDeviceVideoCapabilitiesKHR : nullptr;
12356 }
12357 if (!strcmp(name, "vkGetPhysicalDeviceVideoFormatPropertiesKHR"))
12358 {
12359 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_video_queue");
12360 return hasExt ? (void*)entry_vkGetPhysicalDeviceVideoFormatPropertiesKHR : nullptr;
12361 }
12362 if (!strcmp(name, "vkCreateVideoSessionKHR"))
12363 {
12364 return (void*)dynCheck_entry_vkCreateVideoSessionKHR;
12365 }
12366 if (!strcmp(name, "vkDestroyVideoSessionKHR"))
12367 {
12368 return (void*)dynCheck_entry_vkDestroyVideoSessionKHR;
12369 }
12370 if (!strcmp(name, "vkGetVideoSessionMemoryRequirementsKHR"))
12371 {
12372 return (void*)dynCheck_entry_vkGetVideoSessionMemoryRequirementsKHR;
12373 }
12374 if (!strcmp(name, "vkBindVideoSessionMemoryKHR"))
12375 {
12376 return (void*)dynCheck_entry_vkBindVideoSessionMemoryKHR;
12377 }
12378 if (!strcmp(name, "vkCreateVideoSessionParametersKHR"))
12379 {
12380 return (void*)dynCheck_entry_vkCreateVideoSessionParametersKHR;
12381 }
12382 if (!strcmp(name, "vkUpdateVideoSessionParametersKHR"))
12383 {
12384 return (void*)dynCheck_entry_vkUpdateVideoSessionParametersKHR;
12385 }
12386 if (!strcmp(name, "vkDestroyVideoSessionParametersKHR"))
12387 {
12388 return (void*)dynCheck_entry_vkDestroyVideoSessionParametersKHR;
12389 }
12390 if (!strcmp(name, "vkCmdBeginVideoCodingKHR"))
12391 {
12392 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_video_queue");
12393 return hasExt ? (void*)entry_vkCmdBeginVideoCodingKHR : nullptr;
12394 }
12395 if (!strcmp(name, "vkCmdEndVideoCodingKHR"))
12396 {
12397 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_video_queue");
12398 return hasExt ? (void*)entry_vkCmdEndVideoCodingKHR : nullptr;
12399 }
12400 if (!strcmp(name, "vkCmdControlVideoCodingKHR"))
12401 {
12402 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_video_queue");
12403 return hasExt ? (void*)entry_vkCmdControlVideoCodingKHR : nullptr;
12404 }
12405#endif
12406#ifdef VK_KHR_video_decode_queue
12407 if (!strcmp(name, "vkCmdDecodeVideoKHR"))
12408 {
12409 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_video_decode_queue");
12410 return hasExt ? (void*)entry_vkCmdDecodeVideoKHR : nullptr;
12411 }
12412#endif
12413#ifdef VK_KHR_dynamic_rendering
12414 if (!strcmp(name, "vkCmdBeginRenderingKHR"))
12415 {
12416 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_dynamic_rendering");
12417 return hasExt ? (void*)entry_vkCmdBeginRenderingKHR : nullptr;
12418 }
12419 if (!strcmp(name, "vkCmdEndRenderingKHR"))
12420 {
12421 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_dynamic_rendering");
12422 return hasExt ? (void*)entry_vkCmdEndRenderingKHR : nullptr;
12423 }
12424#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012425#ifdef VK_KHR_get_physical_device_properties2
12426 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
12427 {
12428 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
12429 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
12430 }
12431 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
12432 {
12433 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
12434 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
12435 }
12436 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
12437 {
12438 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
12439 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
12440 }
12441 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
12442 {
12443 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
12444 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
12445 }
12446 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
12447 {
12448 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
12449 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
12450 }
12451 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
12452 {
12453 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
12454 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
12455 }
12456 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
12457 {
12458 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
12459 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
12460 }
12461#endif
12462#ifdef VK_KHR_device_group
12463 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
12464 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012465 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012466 }
12467 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
12468 {
12469 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
12470 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
12471 }
12472 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
12473 {
12474 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
12475 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
12476 }
12477#endif
12478#ifdef VK_KHR_maintenance1
12479 if (!strcmp(name, "vkTrimCommandPoolKHR"))
12480 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012481 return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012482 }
12483#endif
12484#ifdef VK_KHR_device_group_creation
12485 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
12486 {
12487 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
12488 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
12489 }
12490#endif
12491#ifdef VK_KHR_external_memory_capabilities
12492 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
12493 {
12494 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
12495 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
12496 }
12497#endif
12498#ifdef VK_KHR_external_memory_win32
12499 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
12500 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012501 return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012502 }
12503 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
12504 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012505 return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012506 }
12507#endif
12508#ifdef VK_KHR_external_memory_fd
12509 if (!strcmp(name, "vkGetMemoryFdKHR"))
12510 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012511 return (void*)dynCheck_entry_vkGetMemoryFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012512 }
12513 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
12514 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012515 return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012516 }
12517#endif
12518#ifdef VK_KHR_external_semaphore_capabilities
12519 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
12520 {
12521 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
12522 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
12523 }
12524#endif
12525#ifdef VK_KHR_external_semaphore_win32
12526 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
12527 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012528 return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012529 }
12530 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
12531 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012532 return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012533 }
12534#endif
12535#ifdef VK_KHR_external_semaphore_fd
12536 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
12537 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012538 return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012539 }
12540 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
12541 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012542 return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012543 }
12544#endif
12545#ifdef VK_KHR_push_descriptor
12546 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
12547 {
12548 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
12549 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
12550 }
12551 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
12552 {
12553 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
12554 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
12555 }
12556#endif
12557#ifdef VK_KHR_descriptor_update_template
12558 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
12559 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012560 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012561 }
12562 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
12563 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012564 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012565 }
12566 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
12567 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012568 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012569 }
12570#endif
12571#ifdef VK_KHR_create_renderpass2
12572 if (!strcmp(name, "vkCreateRenderPass2KHR"))
12573 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012574 return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012575 }
12576 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
12577 {
12578 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
12579 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
12580 }
12581 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
12582 {
12583 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
12584 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
12585 }
12586 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
12587 {
12588 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
12589 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
12590 }
12591#endif
12592#ifdef VK_KHR_shared_presentable_image
12593 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
12594 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012595 return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012596 }
12597#endif
12598#ifdef VK_KHR_external_fence_capabilities
12599 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
12600 {
12601 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
12602 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
12603 }
12604#endif
12605#ifdef VK_KHR_external_fence_win32
12606 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
12607 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012608 return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012609 }
12610 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
12611 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012612 return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012613 }
12614#endif
12615#ifdef VK_KHR_external_fence_fd
12616 if (!strcmp(name, "vkImportFenceFdKHR"))
12617 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012618 return (void*)dynCheck_entry_vkImportFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012619 }
12620 if (!strcmp(name, "vkGetFenceFdKHR"))
12621 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012622 return (void*)dynCheck_entry_vkGetFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012623 }
12624#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012625#ifdef VK_KHR_performance_query
12626 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
12627 {
12628 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
12629 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
12630 }
12631 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
12632 {
12633 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
12634 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
12635 }
12636 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
12637 {
12638 return (void*)dynCheck_entry_vkAcquireProfilingLockKHR;
12639 }
12640 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
12641 {
12642 return (void*)dynCheck_entry_vkReleaseProfilingLockKHR;
12643 }
12644#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012645#ifdef VK_KHR_get_surface_capabilities2
12646 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
12647 {
12648 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
12649 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
12650 }
12651 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
12652 {
12653 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
12654 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
12655 }
12656#endif
12657#ifdef VK_KHR_get_display_properties2
12658 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
12659 {
12660 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
12661 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
12662 }
12663 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
12664 {
12665 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
12666 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
12667 }
12668 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
12669 {
12670 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
12671 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
12672 }
12673 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
12674 {
12675 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
12676 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
12677 }
12678#endif
12679#ifdef VK_KHR_get_memory_requirements2
12680 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
12681 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012682 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012683 }
12684 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
12685 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012686 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012687 }
12688 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
12689 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012690 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012691 }
12692#endif
12693#ifdef VK_KHR_sampler_ycbcr_conversion
12694 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
12695 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012696 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012697 }
12698 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
12699 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012700 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012701 }
12702#endif
12703#ifdef VK_KHR_bind_memory2
12704 if (!strcmp(name, "vkBindBufferMemory2KHR"))
12705 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012706 return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012707 }
12708 if (!strcmp(name, "vkBindImageMemory2KHR"))
12709 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012710 return (void*)dynCheck_entry_vkBindImageMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012711 }
12712#endif
12713#ifdef VK_KHR_maintenance3
12714 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
12715 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012716 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012717 }
12718#endif
12719#ifdef VK_KHR_draw_indirect_count
12720 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
12721 {
12722 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
12723 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
12724 }
12725 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
12726 {
12727 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
12728 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
12729 }
12730#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012731#ifdef VK_KHR_timeline_semaphore
12732 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
12733 {
12734 return (void*)dynCheck_entry_vkGetSemaphoreCounterValueKHR;
12735 }
12736 if (!strcmp(name, "vkWaitSemaphoresKHR"))
12737 {
12738 return (void*)dynCheck_entry_vkWaitSemaphoresKHR;
12739 }
12740 if (!strcmp(name, "vkSignalSemaphoreKHR"))
12741 {
12742 return (void*)dynCheck_entry_vkSignalSemaphoreKHR;
12743 }
12744#endif
12745#ifdef VK_KHR_fragment_shading_rate
12746 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
12747 {
12748 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_fragment_shading_rate");
12749 return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
12750 }
12751 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
12752 {
12753 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_fragment_shading_rate");
12754 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateKHR : nullptr;
12755 }
12756#endif
Yilong Li353409a2022-01-04 02:37:56 -080012757#ifdef VK_KHR_present_wait
12758 if (!strcmp(name, "vkWaitForPresentKHR"))
12759 {
12760 return (void*)dynCheck_entry_vkWaitForPresentKHR;
12761 }
12762#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012763#ifdef VK_KHR_buffer_device_address
12764 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
12765 {
12766 return (void*)dynCheck_entry_vkGetBufferDeviceAddressKHR;
12767 }
12768 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
12769 {
12770 return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR;
12771 }
12772 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
12773 {
12774 return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR;
12775 }
12776#endif
12777#ifdef VK_KHR_deferred_host_operations
12778 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
12779 {
12780 return (void*)dynCheck_entry_vkCreateDeferredOperationKHR;
12781 }
12782 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
12783 {
12784 return (void*)dynCheck_entry_vkDestroyDeferredOperationKHR;
12785 }
12786 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
12787 {
12788 return (void*)dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR;
12789 }
12790 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
12791 {
12792 return (void*)dynCheck_entry_vkGetDeferredOperationResultKHR;
12793 }
12794 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
12795 {
12796 return (void*)dynCheck_entry_vkDeferredOperationJoinKHR;
12797 }
12798#endif
12799#ifdef VK_KHR_pipeline_executable_properties
12800 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
12801 {
12802 return (void*)dynCheck_entry_vkGetPipelineExecutablePropertiesKHR;
12803 }
12804 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
12805 {
12806 return (void*)dynCheck_entry_vkGetPipelineExecutableStatisticsKHR;
12807 }
12808 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
12809 {
12810 return (void*)dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR;
12811 }
12812#endif
Yilong Li353409a2022-01-04 02:37:56 -080012813#ifdef VK_KHR_video_encode_queue
12814 if (!strcmp(name, "vkCmdEncodeVideoKHR"))
12815 {
12816 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_video_encode_queue");
12817 return hasExt ? (void*)entry_vkCmdEncodeVideoKHR : nullptr;
12818 }
12819#endif
12820#ifdef VK_KHR_synchronization2
12821 if (!strcmp(name, "vkCmdSetEvent2KHR"))
12822 {
12823 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_synchronization2");
12824 return hasExt ? (void*)entry_vkCmdSetEvent2KHR : nullptr;
12825 }
12826 if (!strcmp(name, "vkCmdResetEvent2KHR"))
12827 {
12828 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_synchronization2");
12829 return hasExt ? (void*)entry_vkCmdResetEvent2KHR : nullptr;
12830 }
12831 if (!strcmp(name, "vkCmdWaitEvents2KHR"))
12832 {
12833 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_synchronization2");
12834 return hasExt ? (void*)entry_vkCmdWaitEvents2KHR : nullptr;
12835 }
12836 if (!strcmp(name, "vkCmdPipelineBarrier2KHR"))
12837 {
12838 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_synchronization2");
12839 return hasExt ? (void*)entry_vkCmdPipelineBarrier2KHR : nullptr;
12840 }
12841 if (!strcmp(name, "vkCmdWriteTimestamp2KHR"))
12842 {
12843 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_synchronization2");
12844 return hasExt ? (void*)entry_vkCmdWriteTimestamp2KHR : nullptr;
12845 }
12846 if (!strcmp(name, "vkQueueSubmit2KHR"))
12847 {
12848 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_synchronization2");
12849 return hasExt ? (void*)entry_vkQueueSubmit2KHR : nullptr;
12850 }
12851 if (!strcmp(name, "vkCmdWriteBufferMarker2AMD"))
12852 {
12853 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_synchronization2");
12854 return hasExt ? (void*)entry_vkCmdWriteBufferMarker2AMD : nullptr;
12855 }
12856 if (!strcmp(name, "vkGetQueueCheckpointData2NV"))
12857 {
12858 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_synchronization2");
12859 return hasExt ? (void*)entry_vkGetQueueCheckpointData2NV : nullptr;
12860 }
12861#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012862#ifdef VK_KHR_copy_commands2
12863 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
12864 {
12865 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
12866 return hasExt ? (void*)entry_vkCmdCopyBuffer2KHR : nullptr;
12867 }
12868 if (!strcmp(name, "vkCmdCopyImage2KHR"))
12869 {
12870 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
12871 return hasExt ? (void*)entry_vkCmdCopyImage2KHR : nullptr;
12872 }
12873 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
12874 {
12875 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
12876 return hasExt ? (void*)entry_vkCmdCopyBufferToImage2KHR : nullptr;
12877 }
12878 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
12879 {
12880 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
12881 return hasExt ? (void*)entry_vkCmdCopyImageToBuffer2KHR : nullptr;
12882 }
12883 if (!strcmp(name, "vkCmdBlitImage2KHR"))
12884 {
12885 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
12886 return hasExt ? (void*)entry_vkCmdBlitImage2KHR : nullptr;
12887 }
12888 if (!strcmp(name, "vkCmdResolveImage2KHR"))
12889 {
12890 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
12891 return hasExt ? (void*)entry_vkCmdResolveImage2KHR : nullptr;
12892 }
12893#endif
Yilong Li353409a2022-01-04 02:37:56 -080012894#ifdef VK_KHR_maintenance4
12895 if (!strcmp(name, "vkGetDeviceBufferMemoryRequirementsKHR"))
12896 {
12897 return (void*)dynCheck_entry_vkGetDeviceBufferMemoryRequirementsKHR;
12898 }
12899 if (!strcmp(name, "vkGetDeviceImageMemoryRequirementsKHR"))
12900 {
12901 return (void*)dynCheck_entry_vkGetDeviceImageMemoryRequirementsKHR;
12902 }
12903 if (!strcmp(name, "vkGetDeviceImageSparseMemoryRequirementsKHR"))
12904 {
12905 return (void*)dynCheck_entry_vkGetDeviceImageSparseMemoryRequirementsKHR;
12906 }
12907#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012908#ifdef VK_ANDROID_native_buffer
12909 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
12910 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012911 return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012912 }
12913 if (!strcmp(name, "vkAcquireImageANDROID"))
12914 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012915 return (void*)dynCheck_entry_vkAcquireImageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012916 }
12917 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
12918 {
12919 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
12920 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
12921 }
12922#endif
12923#ifdef VK_EXT_debug_report
12924 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
12925 {
12926 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
12927 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
12928 }
12929 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
12930 {
12931 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
12932 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
12933 }
12934 if (!strcmp(name, "vkDebugReportMessageEXT"))
12935 {
12936 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
12937 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
12938 }
12939#endif
12940#ifdef VK_EXT_debug_marker
12941 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
12942 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012943 return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012944 }
12945 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
12946 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012947 return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012948 }
12949 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
12950 {
12951 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
12952 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
12953 }
12954 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
12955 {
12956 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
12957 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
12958 }
12959 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
12960 {
12961 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
12962 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
12963 }
12964#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012965#ifdef VK_EXT_transform_feedback
12966 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
12967 {
12968 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
12969 return hasExt ? (void*)entry_vkCmdBindTransformFeedbackBuffersEXT : nullptr;
12970 }
12971 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
12972 {
12973 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
12974 return hasExt ? (void*)entry_vkCmdBeginTransformFeedbackEXT : nullptr;
12975 }
12976 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
12977 {
12978 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
12979 return hasExt ? (void*)entry_vkCmdEndTransformFeedbackEXT : nullptr;
12980 }
12981 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
12982 {
12983 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
12984 return hasExt ? (void*)entry_vkCmdBeginQueryIndexedEXT : nullptr;
12985 }
12986 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
12987 {
12988 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
12989 return hasExt ? (void*)entry_vkCmdEndQueryIndexedEXT : nullptr;
12990 }
12991 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
12992 {
12993 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
12994 return hasExt ? (void*)entry_vkCmdDrawIndirectByteCountEXT : nullptr;
12995 }
12996#endif
Yilong Li353409a2022-01-04 02:37:56 -080012997#ifdef VK_NVX_binary_import
12998 if (!strcmp(name, "vkCreateCuModuleNVX"))
12999 {
13000 return (void*)dynCheck_entry_vkCreateCuModuleNVX;
13001 }
13002 if (!strcmp(name, "vkCreateCuFunctionNVX"))
13003 {
13004 return (void*)dynCheck_entry_vkCreateCuFunctionNVX;
13005 }
13006 if (!strcmp(name, "vkDestroyCuModuleNVX"))
13007 {
13008 return (void*)dynCheck_entry_vkDestroyCuModuleNVX;
13009 }
13010 if (!strcmp(name, "vkDestroyCuFunctionNVX"))
13011 {
13012 return (void*)dynCheck_entry_vkDestroyCuFunctionNVX;
13013 }
13014 if (!strcmp(name, "vkCmdCuLaunchKernelNVX"))
13015 {
13016 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_binary_import");
13017 return hasExt ? (void*)entry_vkCmdCuLaunchKernelNVX : nullptr;
13018 }
13019#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013020#ifdef VK_NVX_image_view_handle
13021 if (!strcmp(name, "vkGetImageViewHandleNVX"))
13022 {
13023 return (void*)dynCheck_entry_vkGetImageViewHandleNVX;
13024 }
13025 if (!strcmp(name, "vkGetImageViewAddressNVX"))
13026 {
13027 return (void*)dynCheck_entry_vkGetImageViewAddressNVX;
13028 }
13029#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013030#ifdef VK_AMD_draw_indirect_count
13031 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
13032 {
13033 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
13034 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
13035 }
13036 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
13037 {
13038 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
13039 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
13040 }
13041#endif
13042#ifdef VK_AMD_shader_info
13043 if (!strcmp(name, "vkGetShaderInfoAMD"))
13044 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013045 return (void*)dynCheck_entry_vkGetShaderInfoAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013046 }
13047#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013048#ifdef VK_GGP_stream_descriptor_surface
13049 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
13050 {
13051 bool hasExt = resources->hasInstanceExtension(instance, "VK_GGP_stream_descriptor_surface");
13052 return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
13053 }
13054#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013055#ifdef VK_NV_external_memory_capabilities
13056 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
13057 {
13058 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
13059 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
13060 }
13061#endif
13062#ifdef VK_NV_external_memory_win32
13063 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
13064 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013065 return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013066 }
13067#endif
13068#ifdef VK_NN_vi_surface
13069 if (!strcmp(name, "vkCreateViSurfaceNN"))
13070 {
13071 bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
13072 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
13073 }
13074#endif
13075#ifdef VK_EXT_conditional_rendering
13076 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
13077 {
13078 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
13079 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
13080 }
13081 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
13082 {
13083 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
13084 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
13085 }
13086#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013087#ifdef VK_NV_clip_space_w_scaling
13088 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
13089 {
13090 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling");
13091 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
13092 }
13093#endif
13094#ifdef VK_EXT_direct_mode_display
13095 if (!strcmp(name, "vkReleaseDisplayEXT"))
13096 {
13097 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
13098 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
13099 }
13100#endif
13101#ifdef VK_EXT_acquire_xlib_display
13102 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
13103 {
13104 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
13105 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
13106 }
13107 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
13108 {
13109 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
13110 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
13111 }
13112#endif
13113#ifdef VK_EXT_display_surface_counter
13114 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
13115 {
13116 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
13117 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
13118 }
13119#endif
13120#ifdef VK_EXT_display_control
13121 if (!strcmp(name, "vkDisplayPowerControlEXT"))
13122 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013123 return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013124 }
13125 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
13126 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013127 return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013128 }
13129 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
13130 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013131 return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013132 }
13133 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
13134 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013135 return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013136 }
13137#endif
13138#ifdef VK_GOOGLE_display_timing
13139 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
13140 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013141 return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013142 }
13143 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
13144 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013145 return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013146 }
13147#endif
13148#ifdef VK_EXT_discard_rectangles
13149 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
13150 {
13151 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles");
13152 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
13153 }
13154#endif
13155#ifdef VK_EXT_hdr_metadata
13156 if (!strcmp(name, "vkSetHdrMetadataEXT"))
13157 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013158 return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013159 }
13160#endif
13161#ifdef VK_MVK_ios_surface
13162 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
13163 {
13164 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
13165 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
13166 }
13167#endif
13168#ifdef VK_MVK_macos_surface
13169 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
13170 {
13171 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
13172 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
13173 }
13174#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013175#ifdef VK_MVK_moltenvk
13176 if (!strcmp(name, "vkGetMTLDeviceMVK"))
13177 {
13178 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
13179 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
13180 }
13181 if (!strcmp(name, "vkSetMTLTextureMVK"))
13182 {
13183 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
13184 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
13185 }
13186 if (!strcmp(name, "vkGetMTLTextureMVK"))
13187 {
13188 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
13189 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
13190 }
13191 if (!strcmp(name, "vkGetMTLBufferMVK"))
13192 {
13193 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
13194 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
13195 }
13196 if (!strcmp(name, "vkUseIOSurfaceMVK"))
13197 {
13198 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
13199 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
13200 }
13201 if (!strcmp(name, "vkGetIOSurfaceMVK"))
13202 {
13203 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
13204 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
13205 }
13206#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013207#ifdef VK_EXT_debug_utils
13208 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
13209 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013210 return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013211 }
13212 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
13213 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013214 return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013215 }
13216 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
13217 {
13218 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
13219 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
13220 }
13221 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
13222 {
13223 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
13224 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
13225 }
13226 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
13227 {
13228 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
13229 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
13230 }
13231 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
13232 {
13233 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
13234 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
13235 }
13236 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
13237 {
13238 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
13239 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
13240 }
13241 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
13242 {
13243 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
13244 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
13245 }
13246 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
13247 {
13248 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
13249 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
13250 }
13251 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
13252 {
13253 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
13254 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
13255 }
13256 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
13257 {
13258 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
13259 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
13260 }
13261#endif
13262#ifdef VK_ANDROID_external_memory_android_hardware_buffer
13263 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
13264 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013265 return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013266 }
13267 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
13268 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013269 return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013270 }
13271#endif
13272#ifdef VK_EXT_sample_locations
13273 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
13274 {
13275 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
13276 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
13277 }
13278 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
13279 {
13280 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
13281 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
13282 }
13283#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013284#ifdef VK_EXT_image_drm_format_modifier
13285 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
13286 {
13287 return (void*)dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT;
13288 }
13289#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013290#ifdef VK_EXT_validation_cache
13291 if (!strcmp(name, "vkCreateValidationCacheEXT"))
13292 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013293 return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013294 }
13295 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
13296 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013297 return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013298 }
13299 if (!strcmp(name, "vkMergeValidationCachesEXT"))
13300 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013301 return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013302 }
13303 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
13304 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013305 return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013306 }
13307#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013308#ifdef VK_NV_shading_rate_image
13309 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
13310 {
13311 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
13312 return hasExt ? (void*)entry_vkCmdBindShadingRateImageNV : nullptr;
13313 }
13314 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
13315 {
13316 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
13317 return hasExt ? (void*)entry_vkCmdSetViewportShadingRatePaletteNV : nullptr;
13318 }
13319 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
13320 {
13321 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
13322 return hasExt ? (void*)entry_vkCmdSetCoarseSampleOrderNV : nullptr;
13323 }
13324#endif
13325#ifdef VK_NV_ray_tracing
13326 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
13327 {
13328 return (void*)dynCheck_entry_vkCreateAccelerationStructureNV;
13329 }
13330 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
13331 {
13332 return (void*)dynCheck_entry_vkDestroyAccelerationStructureNV;
13333 }
13334 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
13335 {
13336 return (void*)dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV;
13337 }
13338 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
13339 {
13340 return (void*)dynCheck_entry_vkBindAccelerationStructureMemoryNV;
13341 }
13342 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
13343 {
13344 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
13345 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructureNV : nullptr;
13346 }
13347 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
13348 {
13349 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
13350 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureNV : nullptr;
13351 }
13352 if (!strcmp(name, "vkCmdTraceRaysNV"))
13353 {
13354 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
13355 return hasExt ? (void*)entry_vkCmdTraceRaysNV : nullptr;
13356 }
13357 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
13358 {
13359 return (void*)dynCheck_entry_vkCreateRayTracingPipelinesNV;
13360 }
13361 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
13362 {
13363 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR;
13364 }
13365 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
13366 {
13367 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV;
13368 }
13369 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
13370 {
13371 return (void*)dynCheck_entry_vkGetAccelerationStructureHandleNV;
13372 }
13373 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
13374 {
13375 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
13376 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesNV : nullptr;
13377 }
13378 if (!strcmp(name, "vkCompileDeferredNV"))
13379 {
13380 return (void*)dynCheck_entry_vkCompileDeferredNV;
13381 }
13382#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013383#ifdef VK_EXT_external_memory_host
13384 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
13385 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013386 return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013387 }
13388#endif
13389#ifdef VK_AMD_buffer_marker
13390 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
13391 {
13392 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker");
13393 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
13394 }
13395#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013396#ifdef VK_EXT_calibrated_timestamps
13397 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
13398 {
13399 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_calibrated_timestamps");
13400 return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
13401 }
13402 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
13403 {
13404 return (void*)dynCheck_entry_vkGetCalibratedTimestampsEXT;
13405 }
13406#endif
13407#ifdef VK_NV_mesh_shader
13408 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
13409 {
13410 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
13411 return hasExt ? (void*)entry_vkCmdDrawMeshTasksNV : nullptr;
13412 }
13413 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
13414 {
13415 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
13416 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectNV : nullptr;
13417 }
13418 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
13419 {
13420 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
13421 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountNV : nullptr;
13422 }
13423#endif
13424#ifdef VK_NV_scissor_exclusive
13425 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
13426 {
13427 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_scissor_exclusive");
13428 return hasExt ? (void*)entry_vkCmdSetExclusiveScissorNV : nullptr;
13429 }
13430#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013431#ifdef VK_NV_device_diagnostic_checkpoints
13432 if (!strcmp(name, "vkCmdSetCheckpointNV"))
13433 {
13434 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
13435 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
13436 }
13437 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
13438 {
13439 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
13440 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
13441 }
13442#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013443#ifdef VK_INTEL_performance_query
13444 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013445 {
Yilong Lia8d45f12021-02-07 02:30:21 -080013446 return (void*)dynCheck_entry_vkInitializePerformanceApiINTEL;
13447 }
13448 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
13449 {
13450 return (void*)dynCheck_entry_vkUninitializePerformanceApiINTEL;
13451 }
13452 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
13453 {
13454 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
13455 return hasExt ? (void*)entry_vkCmdSetPerformanceMarkerINTEL : nullptr;
13456 }
13457 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
13458 {
13459 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
13460 return hasExt ? (void*)entry_vkCmdSetPerformanceStreamMarkerINTEL : nullptr;
13461 }
13462 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
13463 {
13464 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
13465 return hasExt ? (void*)entry_vkCmdSetPerformanceOverrideINTEL : nullptr;
13466 }
13467 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
13468 {
13469 return (void*)dynCheck_entry_vkAcquirePerformanceConfigurationINTEL;
13470 }
13471 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
13472 {
13473 return (void*)dynCheck_entry_vkReleasePerformanceConfigurationINTEL;
13474 }
13475 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
13476 {
13477 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
13478 return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
13479 }
13480 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
13481 {
13482 return (void*)dynCheck_entry_vkGetPerformanceParameterINTEL;
13483 }
13484#endif
13485#ifdef VK_AMD_display_native_hdr
13486 if (!strcmp(name, "vkSetLocalDimmingAMD"))
13487 {
13488 return (void*)dynCheck_entry_vkSetLocalDimmingAMD;
13489 }
13490#endif
13491#ifdef VK_FUCHSIA_imagepipe_surface
13492 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
13493 {
13494 bool hasExt = resources->hasInstanceExtension(instance, "VK_FUCHSIA_imagepipe_surface");
13495 return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
13496 }
13497#endif
13498#ifdef VK_EXT_metal_surface
13499 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
13500 {
13501 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_metal_surface");
13502 return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013503 }
13504#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013505#ifdef VK_EXT_buffer_device_address
13506 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
13507 {
13508 return (void*)dynCheck_entry_vkGetBufferDeviceAddressEXT;
13509 }
13510#endif
13511#ifdef VK_EXT_tooling_info
13512 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
13513 {
13514 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_tooling_info");
13515 return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
13516 }
13517#endif
13518#ifdef VK_NV_cooperative_matrix
13519 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
13520 {
13521 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_cooperative_matrix");
13522 return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
13523 }
13524#endif
13525#ifdef VK_NV_coverage_reduction_mode
13526 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
13527 {
13528 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_coverage_reduction_mode");
13529 return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
13530 }
13531#endif
13532#ifdef VK_EXT_full_screen_exclusive
13533 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
13534 {
13535 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_full_screen_exclusive");
13536 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
13537 }
13538 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
13539 {
13540 return (void*)dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT;
13541 }
13542 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
13543 {
13544 return (void*)dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT;
13545 }
13546 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
13547 {
13548 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT;
13549 }
13550#endif
13551#ifdef VK_EXT_headless_surface
13552 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
13553 {
13554 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_headless_surface");
13555 return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
13556 }
13557#endif
13558#ifdef VK_EXT_line_rasterization
13559 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
13560 {
13561 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_line_rasterization");
13562 return hasExt ? (void*)entry_vkCmdSetLineStippleEXT : nullptr;
13563 }
13564#endif
13565#ifdef VK_EXT_host_query_reset
13566 if (!strcmp(name, "vkResetQueryPoolEXT"))
13567 {
13568 return (void*)dynCheck_entry_vkResetQueryPoolEXT;
13569 }
13570#endif
13571#ifdef VK_EXT_extended_dynamic_state
13572 if (!strcmp(name, "vkCmdSetCullModeEXT"))
13573 {
13574 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13575 return hasExt ? (void*)entry_vkCmdSetCullModeEXT : nullptr;
13576 }
13577 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
13578 {
13579 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13580 return hasExt ? (void*)entry_vkCmdSetFrontFaceEXT : nullptr;
13581 }
13582 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
13583 {
13584 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13585 return hasExt ? (void*)entry_vkCmdSetPrimitiveTopologyEXT : nullptr;
13586 }
13587 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
13588 {
13589 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13590 return hasExt ? (void*)entry_vkCmdSetViewportWithCountEXT : nullptr;
13591 }
13592 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
13593 {
13594 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13595 return hasExt ? (void*)entry_vkCmdSetScissorWithCountEXT : nullptr;
13596 }
13597 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
13598 {
13599 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13600 return hasExt ? (void*)entry_vkCmdBindVertexBuffers2EXT : nullptr;
13601 }
13602 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
13603 {
13604 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13605 return hasExt ? (void*)entry_vkCmdSetDepthTestEnableEXT : nullptr;
13606 }
13607 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
13608 {
13609 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13610 return hasExt ? (void*)entry_vkCmdSetDepthWriteEnableEXT : nullptr;
13611 }
13612 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
13613 {
13614 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13615 return hasExt ? (void*)entry_vkCmdSetDepthCompareOpEXT : nullptr;
13616 }
13617 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
13618 {
13619 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13620 return hasExt ? (void*)entry_vkCmdSetDepthBoundsTestEnableEXT : nullptr;
13621 }
13622 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
13623 {
13624 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13625 return hasExt ? (void*)entry_vkCmdSetStencilTestEnableEXT : nullptr;
13626 }
13627 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
13628 {
13629 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13630 return hasExt ? (void*)entry_vkCmdSetStencilOpEXT : nullptr;
13631 }
13632#endif
13633#ifdef VK_NV_device_generated_commands
13634 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
13635 {
13636 return (void*)dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV;
13637 }
13638 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
13639 {
13640 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
13641 return hasExt ? (void*)entry_vkCmdPreprocessGeneratedCommandsNV : nullptr;
13642 }
13643 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
13644 {
13645 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
13646 return hasExt ? (void*)entry_vkCmdExecuteGeneratedCommandsNV : nullptr;
13647 }
13648 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
13649 {
13650 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
13651 return hasExt ? (void*)entry_vkCmdBindPipelineShaderGroupNV : nullptr;
13652 }
13653 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
13654 {
13655 return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNV;
13656 }
13657 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
13658 {
13659 return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNV;
13660 }
13661#endif
Yilong Li353409a2022-01-04 02:37:56 -080013662#ifdef VK_EXT_acquire_drm_display
13663 if (!strcmp(name, "vkAcquireDrmDisplayEXT"))
13664 {
13665 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_drm_display");
13666 return hasExt ? (void*)entry_vkAcquireDrmDisplayEXT : nullptr;
13667 }
13668 if (!strcmp(name, "vkGetDrmDisplayEXT"))
13669 {
13670 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_drm_display");
13671 return hasExt ? (void*)entry_vkGetDrmDisplayEXT : nullptr;
13672 }
13673#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013674#ifdef VK_EXT_private_data
13675 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
13676 {
13677 return (void*)dynCheck_entry_vkCreatePrivateDataSlotEXT;
13678 }
13679 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
13680 {
13681 return (void*)dynCheck_entry_vkDestroyPrivateDataSlotEXT;
13682 }
13683 if (!strcmp(name, "vkSetPrivateDataEXT"))
13684 {
13685 return (void*)dynCheck_entry_vkSetPrivateDataEXT;
13686 }
13687 if (!strcmp(name, "vkGetPrivateDataEXT"))
13688 {
13689 return (void*)dynCheck_entry_vkGetPrivateDataEXT;
13690 }
13691#endif
13692#ifdef VK_NV_fragment_shading_rate_enums
13693 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
13694 {
13695 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_fragment_shading_rate_enums");
13696 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateEnumNV : nullptr;
13697 }
13698#endif
Yilong Li353409a2022-01-04 02:37:56 -080013699#ifdef VK_NV_acquire_winrt_display
13700 if (!strcmp(name, "vkAcquireWinrtDisplayNV"))
13701 {
13702 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_acquire_winrt_display");
13703 return hasExt ? (void*)entry_vkAcquireWinrtDisplayNV : nullptr;
13704 }
13705 if (!strcmp(name, "vkGetWinrtDisplayNV"))
13706 {
13707 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_acquire_winrt_display");
13708 return hasExt ? (void*)entry_vkGetWinrtDisplayNV : nullptr;
13709 }
13710#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013711#ifdef VK_EXT_directfb_surface
13712 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
13713 {
13714 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
13715 return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
13716 }
13717 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
13718 {
13719 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
13720 return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
13721 }
13722#endif
Yilong Li353409a2022-01-04 02:37:56 -080013723#ifdef VK_EXT_vertex_input_dynamic_state
13724 if (!strcmp(name, "vkCmdSetVertexInputEXT"))
13725 {
13726 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_vertex_input_dynamic_state");
13727 return hasExt ? (void*)entry_vkCmdSetVertexInputEXT : nullptr;
13728 }
13729#endif
13730#ifdef VK_FUCHSIA_external_memory
13731 if (!strcmp(name, "vkGetMemoryZirconHandleFUCHSIA"))
13732 {
13733 return (void*)dynCheck_entry_vkGetMemoryZirconHandleFUCHSIA;
13734 }
13735 if (!strcmp(name, "vkGetMemoryZirconHandlePropertiesFUCHSIA"))
13736 {
13737 return (void*)dynCheck_entry_vkGetMemoryZirconHandlePropertiesFUCHSIA;
13738 }
13739#endif
13740#ifdef VK_FUCHSIA_external_semaphore
13741 if (!strcmp(name, "vkImportSemaphoreZirconHandleFUCHSIA"))
13742 {
13743 return (void*)dynCheck_entry_vkImportSemaphoreZirconHandleFUCHSIA;
13744 }
13745 if (!strcmp(name, "vkGetSemaphoreZirconHandleFUCHSIA"))
13746 {
13747 return (void*)dynCheck_entry_vkGetSemaphoreZirconHandleFUCHSIA;
13748 }
13749#endif
13750#ifdef VK_FUCHSIA_buffer_collection
13751 if (!strcmp(name, "vkCreateBufferCollectionFUCHSIA"))
13752 {
13753 return (void*)dynCheck_entry_vkCreateBufferCollectionFUCHSIA;
13754 }
13755 if (!strcmp(name, "vkSetBufferCollectionImageConstraintsFUCHSIA"))
13756 {
13757 return (void*)dynCheck_entry_vkSetBufferCollectionImageConstraintsFUCHSIA;
13758 }
13759 if (!strcmp(name, "vkSetBufferCollectionBufferConstraintsFUCHSIA"))
13760 {
13761 return (void*)dynCheck_entry_vkSetBufferCollectionBufferConstraintsFUCHSIA;
13762 }
13763 if (!strcmp(name, "vkDestroyBufferCollectionFUCHSIA"))
13764 {
13765 return (void*)dynCheck_entry_vkDestroyBufferCollectionFUCHSIA;
13766 }
13767 if (!strcmp(name, "vkGetBufferCollectionPropertiesFUCHSIA"))
13768 {
13769 return (void*)dynCheck_entry_vkGetBufferCollectionPropertiesFUCHSIA;
13770 }
13771#endif
13772#ifdef VK_HUAWEI_subpass_shading
13773 if (!strcmp(name, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI"))
13774 {
13775 return (void*)dynCheck_entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;
13776 }
13777 if (!strcmp(name, "vkCmdSubpassShadingHUAWEI"))
13778 {
13779 bool hasExt = resources->hasInstanceExtension(instance, "VK_HUAWEI_subpass_shading");
13780 return hasExt ? (void*)entry_vkCmdSubpassShadingHUAWEI : nullptr;
13781 }
13782#endif
13783#ifdef VK_HUAWEI_invocation_mask
13784 if (!strcmp(name, "vkCmdBindInvocationMaskHUAWEI"))
13785 {
13786 bool hasExt = resources->hasInstanceExtension(instance, "VK_HUAWEI_invocation_mask");
13787 return hasExt ? (void*)entry_vkCmdBindInvocationMaskHUAWEI : nullptr;
13788 }
13789#endif
13790#ifdef VK_NV_external_memory_rdma
13791 if (!strcmp(name, "vkGetMemoryRemoteAddressNV"))
13792 {
13793 return (void*)dynCheck_entry_vkGetMemoryRemoteAddressNV;
13794 }
13795#endif
13796#ifdef VK_EXT_extended_dynamic_state2
13797 if (!strcmp(name, "vkCmdSetPatchControlPointsEXT"))
13798 {
13799 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state2");
13800 return hasExt ? (void*)entry_vkCmdSetPatchControlPointsEXT : nullptr;
13801 }
13802 if (!strcmp(name, "vkCmdSetRasterizerDiscardEnableEXT"))
13803 {
13804 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state2");
13805 return hasExt ? (void*)entry_vkCmdSetRasterizerDiscardEnableEXT : nullptr;
13806 }
13807 if (!strcmp(name, "vkCmdSetDepthBiasEnableEXT"))
13808 {
13809 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state2");
13810 return hasExt ? (void*)entry_vkCmdSetDepthBiasEnableEXT : nullptr;
13811 }
13812 if (!strcmp(name, "vkCmdSetLogicOpEXT"))
13813 {
13814 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state2");
13815 return hasExt ? (void*)entry_vkCmdSetLogicOpEXT : nullptr;
13816 }
13817 if (!strcmp(name, "vkCmdSetPrimitiveRestartEnableEXT"))
13818 {
13819 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state2");
13820 return hasExt ? (void*)entry_vkCmdSetPrimitiveRestartEnableEXT : nullptr;
13821 }
13822#endif
13823#ifdef VK_QNX_screen_surface
13824 if (!strcmp(name, "vkCreateScreenSurfaceQNX"))
13825 {
13826 bool hasExt = resources->hasInstanceExtension(instance, "VK_QNX_screen_surface");
13827 return hasExt ? (void*)entry_vkCreateScreenSurfaceQNX : nullptr;
13828 }
13829 if (!strcmp(name, "vkGetPhysicalDeviceScreenPresentationSupportQNX"))
13830 {
13831 bool hasExt = resources->hasInstanceExtension(instance, "VK_QNX_screen_surface");
13832 return hasExt ? (void*)entry_vkGetPhysicalDeviceScreenPresentationSupportQNX : nullptr;
13833 }
13834#endif
13835#ifdef VK_EXT_color_write_enable
13836 if (!strcmp(name, "vkCmdSetColorWriteEnableEXT"))
13837 {
13838 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_color_write_enable");
13839 return hasExt ? (void*)entry_vkCmdSetColorWriteEnableEXT : nullptr;
13840 }
13841#endif
Yilong Li71c43c52021-02-10 02:50:43 -080013842#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -070013843 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
13844 {
13845 return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
13846 }
13847 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
13848 {
13849 return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
13850 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013851 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
13852 {
13853 return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
13854 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070013855 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
13856 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013857 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070013858 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070013859 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
13860 {
Yilong Li71c43c52021-02-10 02:50:43 -080013861 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070013862 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
13863 }
13864 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
13865 {
Yilong Li71c43c52021-02-10 02:50:43 -080013866 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070013867 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
13868 }
13869 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
13870 {
Yilong Li71c43c52021-02-10 02:50:43 -080013871 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070013872 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
13873 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070013874 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
13875 {
Yilong Li71c43c52021-02-10 02:50:43 -080013876 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yang39a276e2019-06-17 13:27:22 -070013877 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
13878 }
Lingfeng Yang87f11962019-06-27 16:28:53 +000013879 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
13880 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013881 return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +000013882 }
13883 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
13884 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013885 return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +000013886 }
Lingfeng Yang4c542412020-02-04 18:18:32 -080013887 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
13888 {
13889 return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE;
13890 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070013891 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
13892 {
13893 return (void*)dynCheck_entry_vkFreeMemorySyncGOOGLE;
13894 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070013895 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
13896 {
Yilong Li71c43c52021-02-10 02:50:43 -080013897 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070013898 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
13899 }
13900 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
13901 {
Yilong Li71c43c52021-02-10 02:50:43 -080013902 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070013903 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
13904 }
13905 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
13906 {
Yilong Li71c43c52021-02-10 02:50:43 -080013907 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070013908 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
13909 }
13910 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
13911 {
Yilong Li71c43c52021-02-10 02:50:43 -080013912 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070013913 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
13914 }
Yilong Lia48b0102020-09-15 15:08:28 -070013915 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
13916 {
13917 return (void*)dynCheck_entry_vkGetLinearImageLayoutGOOGLE;
13918 }
Lingfeng Yangded34672021-01-22 23:17:47 -080013919 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
13920 {
Yilong Li71c43c52021-02-10 02:50:43 -080013921 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangded34672021-01-22 23:17:47 -080013922 return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
13923 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080013924 if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
13925 {
13926 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
13927 return hasExt ? (void*)entry_vkQueueCommitDescriptorSetUpdatesGOOGLE : nullptr;
13928 }
13929 if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
13930 {
13931 return (void*)dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE;
13932 }
Lingfeng Yang5678e1e2021-07-15 12:28:05 -070013933 if (!strcmp(name, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE"))
13934 {
13935 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
13936 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE : nullptr;
13937 }
Lingfeng Yangded34672021-01-22 23:17:47 -080013938#endif
Yilong Li353409a2022-01-04 02:37:56 -080013939#ifdef VK_EXT_multi_draw
13940 if (!strcmp(name, "vkCmdDrawMultiEXT"))
13941 {
13942 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_multi_draw");
13943 return hasExt ? (void*)entry_vkCmdDrawMultiEXT : nullptr;
13944 }
13945 if (!strcmp(name, "vkCmdDrawMultiIndexedEXT"))
13946 {
13947 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_multi_draw");
13948 return hasExt ? (void*)entry_vkCmdDrawMultiIndexedEXT : nullptr;
13949 }
13950#endif
13951#ifdef VK_EXT_pageable_device_local_memory
13952 if (!strcmp(name, "vkSetDeviceMemoryPriorityEXT"))
13953 {
13954 return (void*)dynCheck_entry_vkSetDeviceMemoryPriorityEXT;
13955 }
13956#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013957#ifdef VK_KHR_acceleration_structure
13958 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
13959 {
13960 return (void*)dynCheck_entry_vkCreateAccelerationStructureKHR;
13961 }
13962 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
13963 {
13964 return (void*)dynCheck_entry_vkDestroyAccelerationStructureKHR;
13965 }
13966 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
13967 {
13968 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
13969 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresKHR : nullptr;
13970 }
13971 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
13972 {
13973 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
13974 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresIndirectKHR : nullptr;
13975 }
13976 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
13977 {
13978 return (void*)dynCheck_entry_vkBuildAccelerationStructuresKHR;
13979 }
13980 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
13981 {
13982 return (void*)dynCheck_entry_vkCopyAccelerationStructureKHR;
13983 }
13984 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
13985 {
13986 return (void*)dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR;
13987 }
13988 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
13989 {
13990 return (void*)dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR;
13991 }
13992 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
13993 {
13994 return (void*)dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR;
13995 }
13996 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
13997 {
13998 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
13999 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureKHR : nullptr;
14000 }
14001 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
14002 {
14003 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
14004 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureToMemoryKHR : nullptr;
14005 }
14006 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
14007 {
14008 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
14009 return hasExt ? (void*)entry_vkCmdCopyMemoryToAccelerationStructureKHR : nullptr;
14010 }
14011 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
14012 {
14013 return (void*)dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR;
14014 }
14015 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
14016 {
14017 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
14018 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesKHR : nullptr;
14019 }
14020 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
14021 {
14022 return (void*)dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR;
14023 }
14024 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
14025 {
14026 return (void*)dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR;
14027 }
14028#endif
14029#ifdef VK_KHR_ray_tracing_pipeline
14030 if (!strcmp(name, "vkCmdTraceRaysKHR"))
14031 {
14032 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
14033 return hasExt ? (void*)entry_vkCmdTraceRaysKHR : nullptr;
14034 }
14035 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
14036 {
14037 return (void*)dynCheck_entry_vkCreateRayTracingPipelinesKHR;
14038 }
14039 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
14040 {
14041 return (void*)dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR;
14042 }
14043 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
14044 {
14045 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
14046 return hasExt ? (void*)entry_vkCmdTraceRaysIndirectKHR : nullptr;
14047 }
14048 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
14049 {
14050 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR;
14051 }
14052 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
14053 {
14054 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
14055 return hasExt ? (void*)entry_vkCmdSetRayTracingPipelineStackSizeKHR : nullptr;
14056 }
14057#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014058 return nullptr;
14059}
14060void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
14061 auto resources = ResourceTracker::get();
14062 bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
14063#ifdef VK_VERSION_1_0
14064 if (!strcmp(name, "vkCreateInstance"))
14065 {
14066 return (void*)entry_vkCreateInstance;
14067 }
14068 if (!strcmp(name, "vkDestroyInstance"))
14069 {
14070 return (void*)entry_vkDestroyInstance;
14071 }
14072 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
14073 {
14074 return (void*)entry_vkEnumeratePhysicalDevices;
14075 }
14076 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
14077 {
14078 return (void*)entry_vkGetPhysicalDeviceFeatures;
14079 }
14080 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
14081 {
14082 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
14083 }
14084 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
14085 {
14086 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
14087 }
14088 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
14089 {
14090 return (void*)entry_vkGetPhysicalDeviceProperties;
14091 }
14092 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
14093 {
14094 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
14095 }
14096 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
14097 {
14098 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
14099 }
14100 if (!strcmp(name, "vkGetInstanceProcAddr"))
14101 {
14102 return (void*)entry_vkGetInstanceProcAddr;
14103 }
14104 if (!strcmp(name, "vkGetDeviceProcAddr"))
14105 {
14106 return (void*)entry_vkGetDeviceProcAddr;
14107 }
14108 if (!strcmp(name, "vkCreateDevice"))
14109 {
14110 return (void*)entry_vkCreateDevice;
14111 }
14112 if (!strcmp(name, "vkDestroyDevice"))
14113 {
14114 return (void*)entry_vkDestroyDevice;
14115 }
14116 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
14117 {
14118 return (void*)entry_vkEnumerateInstanceExtensionProperties;
14119 }
14120 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
14121 {
14122 return (void*)entry_vkEnumerateDeviceExtensionProperties;
14123 }
14124 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
14125 {
14126 return (void*)entry_vkEnumerateInstanceLayerProperties;
14127 }
14128 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
14129 {
14130 return (void*)entry_vkEnumerateDeviceLayerProperties;
14131 }
14132 if (!strcmp(name, "vkGetDeviceQueue"))
14133 {
14134 return (void*)entry_vkGetDeviceQueue;
14135 }
14136 if (!strcmp(name, "vkQueueSubmit"))
14137 {
14138 return (void*)entry_vkQueueSubmit;
14139 }
14140 if (!strcmp(name, "vkQueueWaitIdle"))
14141 {
14142 return (void*)entry_vkQueueWaitIdle;
14143 }
14144 if (!strcmp(name, "vkDeviceWaitIdle"))
14145 {
14146 return (void*)entry_vkDeviceWaitIdle;
14147 }
14148 if (!strcmp(name, "vkAllocateMemory"))
14149 {
14150 return (void*)entry_vkAllocateMemory;
14151 }
14152 if (!strcmp(name, "vkFreeMemory"))
14153 {
14154 return (void*)entry_vkFreeMemory;
14155 }
14156 if (!strcmp(name, "vkMapMemory"))
14157 {
14158 return (void*)entry_vkMapMemory;
14159 }
14160 if (!strcmp(name, "vkUnmapMemory"))
14161 {
14162 return (void*)entry_vkUnmapMemory;
14163 }
14164 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
14165 {
14166 return (void*)entry_vkFlushMappedMemoryRanges;
14167 }
14168 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
14169 {
14170 return (void*)entry_vkInvalidateMappedMemoryRanges;
14171 }
14172 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
14173 {
14174 return (void*)entry_vkGetDeviceMemoryCommitment;
14175 }
14176 if (!strcmp(name, "vkBindBufferMemory"))
14177 {
14178 return (void*)entry_vkBindBufferMemory;
14179 }
14180 if (!strcmp(name, "vkBindImageMemory"))
14181 {
14182 return (void*)entry_vkBindImageMemory;
14183 }
14184 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
14185 {
14186 return (void*)entry_vkGetBufferMemoryRequirements;
14187 }
14188 if (!strcmp(name, "vkGetImageMemoryRequirements"))
14189 {
14190 return (void*)entry_vkGetImageMemoryRequirements;
14191 }
14192 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
14193 {
14194 return (void*)entry_vkGetImageSparseMemoryRequirements;
14195 }
14196 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
14197 {
14198 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
14199 }
14200 if (!strcmp(name, "vkQueueBindSparse"))
14201 {
14202 return (void*)entry_vkQueueBindSparse;
14203 }
14204 if (!strcmp(name, "vkCreateFence"))
14205 {
14206 return (void*)entry_vkCreateFence;
14207 }
14208 if (!strcmp(name, "vkDestroyFence"))
14209 {
14210 return (void*)entry_vkDestroyFence;
14211 }
14212 if (!strcmp(name, "vkResetFences"))
14213 {
14214 return (void*)entry_vkResetFences;
14215 }
14216 if (!strcmp(name, "vkGetFenceStatus"))
14217 {
14218 return (void*)entry_vkGetFenceStatus;
14219 }
14220 if (!strcmp(name, "vkWaitForFences"))
14221 {
14222 return (void*)entry_vkWaitForFences;
14223 }
14224 if (!strcmp(name, "vkCreateSemaphore"))
14225 {
14226 return (void*)entry_vkCreateSemaphore;
14227 }
14228 if (!strcmp(name, "vkDestroySemaphore"))
14229 {
14230 return (void*)entry_vkDestroySemaphore;
14231 }
14232 if (!strcmp(name, "vkCreateEvent"))
14233 {
14234 return (void*)entry_vkCreateEvent;
14235 }
14236 if (!strcmp(name, "vkDestroyEvent"))
14237 {
14238 return (void*)entry_vkDestroyEvent;
14239 }
14240 if (!strcmp(name, "vkGetEventStatus"))
14241 {
14242 return (void*)entry_vkGetEventStatus;
14243 }
14244 if (!strcmp(name, "vkSetEvent"))
14245 {
14246 return (void*)entry_vkSetEvent;
14247 }
14248 if (!strcmp(name, "vkResetEvent"))
14249 {
14250 return (void*)entry_vkResetEvent;
14251 }
14252 if (!strcmp(name, "vkCreateQueryPool"))
14253 {
14254 return (void*)entry_vkCreateQueryPool;
14255 }
14256 if (!strcmp(name, "vkDestroyQueryPool"))
14257 {
14258 return (void*)entry_vkDestroyQueryPool;
14259 }
14260 if (!strcmp(name, "vkGetQueryPoolResults"))
14261 {
14262 return (void*)entry_vkGetQueryPoolResults;
14263 }
14264 if (!strcmp(name, "vkCreateBuffer"))
14265 {
14266 return (void*)entry_vkCreateBuffer;
14267 }
14268 if (!strcmp(name, "vkDestroyBuffer"))
14269 {
14270 return (void*)entry_vkDestroyBuffer;
14271 }
14272 if (!strcmp(name, "vkCreateBufferView"))
14273 {
14274 return (void*)entry_vkCreateBufferView;
14275 }
14276 if (!strcmp(name, "vkDestroyBufferView"))
14277 {
14278 return (void*)entry_vkDestroyBufferView;
14279 }
14280 if (!strcmp(name, "vkCreateImage"))
14281 {
14282 return (void*)entry_vkCreateImage;
14283 }
14284 if (!strcmp(name, "vkDestroyImage"))
14285 {
14286 return (void*)entry_vkDestroyImage;
14287 }
14288 if (!strcmp(name, "vkGetImageSubresourceLayout"))
14289 {
14290 return (void*)entry_vkGetImageSubresourceLayout;
14291 }
14292 if (!strcmp(name, "vkCreateImageView"))
14293 {
14294 return (void*)entry_vkCreateImageView;
14295 }
14296 if (!strcmp(name, "vkDestroyImageView"))
14297 {
14298 return (void*)entry_vkDestroyImageView;
14299 }
14300 if (!strcmp(name, "vkCreateShaderModule"))
14301 {
14302 return (void*)entry_vkCreateShaderModule;
14303 }
14304 if (!strcmp(name, "vkDestroyShaderModule"))
14305 {
14306 return (void*)entry_vkDestroyShaderModule;
14307 }
14308 if (!strcmp(name, "vkCreatePipelineCache"))
14309 {
14310 return (void*)entry_vkCreatePipelineCache;
14311 }
14312 if (!strcmp(name, "vkDestroyPipelineCache"))
14313 {
14314 return (void*)entry_vkDestroyPipelineCache;
14315 }
14316 if (!strcmp(name, "vkGetPipelineCacheData"))
14317 {
14318 return (void*)entry_vkGetPipelineCacheData;
14319 }
14320 if (!strcmp(name, "vkMergePipelineCaches"))
14321 {
14322 return (void*)entry_vkMergePipelineCaches;
14323 }
14324 if (!strcmp(name, "vkCreateGraphicsPipelines"))
14325 {
14326 return (void*)entry_vkCreateGraphicsPipelines;
14327 }
14328 if (!strcmp(name, "vkCreateComputePipelines"))
14329 {
14330 return (void*)entry_vkCreateComputePipelines;
14331 }
14332 if (!strcmp(name, "vkDestroyPipeline"))
14333 {
14334 return (void*)entry_vkDestroyPipeline;
14335 }
14336 if (!strcmp(name, "vkCreatePipelineLayout"))
14337 {
14338 return (void*)entry_vkCreatePipelineLayout;
14339 }
14340 if (!strcmp(name, "vkDestroyPipelineLayout"))
14341 {
14342 return (void*)entry_vkDestroyPipelineLayout;
14343 }
14344 if (!strcmp(name, "vkCreateSampler"))
14345 {
14346 return (void*)entry_vkCreateSampler;
14347 }
14348 if (!strcmp(name, "vkDestroySampler"))
14349 {
14350 return (void*)entry_vkDestroySampler;
14351 }
14352 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
14353 {
14354 return (void*)entry_vkCreateDescriptorSetLayout;
14355 }
14356 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
14357 {
14358 return (void*)entry_vkDestroyDescriptorSetLayout;
14359 }
14360 if (!strcmp(name, "vkCreateDescriptorPool"))
14361 {
14362 return (void*)entry_vkCreateDescriptorPool;
14363 }
14364 if (!strcmp(name, "vkDestroyDescriptorPool"))
14365 {
14366 return (void*)entry_vkDestroyDescriptorPool;
14367 }
14368 if (!strcmp(name, "vkResetDescriptorPool"))
14369 {
14370 return (void*)entry_vkResetDescriptorPool;
14371 }
14372 if (!strcmp(name, "vkAllocateDescriptorSets"))
14373 {
14374 return (void*)entry_vkAllocateDescriptorSets;
14375 }
14376 if (!strcmp(name, "vkFreeDescriptorSets"))
14377 {
14378 return (void*)entry_vkFreeDescriptorSets;
14379 }
14380 if (!strcmp(name, "vkUpdateDescriptorSets"))
14381 {
14382 return (void*)entry_vkUpdateDescriptorSets;
14383 }
14384 if (!strcmp(name, "vkCreateFramebuffer"))
14385 {
14386 return (void*)entry_vkCreateFramebuffer;
14387 }
14388 if (!strcmp(name, "vkDestroyFramebuffer"))
14389 {
14390 return (void*)entry_vkDestroyFramebuffer;
14391 }
14392 if (!strcmp(name, "vkCreateRenderPass"))
14393 {
14394 return (void*)entry_vkCreateRenderPass;
14395 }
14396 if (!strcmp(name, "vkDestroyRenderPass"))
14397 {
14398 return (void*)entry_vkDestroyRenderPass;
14399 }
14400 if (!strcmp(name, "vkGetRenderAreaGranularity"))
14401 {
14402 return (void*)entry_vkGetRenderAreaGranularity;
14403 }
14404 if (!strcmp(name, "vkCreateCommandPool"))
14405 {
14406 return (void*)entry_vkCreateCommandPool;
14407 }
14408 if (!strcmp(name, "vkDestroyCommandPool"))
14409 {
14410 return (void*)entry_vkDestroyCommandPool;
14411 }
14412 if (!strcmp(name, "vkResetCommandPool"))
14413 {
14414 return (void*)entry_vkResetCommandPool;
14415 }
14416 if (!strcmp(name, "vkAllocateCommandBuffers"))
14417 {
14418 return (void*)entry_vkAllocateCommandBuffers;
14419 }
14420 if (!strcmp(name, "vkFreeCommandBuffers"))
14421 {
14422 return (void*)entry_vkFreeCommandBuffers;
14423 }
14424 if (!strcmp(name, "vkBeginCommandBuffer"))
14425 {
14426 return (void*)entry_vkBeginCommandBuffer;
14427 }
14428 if (!strcmp(name, "vkEndCommandBuffer"))
14429 {
14430 return (void*)entry_vkEndCommandBuffer;
14431 }
14432 if (!strcmp(name, "vkResetCommandBuffer"))
14433 {
14434 return (void*)entry_vkResetCommandBuffer;
14435 }
14436 if (!strcmp(name, "vkCmdBindPipeline"))
14437 {
14438 return (void*)entry_vkCmdBindPipeline;
14439 }
14440 if (!strcmp(name, "vkCmdSetViewport"))
14441 {
14442 return (void*)entry_vkCmdSetViewport;
14443 }
14444 if (!strcmp(name, "vkCmdSetScissor"))
14445 {
14446 return (void*)entry_vkCmdSetScissor;
14447 }
14448 if (!strcmp(name, "vkCmdSetLineWidth"))
14449 {
14450 return (void*)entry_vkCmdSetLineWidth;
14451 }
14452 if (!strcmp(name, "vkCmdSetDepthBias"))
14453 {
14454 return (void*)entry_vkCmdSetDepthBias;
14455 }
14456 if (!strcmp(name, "vkCmdSetBlendConstants"))
14457 {
14458 return (void*)entry_vkCmdSetBlendConstants;
14459 }
14460 if (!strcmp(name, "vkCmdSetDepthBounds"))
14461 {
14462 return (void*)entry_vkCmdSetDepthBounds;
14463 }
14464 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
14465 {
14466 return (void*)entry_vkCmdSetStencilCompareMask;
14467 }
14468 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
14469 {
14470 return (void*)entry_vkCmdSetStencilWriteMask;
14471 }
14472 if (!strcmp(name, "vkCmdSetStencilReference"))
14473 {
14474 return (void*)entry_vkCmdSetStencilReference;
14475 }
14476 if (!strcmp(name, "vkCmdBindDescriptorSets"))
14477 {
14478 return (void*)entry_vkCmdBindDescriptorSets;
14479 }
14480 if (!strcmp(name, "vkCmdBindIndexBuffer"))
14481 {
14482 return (void*)entry_vkCmdBindIndexBuffer;
14483 }
14484 if (!strcmp(name, "vkCmdBindVertexBuffers"))
14485 {
14486 return (void*)entry_vkCmdBindVertexBuffers;
14487 }
14488 if (!strcmp(name, "vkCmdDraw"))
14489 {
14490 return (void*)entry_vkCmdDraw;
14491 }
14492 if (!strcmp(name, "vkCmdDrawIndexed"))
14493 {
14494 return (void*)entry_vkCmdDrawIndexed;
14495 }
14496 if (!strcmp(name, "vkCmdDrawIndirect"))
14497 {
14498 return (void*)entry_vkCmdDrawIndirect;
14499 }
14500 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
14501 {
14502 return (void*)entry_vkCmdDrawIndexedIndirect;
14503 }
14504 if (!strcmp(name, "vkCmdDispatch"))
14505 {
14506 return (void*)entry_vkCmdDispatch;
14507 }
14508 if (!strcmp(name, "vkCmdDispatchIndirect"))
14509 {
14510 return (void*)entry_vkCmdDispatchIndirect;
14511 }
14512 if (!strcmp(name, "vkCmdCopyBuffer"))
14513 {
14514 return (void*)entry_vkCmdCopyBuffer;
14515 }
14516 if (!strcmp(name, "vkCmdCopyImage"))
14517 {
14518 return (void*)entry_vkCmdCopyImage;
14519 }
14520 if (!strcmp(name, "vkCmdBlitImage"))
14521 {
14522 return (void*)entry_vkCmdBlitImage;
14523 }
14524 if (!strcmp(name, "vkCmdCopyBufferToImage"))
14525 {
14526 return (void*)entry_vkCmdCopyBufferToImage;
14527 }
14528 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
14529 {
14530 return (void*)entry_vkCmdCopyImageToBuffer;
14531 }
14532 if (!strcmp(name, "vkCmdUpdateBuffer"))
14533 {
14534 return (void*)entry_vkCmdUpdateBuffer;
14535 }
14536 if (!strcmp(name, "vkCmdFillBuffer"))
14537 {
14538 return (void*)entry_vkCmdFillBuffer;
14539 }
14540 if (!strcmp(name, "vkCmdClearColorImage"))
14541 {
14542 return (void*)entry_vkCmdClearColorImage;
14543 }
14544 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
14545 {
14546 return (void*)entry_vkCmdClearDepthStencilImage;
14547 }
14548 if (!strcmp(name, "vkCmdClearAttachments"))
14549 {
14550 return (void*)entry_vkCmdClearAttachments;
14551 }
14552 if (!strcmp(name, "vkCmdResolveImage"))
14553 {
14554 return (void*)entry_vkCmdResolveImage;
14555 }
14556 if (!strcmp(name, "vkCmdSetEvent"))
14557 {
14558 return (void*)entry_vkCmdSetEvent;
14559 }
14560 if (!strcmp(name, "vkCmdResetEvent"))
14561 {
14562 return (void*)entry_vkCmdResetEvent;
14563 }
14564 if (!strcmp(name, "vkCmdWaitEvents"))
14565 {
14566 return (void*)entry_vkCmdWaitEvents;
14567 }
14568 if (!strcmp(name, "vkCmdPipelineBarrier"))
14569 {
14570 return (void*)entry_vkCmdPipelineBarrier;
14571 }
14572 if (!strcmp(name, "vkCmdBeginQuery"))
14573 {
14574 return (void*)entry_vkCmdBeginQuery;
14575 }
14576 if (!strcmp(name, "vkCmdEndQuery"))
14577 {
14578 return (void*)entry_vkCmdEndQuery;
14579 }
14580 if (!strcmp(name, "vkCmdResetQueryPool"))
14581 {
14582 return (void*)entry_vkCmdResetQueryPool;
14583 }
14584 if (!strcmp(name, "vkCmdWriteTimestamp"))
14585 {
14586 return (void*)entry_vkCmdWriteTimestamp;
14587 }
14588 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
14589 {
14590 return (void*)entry_vkCmdCopyQueryPoolResults;
14591 }
14592 if (!strcmp(name, "vkCmdPushConstants"))
14593 {
14594 return (void*)entry_vkCmdPushConstants;
14595 }
14596 if (!strcmp(name, "vkCmdBeginRenderPass"))
14597 {
14598 return (void*)entry_vkCmdBeginRenderPass;
14599 }
14600 if (!strcmp(name, "vkCmdNextSubpass"))
14601 {
14602 return (void*)entry_vkCmdNextSubpass;
14603 }
14604 if (!strcmp(name, "vkCmdEndRenderPass"))
14605 {
14606 return (void*)entry_vkCmdEndRenderPass;
14607 }
14608 if (!strcmp(name, "vkCmdExecuteCommands"))
14609 {
14610 return (void*)entry_vkCmdExecuteCommands;
14611 }
14612#endif
14613#ifdef VK_VERSION_1_1
14614 if (!strcmp(name, "vkEnumerateInstanceVersion"))
14615 {
14616 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
14617 }
14618 if (!strcmp(name, "vkBindBufferMemory2"))
14619 {
14620 return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
14621 }
14622 if (!strcmp(name, "vkBindImageMemory2"))
14623 {
14624 return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
14625 }
14626 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
14627 {
14628 return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
14629 }
14630 if (!strcmp(name, "vkCmdSetDeviceMask"))
14631 {
14632 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
14633 }
14634 if (!strcmp(name, "vkCmdDispatchBase"))
14635 {
14636 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
14637 }
14638 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
14639 {
14640 return nullptr;
14641 }
14642 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
14643 {
14644 return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
14645 }
14646 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
14647 {
14648 return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
14649 }
14650 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
14651 {
14652 return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
14653 }
14654 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
14655 {
14656 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
14657 }
14658 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
14659 {
14660 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
14661 }
14662 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
14663 {
14664 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
14665 }
14666 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
14667 {
14668 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
14669 }
14670 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
14671 {
14672 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
14673 }
14674 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
14675 {
14676 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
14677 }
14678 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
14679 {
14680 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
14681 }
14682 if (!strcmp(name, "vkTrimCommandPool"))
14683 {
14684 return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
14685 }
14686 if (!strcmp(name, "vkGetDeviceQueue2"))
14687 {
14688 return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
14689 }
14690 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
14691 {
14692 return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
14693 }
14694 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
14695 {
14696 return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
14697 }
14698 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
14699 {
14700 return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
14701 }
14702 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
14703 {
14704 return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
14705 }
14706 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
14707 {
14708 return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
14709 }
14710 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
14711 {
14712 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
14713 }
14714 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
14715 {
14716 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
14717 }
14718 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
14719 {
14720 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
14721 }
14722 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
14723 {
14724 return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
14725 }
14726#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014727#ifdef VK_VERSION_1_2
14728 if (!strcmp(name, "vkCmdDrawIndirectCount"))
14729 {
14730 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14731 return hasExt ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
14732 }
14733 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
14734 {
14735 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14736 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
14737 }
14738 if (!strcmp(name, "vkCreateRenderPass2"))
14739 {
14740 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14741 return hasExt ? (void*)entry_vkCreateRenderPass2 : nullptr;
14742 }
14743 if (!strcmp(name, "vkCmdBeginRenderPass2"))
14744 {
14745 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14746 return hasExt ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
14747 }
14748 if (!strcmp(name, "vkCmdNextSubpass2"))
14749 {
14750 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14751 return hasExt ? (void*)entry_vkCmdNextSubpass2 : nullptr;
14752 }
14753 if (!strcmp(name, "vkCmdEndRenderPass2"))
14754 {
14755 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14756 return hasExt ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
14757 }
14758 if (!strcmp(name, "vkResetQueryPool"))
14759 {
14760 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14761 return hasExt ? (void*)entry_vkResetQueryPool : nullptr;
14762 }
14763 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
14764 {
14765 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14766 return hasExt ? (void*)entry_vkGetSemaphoreCounterValue : nullptr;
14767 }
14768 if (!strcmp(name, "vkWaitSemaphores"))
14769 {
14770 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14771 return hasExt ? (void*)entry_vkWaitSemaphores : nullptr;
14772 }
14773 if (!strcmp(name, "vkSignalSemaphore"))
14774 {
14775 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14776 return hasExt ? (void*)entry_vkSignalSemaphore : nullptr;
14777 }
14778 if (!strcmp(name, "vkGetBufferDeviceAddress"))
14779 {
14780 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14781 return hasExt ? (void*)entry_vkGetBufferDeviceAddress : nullptr;
14782 }
14783 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
14784 {
14785 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14786 return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddress : nullptr;
14787 }
14788 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
14789 {
14790 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14791 return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddress : nullptr;
14792 }
14793#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014794#ifdef VK_KHR_surface
14795 if (!strcmp(name, "vkDestroySurfaceKHR"))
14796 {
14797 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
14798 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
14799 }
14800 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
14801 {
14802 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
14803 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
14804 }
14805 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
14806 {
14807 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
14808 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
14809 }
14810 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
14811 {
14812 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
14813 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
14814 }
14815 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
14816 {
14817 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
14818 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
14819 }
14820#endif
14821#ifdef VK_KHR_swapchain
14822 if (!strcmp(name, "vkCreateSwapchainKHR"))
14823 {
14824 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
14825 return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
14826 }
14827 if (!strcmp(name, "vkDestroySwapchainKHR"))
14828 {
14829 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
14830 return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
14831 }
14832 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
14833 {
14834 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
14835 return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
14836 }
14837 if (!strcmp(name, "vkAcquireNextImageKHR"))
14838 {
14839 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
14840 return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
14841 }
14842 if (!strcmp(name, "vkQueuePresentKHR"))
14843 {
14844 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
14845 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
14846 }
14847 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
14848 {
14849 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
14850 return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
14851 }
14852 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
14853 {
14854 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
14855 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
14856 }
14857 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
14858 {
14859 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
14860 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
14861 }
14862 if (!strcmp(name, "vkAcquireNextImage2KHR"))
14863 {
14864 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
14865 return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
14866 }
14867#endif
14868#ifdef VK_KHR_display
14869 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
14870 {
14871 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
14872 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
14873 }
14874 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
14875 {
14876 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
14877 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
14878 }
14879 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
14880 {
14881 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
14882 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
14883 }
14884 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
14885 {
14886 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
14887 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
14888 }
14889 if (!strcmp(name, "vkCreateDisplayModeKHR"))
14890 {
14891 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
14892 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
14893 }
14894 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
14895 {
14896 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
14897 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
14898 }
14899 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
14900 {
14901 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
14902 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
14903 }
14904#endif
14905#ifdef VK_KHR_display_swapchain
14906 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
14907 {
14908 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
14909 return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
14910 }
14911#endif
14912#ifdef VK_KHR_xlib_surface
14913 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
14914 {
14915 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
14916 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
14917 }
14918 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
14919 {
14920 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
14921 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
14922 }
14923#endif
14924#ifdef VK_KHR_xcb_surface
14925 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
14926 {
14927 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
14928 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
14929 }
14930 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
14931 {
14932 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
14933 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
14934 }
14935#endif
14936#ifdef VK_KHR_wayland_surface
14937 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
14938 {
14939 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
14940 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
14941 }
14942 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
14943 {
14944 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
14945 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
14946 }
14947#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014948#ifdef VK_KHR_android_surface
14949 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
14950 {
14951 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
14952 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
14953 }
14954#endif
14955#ifdef VK_KHR_win32_surface
14956 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
14957 {
14958 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
14959 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
14960 }
14961 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
14962 {
14963 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
14964 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
14965 }
14966#endif
Yilong Li353409a2022-01-04 02:37:56 -080014967#ifdef VK_KHR_video_queue
14968 if (!strcmp(name, "vkGetPhysicalDeviceVideoCapabilitiesKHR"))
14969 {
14970 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
14971 return hasExt ? (void*)entry_vkGetPhysicalDeviceVideoCapabilitiesKHR : nullptr;
14972 }
14973 if (!strcmp(name, "vkGetPhysicalDeviceVideoFormatPropertiesKHR"))
14974 {
14975 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
14976 return hasExt ? (void*)entry_vkGetPhysicalDeviceVideoFormatPropertiesKHR : nullptr;
14977 }
14978 if (!strcmp(name, "vkCreateVideoSessionKHR"))
14979 {
14980 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
14981 return hasExt ? (void*)entry_vkCreateVideoSessionKHR : nullptr;
14982 }
14983 if (!strcmp(name, "vkDestroyVideoSessionKHR"))
14984 {
14985 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
14986 return hasExt ? (void*)entry_vkDestroyVideoSessionKHR : nullptr;
14987 }
14988 if (!strcmp(name, "vkGetVideoSessionMemoryRequirementsKHR"))
14989 {
14990 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
14991 return hasExt ? (void*)entry_vkGetVideoSessionMemoryRequirementsKHR : nullptr;
14992 }
14993 if (!strcmp(name, "vkBindVideoSessionMemoryKHR"))
14994 {
14995 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
14996 return hasExt ? (void*)entry_vkBindVideoSessionMemoryKHR : nullptr;
14997 }
14998 if (!strcmp(name, "vkCreateVideoSessionParametersKHR"))
14999 {
15000 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
15001 return hasExt ? (void*)entry_vkCreateVideoSessionParametersKHR : nullptr;
15002 }
15003 if (!strcmp(name, "vkUpdateVideoSessionParametersKHR"))
15004 {
15005 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
15006 return hasExt ? (void*)entry_vkUpdateVideoSessionParametersKHR : nullptr;
15007 }
15008 if (!strcmp(name, "vkDestroyVideoSessionParametersKHR"))
15009 {
15010 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
15011 return hasExt ? (void*)entry_vkDestroyVideoSessionParametersKHR : nullptr;
15012 }
15013 if (!strcmp(name, "vkCmdBeginVideoCodingKHR"))
15014 {
15015 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
15016 return hasExt ? (void*)entry_vkCmdBeginVideoCodingKHR : nullptr;
15017 }
15018 if (!strcmp(name, "vkCmdEndVideoCodingKHR"))
15019 {
15020 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
15021 return hasExt ? (void*)entry_vkCmdEndVideoCodingKHR : nullptr;
15022 }
15023 if (!strcmp(name, "vkCmdControlVideoCodingKHR"))
15024 {
15025 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
15026 return hasExt ? (void*)entry_vkCmdControlVideoCodingKHR : nullptr;
15027 }
15028#endif
15029#ifdef VK_KHR_video_decode_queue
15030 if (!strcmp(name, "vkCmdDecodeVideoKHR"))
15031 {
15032 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_decode_queue");
15033 return hasExt ? (void*)entry_vkCmdDecodeVideoKHR : nullptr;
15034 }
15035#endif
15036#ifdef VK_KHR_dynamic_rendering
15037 if (!strcmp(name, "vkCmdBeginRenderingKHR"))
15038 {
15039 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_dynamic_rendering");
15040 return hasExt ? (void*)entry_vkCmdBeginRenderingKHR : nullptr;
15041 }
15042 if (!strcmp(name, "vkCmdEndRenderingKHR"))
15043 {
15044 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_dynamic_rendering");
15045 return hasExt ? (void*)entry_vkCmdEndRenderingKHR : nullptr;
15046 }
15047#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015048#ifdef VK_KHR_get_physical_device_properties2
15049 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
15050 {
15051 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
15052 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
15053 }
15054 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
15055 {
15056 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
15057 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
15058 }
15059 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
15060 {
15061 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
15062 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
15063 }
15064 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
15065 {
15066 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
15067 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
15068 }
15069 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
15070 {
15071 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
15072 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
15073 }
15074 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
15075 {
15076 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
15077 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
15078 }
15079 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
15080 {
15081 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
15082 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
15083 }
15084#endif
15085#ifdef VK_KHR_device_group
15086 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
15087 {
15088 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
15089 return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
15090 }
15091 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
15092 {
15093 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
15094 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
15095 }
15096 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
15097 {
15098 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
15099 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
15100 }
15101#endif
15102#ifdef VK_KHR_maintenance1
15103 if (!strcmp(name, "vkTrimCommandPoolKHR"))
15104 {
15105 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
15106 return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
15107 }
15108#endif
15109#ifdef VK_KHR_device_group_creation
15110 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
15111 {
15112 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
15113 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
15114 }
15115#endif
15116#ifdef VK_KHR_external_memory_capabilities
15117 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
15118 {
15119 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
15120 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
15121 }
15122#endif
15123#ifdef VK_KHR_external_memory_win32
15124 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
15125 {
15126 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
15127 return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
15128 }
15129 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
15130 {
15131 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
15132 return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
15133 }
15134#endif
15135#ifdef VK_KHR_external_memory_fd
15136 if (!strcmp(name, "vkGetMemoryFdKHR"))
15137 {
15138 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
15139 return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
15140 }
15141 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
15142 {
15143 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
15144 return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
15145 }
15146#endif
15147#ifdef VK_KHR_external_semaphore_capabilities
15148 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
15149 {
15150 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
15151 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
15152 }
15153#endif
15154#ifdef VK_KHR_external_semaphore_win32
15155 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
15156 {
15157 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
15158 return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
15159 }
15160 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
15161 {
15162 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
15163 return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
15164 }
15165#endif
15166#ifdef VK_KHR_external_semaphore_fd
15167 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
15168 {
15169 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
15170 return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
15171 }
15172 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
15173 {
15174 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
15175 return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
15176 }
15177#endif
15178#ifdef VK_KHR_push_descriptor
15179 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
15180 {
15181 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
15182 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
15183 }
15184 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
15185 {
15186 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
15187 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
15188 }
15189#endif
15190#ifdef VK_KHR_descriptor_update_template
15191 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
15192 {
15193 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
15194 return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
15195 }
15196 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
15197 {
15198 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
15199 return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
15200 }
15201 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
15202 {
15203 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
15204 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
15205 }
15206#endif
15207#ifdef VK_KHR_create_renderpass2
15208 if (!strcmp(name, "vkCreateRenderPass2KHR"))
15209 {
15210 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
15211 return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
15212 }
15213 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
15214 {
15215 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
15216 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
15217 }
15218 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
15219 {
15220 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
15221 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
15222 }
15223 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
15224 {
15225 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
15226 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
15227 }
15228#endif
15229#ifdef VK_KHR_shared_presentable_image
15230 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
15231 {
15232 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
15233 return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
15234 }
15235#endif
15236#ifdef VK_KHR_external_fence_capabilities
15237 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
15238 {
15239 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
15240 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
15241 }
15242#endif
15243#ifdef VK_KHR_external_fence_win32
15244 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
15245 {
15246 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
15247 return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
15248 }
15249 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
15250 {
15251 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
15252 return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
15253 }
15254#endif
15255#ifdef VK_KHR_external_fence_fd
15256 if (!strcmp(name, "vkImportFenceFdKHR"))
15257 {
15258 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
15259 return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
15260 }
15261 if (!strcmp(name, "vkGetFenceFdKHR"))
15262 {
15263 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
15264 return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
15265 }
15266#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015267#ifdef VK_KHR_performance_query
15268 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
15269 {
15270 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
15271 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
15272 }
15273 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
15274 {
15275 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
15276 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
15277 }
15278 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
15279 {
15280 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
15281 return hasExt ? (void*)entry_vkAcquireProfilingLockKHR : nullptr;
15282 }
15283 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
15284 {
15285 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
15286 return hasExt ? (void*)entry_vkReleaseProfilingLockKHR : nullptr;
15287 }
15288#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015289#ifdef VK_KHR_get_surface_capabilities2
15290 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
15291 {
15292 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
15293 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
15294 }
15295 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
15296 {
15297 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
15298 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
15299 }
15300#endif
15301#ifdef VK_KHR_get_display_properties2
15302 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
15303 {
15304 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
15305 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
15306 }
15307 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
15308 {
15309 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
15310 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
15311 }
15312 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
15313 {
15314 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
15315 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
15316 }
15317 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
15318 {
15319 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
15320 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
15321 }
15322#endif
15323#ifdef VK_KHR_get_memory_requirements2
15324 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
15325 {
15326 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
15327 return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
15328 }
15329 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
15330 {
15331 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
15332 return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
15333 }
15334 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
15335 {
15336 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
15337 return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
15338 }
15339#endif
15340#ifdef VK_KHR_sampler_ycbcr_conversion
15341 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
15342 {
15343 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
15344 return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
15345 }
15346 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
15347 {
15348 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
15349 return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
15350 }
15351#endif
15352#ifdef VK_KHR_bind_memory2
15353 if (!strcmp(name, "vkBindBufferMemory2KHR"))
15354 {
15355 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
15356 return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
15357 }
15358 if (!strcmp(name, "vkBindImageMemory2KHR"))
15359 {
15360 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
15361 return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
15362 }
15363#endif
15364#ifdef VK_KHR_maintenance3
15365 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
15366 {
15367 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
15368 return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
15369 }
15370#endif
15371#ifdef VK_KHR_draw_indirect_count
15372 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
15373 {
15374 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
15375 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
15376 }
15377 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
15378 {
15379 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
15380 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
15381 }
15382#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015383#ifdef VK_KHR_timeline_semaphore
15384 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
15385 {
15386 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
15387 return hasExt ? (void*)entry_vkGetSemaphoreCounterValueKHR : nullptr;
15388 }
15389 if (!strcmp(name, "vkWaitSemaphoresKHR"))
15390 {
15391 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
15392 return hasExt ? (void*)entry_vkWaitSemaphoresKHR : nullptr;
15393 }
15394 if (!strcmp(name, "vkSignalSemaphoreKHR"))
15395 {
15396 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
15397 return hasExt ? (void*)entry_vkSignalSemaphoreKHR : nullptr;
15398 }
15399#endif
15400#ifdef VK_KHR_fragment_shading_rate
15401 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
15402 {
15403 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
15404 return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
15405 }
15406 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
15407 {
15408 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
15409 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateKHR : nullptr;
15410 }
15411#endif
Yilong Li353409a2022-01-04 02:37:56 -080015412#ifdef VK_KHR_present_wait
15413 if (!strcmp(name, "vkWaitForPresentKHR"))
15414 {
15415 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_present_wait");
15416 return hasExt ? (void*)entry_vkWaitForPresentKHR : nullptr;
15417 }
15418#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015419#ifdef VK_KHR_buffer_device_address
15420 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
15421 {
15422 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
15423 return hasExt ? (void*)entry_vkGetBufferDeviceAddressKHR : nullptr;
15424 }
15425 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
15426 {
15427 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
15428 return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddressKHR : nullptr;
15429 }
15430 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
15431 {
15432 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
15433 return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR : nullptr;
15434 }
15435#endif
15436#ifdef VK_KHR_deferred_host_operations
15437 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
15438 {
15439 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
15440 return hasExt ? (void*)entry_vkCreateDeferredOperationKHR : nullptr;
15441 }
15442 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
15443 {
15444 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
15445 return hasExt ? (void*)entry_vkDestroyDeferredOperationKHR : nullptr;
15446 }
15447 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
15448 {
15449 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
15450 return hasExt ? (void*)entry_vkGetDeferredOperationMaxConcurrencyKHR : nullptr;
15451 }
15452 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
15453 {
15454 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
15455 return hasExt ? (void*)entry_vkGetDeferredOperationResultKHR : nullptr;
15456 }
15457 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
15458 {
15459 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
15460 return hasExt ? (void*)entry_vkDeferredOperationJoinKHR : nullptr;
15461 }
15462#endif
15463#ifdef VK_KHR_pipeline_executable_properties
15464 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
15465 {
15466 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
15467 return hasExt ? (void*)entry_vkGetPipelineExecutablePropertiesKHR : nullptr;
15468 }
15469 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
15470 {
15471 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
15472 return hasExt ? (void*)entry_vkGetPipelineExecutableStatisticsKHR : nullptr;
15473 }
15474 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
15475 {
15476 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
15477 return hasExt ? (void*)entry_vkGetPipelineExecutableInternalRepresentationsKHR : nullptr;
15478 }
15479#endif
Yilong Li353409a2022-01-04 02:37:56 -080015480#ifdef VK_KHR_video_encode_queue
15481 if (!strcmp(name, "vkCmdEncodeVideoKHR"))
15482 {
15483 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_encode_queue");
15484 return hasExt ? (void*)entry_vkCmdEncodeVideoKHR : nullptr;
15485 }
15486#endif
15487#ifdef VK_KHR_synchronization2
15488 if (!strcmp(name, "vkCmdSetEvent2KHR"))
15489 {
15490 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
15491 return hasExt ? (void*)entry_vkCmdSetEvent2KHR : nullptr;
15492 }
15493 if (!strcmp(name, "vkCmdResetEvent2KHR"))
15494 {
15495 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
15496 return hasExt ? (void*)entry_vkCmdResetEvent2KHR : nullptr;
15497 }
15498 if (!strcmp(name, "vkCmdWaitEvents2KHR"))
15499 {
15500 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
15501 return hasExt ? (void*)entry_vkCmdWaitEvents2KHR : nullptr;
15502 }
15503 if (!strcmp(name, "vkCmdPipelineBarrier2KHR"))
15504 {
15505 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
15506 return hasExt ? (void*)entry_vkCmdPipelineBarrier2KHR : nullptr;
15507 }
15508 if (!strcmp(name, "vkCmdWriteTimestamp2KHR"))
15509 {
15510 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
15511 return hasExt ? (void*)entry_vkCmdWriteTimestamp2KHR : nullptr;
15512 }
15513 if (!strcmp(name, "vkQueueSubmit2KHR"))
15514 {
15515 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
15516 return hasExt ? (void*)entry_vkQueueSubmit2KHR : nullptr;
15517 }
15518 if (!strcmp(name, "vkCmdWriteBufferMarker2AMD"))
15519 {
15520 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
15521 return hasExt ? (void*)entry_vkCmdWriteBufferMarker2AMD : nullptr;
15522 }
15523 if (!strcmp(name, "vkGetQueueCheckpointData2NV"))
15524 {
15525 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
15526 return hasExt ? (void*)entry_vkGetQueueCheckpointData2NV : nullptr;
15527 }
15528#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015529#ifdef VK_KHR_copy_commands2
15530 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
15531 {
15532 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
15533 return hasExt ? (void*)entry_vkCmdCopyBuffer2KHR : nullptr;
15534 }
15535 if (!strcmp(name, "vkCmdCopyImage2KHR"))
15536 {
15537 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
15538 return hasExt ? (void*)entry_vkCmdCopyImage2KHR : nullptr;
15539 }
15540 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
15541 {
15542 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
15543 return hasExt ? (void*)entry_vkCmdCopyBufferToImage2KHR : nullptr;
15544 }
15545 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
15546 {
15547 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
15548 return hasExt ? (void*)entry_vkCmdCopyImageToBuffer2KHR : nullptr;
15549 }
15550 if (!strcmp(name, "vkCmdBlitImage2KHR"))
15551 {
15552 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
15553 return hasExt ? (void*)entry_vkCmdBlitImage2KHR : nullptr;
15554 }
15555 if (!strcmp(name, "vkCmdResolveImage2KHR"))
15556 {
15557 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
15558 return hasExt ? (void*)entry_vkCmdResolveImage2KHR : nullptr;
15559 }
15560#endif
Yilong Li353409a2022-01-04 02:37:56 -080015561#ifdef VK_KHR_maintenance4
15562 if (!strcmp(name, "vkGetDeviceBufferMemoryRequirementsKHR"))
15563 {
15564 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance4");
15565 return hasExt ? (void*)entry_vkGetDeviceBufferMemoryRequirementsKHR : nullptr;
15566 }
15567 if (!strcmp(name, "vkGetDeviceImageMemoryRequirementsKHR"))
15568 {
15569 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance4");
15570 return hasExt ? (void*)entry_vkGetDeviceImageMemoryRequirementsKHR : nullptr;
15571 }
15572 if (!strcmp(name, "vkGetDeviceImageSparseMemoryRequirementsKHR"))
15573 {
15574 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance4");
15575 return hasExt ? (void*)entry_vkGetDeviceImageSparseMemoryRequirementsKHR : nullptr;
15576 }
15577#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015578#ifdef VK_ANDROID_native_buffer
15579 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
15580 {
15581 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
15582 return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
15583 }
15584 if (!strcmp(name, "vkAcquireImageANDROID"))
15585 {
15586 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
15587 return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
15588 }
15589 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
15590 {
15591 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
15592 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
15593 }
15594#endif
15595#ifdef VK_EXT_debug_report
15596 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
15597 {
15598 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
15599 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
15600 }
15601 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
15602 {
15603 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
15604 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
15605 }
15606 if (!strcmp(name, "vkDebugReportMessageEXT"))
15607 {
15608 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
15609 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
15610 }
15611#endif
15612#ifdef VK_EXT_debug_marker
15613 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
15614 {
15615 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
15616 return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
15617 }
15618 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
15619 {
15620 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
15621 return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
15622 }
15623 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
15624 {
15625 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
15626 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
15627 }
15628 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
15629 {
15630 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
15631 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
15632 }
15633 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
15634 {
15635 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
15636 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
15637 }
15638#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015639#ifdef VK_EXT_transform_feedback
15640 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
15641 {
15642 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
15643 return hasExt ? (void*)entry_vkCmdBindTransformFeedbackBuffersEXT : nullptr;
15644 }
15645 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
15646 {
15647 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
15648 return hasExt ? (void*)entry_vkCmdBeginTransformFeedbackEXT : nullptr;
15649 }
15650 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
15651 {
15652 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
15653 return hasExt ? (void*)entry_vkCmdEndTransformFeedbackEXT : nullptr;
15654 }
15655 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
15656 {
15657 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
15658 return hasExt ? (void*)entry_vkCmdBeginQueryIndexedEXT : nullptr;
15659 }
15660 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
15661 {
15662 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
15663 return hasExt ? (void*)entry_vkCmdEndQueryIndexedEXT : nullptr;
15664 }
15665 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
15666 {
15667 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
15668 return hasExt ? (void*)entry_vkCmdDrawIndirectByteCountEXT : nullptr;
15669 }
15670#endif
Yilong Li353409a2022-01-04 02:37:56 -080015671#ifdef VK_NVX_binary_import
15672 if (!strcmp(name, "vkCreateCuModuleNVX"))
15673 {
15674 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
15675 return hasExt ? (void*)entry_vkCreateCuModuleNVX : nullptr;
15676 }
15677 if (!strcmp(name, "vkCreateCuFunctionNVX"))
15678 {
15679 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
15680 return hasExt ? (void*)entry_vkCreateCuFunctionNVX : nullptr;
15681 }
15682 if (!strcmp(name, "vkDestroyCuModuleNVX"))
15683 {
15684 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
15685 return hasExt ? (void*)entry_vkDestroyCuModuleNVX : nullptr;
15686 }
15687 if (!strcmp(name, "vkDestroyCuFunctionNVX"))
15688 {
15689 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
15690 return hasExt ? (void*)entry_vkDestroyCuFunctionNVX : nullptr;
15691 }
15692 if (!strcmp(name, "vkCmdCuLaunchKernelNVX"))
15693 {
15694 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
15695 return hasExt ? (void*)entry_vkCmdCuLaunchKernelNVX : nullptr;
15696 }
15697#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015698#ifdef VK_NVX_image_view_handle
15699 if (!strcmp(name, "vkGetImageViewHandleNVX"))
15700 {
15701 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
15702 return hasExt ? (void*)entry_vkGetImageViewHandleNVX : nullptr;
15703 }
15704 if (!strcmp(name, "vkGetImageViewAddressNVX"))
15705 {
15706 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
15707 return hasExt ? (void*)entry_vkGetImageViewAddressNVX : nullptr;
15708 }
15709#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015710#ifdef VK_AMD_draw_indirect_count
15711 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
15712 {
15713 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
15714 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
15715 }
15716 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
15717 {
15718 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
15719 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
15720 }
15721#endif
15722#ifdef VK_AMD_shader_info
15723 if (!strcmp(name, "vkGetShaderInfoAMD"))
15724 {
15725 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
15726 return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
15727 }
15728#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015729#ifdef VK_GGP_stream_descriptor_surface
15730 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
15731 {
15732 bool hasExt = resources->hasDeviceExtension(device, "VK_GGP_stream_descriptor_surface");
15733 return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
15734 }
15735#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015736#ifdef VK_NV_external_memory_capabilities
15737 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
15738 {
15739 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
15740 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
15741 }
15742#endif
15743#ifdef VK_NV_external_memory_win32
15744 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
15745 {
15746 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
15747 return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
15748 }
15749#endif
15750#ifdef VK_NN_vi_surface
15751 if (!strcmp(name, "vkCreateViSurfaceNN"))
15752 {
15753 bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
15754 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
15755 }
15756#endif
15757#ifdef VK_EXT_conditional_rendering
15758 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
15759 {
15760 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
15761 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
15762 }
15763 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
15764 {
15765 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
15766 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
15767 }
15768#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015769#ifdef VK_NV_clip_space_w_scaling
15770 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
15771 {
15772 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
15773 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
15774 }
15775#endif
15776#ifdef VK_EXT_direct_mode_display
15777 if (!strcmp(name, "vkReleaseDisplayEXT"))
15778 {
15779 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
15780 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
15781 }
15782#endif
15783#ifdef VK_EXT_acquire_xlib_display
15784 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
15785 {
15786 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
15787 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
15788 }
15789 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
15790 {
15791 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
15792 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
15793 }
15794#endif
15795#ifdef VK_EXT_display_surface_counter
15796 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
15797 {
15798 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
15799 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
15800 }
15801#endif
15802#ifdef VK_EXT_display_control
15803 if (!strcmp(name, "vkDisplayPowerControlEXT"))
15804 {
15805 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
15806 return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
15807 }
15808 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
15809 {
15810 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
15811 return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
15812 }
15813 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
15814 {
15815 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
15816 return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
15817 }
15818 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
15819 {
15820 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
15821 return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
15822 }
15823#endif
15824#ifdef VK_GOOGLE_display_timing
15825 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
15826 {
15827 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
15828 return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
15829 }
15830 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
15831 {
15832 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
15833 return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
15834 }
15835#endif
15836#ifdef VK_EXT_discard_rectangles
15837 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
15838 {
15839 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
15840 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
15841 }
15842#endif
15843#ifdef VK_EXT_hdr_metadata
15844 if (!strcmp(name, "vkSetHdrMetadataEXT"))
15845 {
15846 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
15847 return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
15848 }
15849#endif
15850#ifdef VK_MVK_ios_surface
15851 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
15852 {
15853 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
15854 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
15855 }
15856#endif
15857#ifdef VK_MVK_macos_surface
15858 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
15859 {
15860 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
15861 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
15862 }
15863#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015864#ifdef VK_MVK_moltenvk
15865 if (!strcmp(name, "vkGetMTLDeviceMVK"))
15866 {
15867 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
15868 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
15869 }
15870 if (!strcmp(name, "vkSetMTLTextureMVK"))
15871 {
15872 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
15873 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
15874 }
15875 if (!strcmp(name, "vkGetMTLTextureMVK"))
15876 {
15877 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
15878 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
15879 }
15880 if (!strcmp(name, "vkGetMTLBufferMVK"))
15881 {
15882 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
15883 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
15884 }
15885 if (!strcmp(name, "vkUseIOSurfaceMVK"))
15886 {
15887 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
15888 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
15889 }
15890 if (!strcmp(name, "vkGetIOSurfaceMVK"))
15891 {
15892 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
15893 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
15894 }
15895#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015896#ifdef VK_EXT_debug_utils
15897 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
15898 {
15899 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15900 return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
15901 }
15902 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
15903 {
15904 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15905 return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
15906 }
15907 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
15908 {
15909 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15910 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
15911 }
15912 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
15913 {
15914 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15915 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
15916 }
15917 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
15918 {
15919 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15920 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
15921 }
15922 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
15923 {
15924 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15925 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
15926 }
15927 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
15928 {
15929 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15930 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
15931 }
15932 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
15933 {
15934 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15935 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
15936 }
15937 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
15938 {
15939 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15940 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
15941 }
15942 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
15943 {
15944 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15945 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
15946 }
15947 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
15948 {
15949 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15950 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
15951 }
15952#endif
15953#ifdef VK_ANDROID_external_memory_android_hardware_buffer
15954 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
15955 {
15956 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
15957 return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
15958 }
15959 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
15960 {
15961 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
15962 return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
15963 }
15964#endif
15965#ifdef VK_EXT_sample_locations
15966 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
15967 {
15968 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
15969 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
15970 }
15971 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
15972 {
15973 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
15974 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
15975 }
15976#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015977#ifdef VK_EXT_image_drm_format_modifier
15978 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
15979 {
15980 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier");
15981 return hasExt ? (void*)entry_vkGetImageDrmFormatModifierPropertiesEXT : nullptr;
15982 }
15983#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015984#ifdef VK_EXT_validation_cache
15985 if (!strcmp(name, "vkCreateValidationCacheEXT"))
15986 {
15987 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
15988 return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
15989 }
15990 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
15991 {
15992 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
15993 return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
15994 }
15995 if (!strcmp(name, "vkMergeValidationCachesEXT"))
15996 {
15997 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
15998 return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
15999 }
16000 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
16001 {
16002 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
16003 return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
16004 }
16005#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080016006#ifdef VK_NV_shading_rate_image
16007 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
16008 {
16009 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
16010 return hasExt ? (void*)entry_vkCmdBindShadingRateImageNV : nullptr;
16011 }
16012 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
16013 {
16014 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
16015 return hasExt ? (void*)entry_vkCmdSetViewportShadingRatePaletteNV : nullptr;
16016 }
16017 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
16018 {
16019 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
16020 return hasExt ? (void*)entry_vkCmdSetCoarseSampleOrderNV : nullptr;
16021 }
16022#endif
16023#ifdef VK_NV_ray_tracing
16024 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
16025 {
16026 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16027 return hasExt ? (void*)entry_vkCreateAccelerationStructureNV : nullptr;
16028 }
16029 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
16030 {
16031 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16032 return hasExt ? (void*)entry_vkDestroyAccelerationStructureNV : nullptr;
16033 }
16034 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
16035 {
16036 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16037 return hasExt ? (void*)entry_vkGetAccelerationStructureMemoryRequirementsNV : nullptr;
16038 }
16039 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
16040 {
16041 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16042 return hasExt ? (void*)entry_vkBindAccelerationStructureMemoryNV : nullptr;
16043 }
16044 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
16045 {
16046 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16047 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructureNV : nullptr;
16048 }
16049 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
16050 {
16051 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16052 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureNV : nullptr;
16053 }
16054 if (!strcmp(name, "vkCmdTraceRaysNV"))
16055 {
16056 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16057 return hasExt ? (void*)entry_vkCmdTraceRaysNV : nullptr;
16058 }
16059 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
16060 {
16061 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16062 return hasExt ? (void*)entry_vkCreateRayTracingPipelinesNV : nullptr;
16063 }
16064 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
16065 {
16066 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16067 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesKHR : nullptr;
16068 }
16069 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
16070 {
16071 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16072 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesNV : nullptr;
16073 }
16074 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
16075 {
16076 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16077 return hasExt ? (void*)entry_vkGetAccelerationStructureHandleNV : nullptr;
16078 }
16079 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
16080 {
16081 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16082 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesNV : nullptr;
16083 }
16084 if (!strcmp(name, "vkCompileDeferredNV"))
16085 {
16086 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16087 return hasExt ? (void*)entry_vkCompileDeferredNV : nullptr;
16088 }
16089#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080016090#ifdef VK_EXT_external_memory_host
16091 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
16092 {
16093 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
16094 return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
16095 }
16096#endif
16097#ifdef VK_AMD_buffer_marker
16098 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
16099 {
16100 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
16101 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
16102 }
16103#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080016104#ifdef VK_EXT_calibrated_timestamps
16105 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
16106 {
16107 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
16108 return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
16109 }
16110 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
16111 {
16112 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
16113 return hasExt ? (void*)entry_vkGetCalibratedTimestampsEXT : nullptr;
16114 }
16115#endif
16116#ifdef VK_NV_mesh_shader
16117 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
16118 {
16119 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
16120 return hasExt ? (void*)entry_vkCmdDrawMeshTasksNV : nullptr;
16121 }
16122 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
16123 {
16124 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
16125 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectNV : nullptr;
16126 }
16127 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
16128 {
16129 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
16130 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountNV : nullptr;
16131 }
16132#endif
16133#ifdef VK_NV_scissor_exclusive
16134 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
16135 {
16136 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_scissor_exclusive");
16137 return hasExt ? (void*)entry_vkCmdSetExclusiveScissorNV : nullptr;
16138 }
16139#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080016140#ifdef VK_NV_device_diagnostic_checkpoints
16141 if (!strcmp(name, "vkCmdSetCheckpointNV"))
16142 {
16143 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
16144 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
16145 }
16146 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
16147 {
16148 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
16149 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
16150 }
16151#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080016152#ifdef VK_INTEL_performance_query
16153 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080016154 {
Yilong Lia8d45f12021-02-07 02:30:21 -080016155 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
16156 return hasExt ? (void*)entry_vkInitializePerformanceApiINTEL : nullptr;
16157 }
16158 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
16159 {
16160 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
16161 return hasExt ? (void*)entry_vkUninitializePerformanceApiINTEL : nullptr;
16162 }
16163 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
16164 {
16165 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
16166 return hasExt ? (void*)entry_vkCmdSetPerformanceMarkerINTEL : nullptr;
16167 }
16168 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
16169 {
16170 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
16171 return hasExt ? (void*)entry_vkCmdSetPerformanceStreamMarkerINTEL : nullptr;
16172 }
16173 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
16174 {
16175 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
16176 return hasExt ? (void*)entry_vkCmdSetPerformanceOverrideINTEL : nullptr;
16177 }
16178 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
16179 {
16180 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
16181 return hasExt ? (void*)entry_vkAcquirePerformanceConfigurationINTEL : nullptr;
16182 }
16183 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
16184 {
16185 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
16186 return hasExt ? (void*)entry_vkReleasePerformanceConfigurationINTEL : nullptr;
16187 }
16188 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
16189 {
16190 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
16191 return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
16192 }
16193 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
16194 {
16195 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
16196 return hasExt ? (void*)entry_vkGetPerformanceParameterINTEL : nullptr;
16197 }
16198#endif
16199#ifdef VK_AMD_display_native_hdr
16200 if (!strcmp(name, "vkSetLocalDimmingAMD"))
16201 {
16202 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr");
16203 return hasExt ? (void*)entry_vkSetLocalDimmingAMD : nullptr;
16204 }
16205#endif
16206#ifdef VK_FUCHSIA_imagepipe_surface
16207 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
16208 {
16209 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_imagepipe_surface");
16210 return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
16211 }
16212#endif
16213#ifdef VK_EXT_metal_surface
16214 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
16215 {
16216 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_metal_surface");
16217 return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080016218 }
16219#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080016220#ifdef VK_EXT_buffer_device_address
16221 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
16222 {
16223 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address");
16224 return hasExt ? (void*)entry_vkGetBufferDeviceAddressEXT : nullptr;
16225 }
16226#endif
16227#ifdef VK_EXT_tooling_info
16228 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
16229 {
16230 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_tooling_info");
16231 return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
16232 }
16233#endif
16234#ifdef VK_NV_cooperative_matrix
16235 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
16236 {
16237 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_cooperative_matrix");
16238 return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
16239 }
16240#endif
16241#ifdef VK_NV_coverage_reduction_mode
16242 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
16243 {
16244 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_coverage_reduction_mode");
16245 return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
16246 }
16247#endif
16248#ifdef VK_EXT_full_screen_exclusive
16249 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
16250 {
16251 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
16252 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
16253 }
16254 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
16255 {
16256 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
16257 return hasExt ? (void*)entry_vkAcquireFullScreenExclusiveModeEXT : nullptr;
16258 }
16259 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
16260 {
16261 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
16262 return hasExt ? (void*)entry_vkReleaseFullScreenExclusiveModeEXT : nullptr;
16263 }
16264 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
16265 {
16266 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
16267 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModes2EXT : nullptr;
16268 }
16269#endif
16270#ifdef VK_EXT_headless_surface
16271 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
16272 {
16273 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_headless_surface");
16274 return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
16275 }
16276#endif
16277#ifdef VK_EXT_line_rasterization
16278 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
16279 {
16280 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_line_rasterization");
16281 return hasExt ? (void*)entry_vkCmdSetLineStippleEXT : nullptr;
16282 }
16283#endif
16284#ifdef VK_EXT_host_query_reset
16285 if (!strcmp(name, "vkResetQueryPoolEXT"))
16286 {
16287 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_host_query_reset");
16288 return hasExt ? (void*)entry_vkResetQueryPoolEXT : nullptr;
16289 }
16290#endif
16291#ifdef VK_EXT_extended_dynamic_state
16292 if (!strcmp(name, "vkCmdSetCullModeEXT"))
16293 {
16294 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16295 return hasExt ? (void*)entry_vkCmdSetCullModeEXT : nullptr;
16296 }
16297 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
16298 {
16299 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16300 return hasExt ? (void*)entry_vkCmdSetFrontFaceEXT : nullptr;
16301 }
16302 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
16303 {
16304 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16305 return hasExt ? (void*)entry_vkCmdSetPrimitiveTopologyEXT : nullptr;
16306 }
16307 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
16308 {
16309 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16310 return hasExt ? (void*)entry_vkCmdSetViewportWithCountEXT : nullptr;
16311 }
16312 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
16313 {
16314 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16315 return hasExt ? (void*)entry_vkCmdSetScissorWithCountEXT : nullptr;
16316 }
16317 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
16318 {
16319 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16320 return hasExt ? (void*)entry_vkCmdBindVertexBuffers2EXT : nullptr;
16321 }
16322 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
16323 {
16324 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16325 return hasExt ? (void*)entry_vkCmdSetDepthTestEnableEXT : nullptr;
16326 }
16327 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
16328 {
16329 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16330 return hasExt ? (void*)entry_vkCmdSetDepthWriteEnableEXT : nullptr;
16331 }
16332 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
16333 {
16334 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16335 return hasExt ? (void*)entry_vkCmdSetDepthCompareOpEXT : nullptr;
16336 }
16337 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
16338 {
16339 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16340 return hasExt ? (void*)entry_vkCmdSetDepthBoundsTestEnableEXT : nullptr;
16341 }
16342 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
16343 {
16344 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16345 return hasExt ? (void*)entry_vkCmdSetStencilTestEnableEXT : nullptr;
16346 }
16347 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
16348 {
16349 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16350 return hasExt ? (void*)entry_vkCmdSetStencilOpEXT : nullptr;
16351 }
16352#endif
16353#ifdef VK_NV_device_generated_commands
16354 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
16355 {
16356 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
16357 return hasExt ? (void*)entry_vkGetGeneratedCommandsMemoryRequirementsNV : nullptr;
16358 }
16359 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
16360 {
16361 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
16362 return hasExt ? (void*)entry_vkCmdPreprocessGeneratedCommandsNV : nullptr;
16363 }
16364 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
16365 {
16366 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
16367 return hasExt ? (void*)entry_vkCmdExecuteGeneratedCommandsNV : nullptr;
16368 }
16369 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
16370 {
16371 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
16372 return hasExt ? (void*)entry_vkCmdBindPipelineShaderGroupNV : nullptr;
16373 }
16374 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
16375 {
16376 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
16377 return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNV : nullptr;
16378 }
16379 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
16380 {
16381 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
16382 return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNV : nullptr;
16383 }
16384#endif
Yilong Li353409a2022-01-04 02:37:56 -080016385#ifdef VK_EXT_acquire_drm_display
16386 if (!strcmp(name, "vkAcquireDrmDisplayEXT"))
16387 {
16388 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_drm_display");
16389 return hasExt ? (void*)entry_vkAcquireDrmDisplayEXT : nullptr;
16390 }
16391 if (!strcmp(name, "vkGetDrmDisplayEXT"))
16392 {
16393 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_drm_display");
16394 return hasExt ? (void*)entry_vkGetDrmDisplayEXT : nullptr;
16395 }
16396#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080016397#ifdef VK_EXT_private_data
16398 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
16399 {
16400 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
16401 return hasExt ? (void*)entry_vkCreatePrivateDataSlotEXT : nullptr;
16402 }
16403 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
16404 {
16405 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
16406 return hasExt ? (void*)entry_vkDestroyPrivateDataSlotEXT : nullptr;
16407 }
16408 if (!strcmp(name, "vkSetPrivateDataEXT"))
16409 {
16410 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
16411 return hasExt ? (void*)entry_vkSetPrivateDataEXT : nullptr;
16412 }
16413 if (!strcmp(name, "vkGetPrivateDataEXT"))
16414 {
16415 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
16416 return hasExt ? (void*)entry_vkGetPrivateDataEXT : nullptr;
16417 }
16418#endif
16419#ifdef VK_NV_fragment_shading_rate_enums
16420 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
16421 {
16422 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_fragment_shading_rate_enums");
16423 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateEnumNV : nullptr;
16424 }
16425#endif
Yilong Li353409a2022-01-04 02:37:56 -080016426#ifdef VK_NV_acquire_winrt_display
16427 if (!strcmp(name, "vkAcquireWinrtDisplayNV"))
16428 {
16429 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_acquire_winrt_display");
16430 return hasExt ? (void*)entry_vkAcquireWinrtDisplayNV : nullptr;
16431 }
16432 if (!strcmp(name, "vkGetWinrtDisplayNV"))
16433 {
16434 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_acquire_winrt_display");
16435 return hasExt ? (void*)entry_vkGetWinrtDisplayNV : nullptr;
16436 }
16437#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080016438#ifdef VK_EXT_directfb_surface
16439 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
16440 {
16441 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
16442 return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
16443 }
16444 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
16445 {
16446 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
16447 return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
16448 }
16449#endif
Yilong Li353409a2022-01-04 02:37:56 -080016450#ifdef VK_EXT_vertex_input_dynamic_state
16451 if (!strcmp(name, "vkCmdSetVertexInputEXT"))
16452 {
16453 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_vertex_input_dynamic_state");
16454 return hasExt ? (void*)entry_vkCmdSetVertexInputEXT : nullptr;
16455 }
16456#endif
16457#ifdef VK_FUCHSIA_external_memory
16458 if (!strcmp(name, "vkGetMemoryZirconHandleFUCHSIA"))
16459 {
16460 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_external_memory");
16461 return hasExt ? (void*)entry_vkGetMemoryZirconHandleFUCHSIA : nullptr;
16462 }
16463 if (!strcmp(name, "vkGetMemoryZirconHandlePropertiesFUCHSIA"))
16464 {
16465 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_external_memory");
16466 return hasExt ? (void*)entry_vkGetMemoryZirconHandlePropertiesFUCHSIA : nullptr;
16467 }
16468#endif
16469#ifdef VK_FUCHSIA_external_semaphore
16470 if (!strcmp(name, "vkImportSemaphoreZirconHandleFUCHSIA"))
16471 {
16472 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_external_semaphore");
16473 return hasExt ? (void*)entry_vkImportSemaphoreZirconHandleFUCHSIA : nullptr;
16474 }
16475 if (!strcmp(name, "vkGetSemaphoreZirconHandleFUCHSIA"))
16476 {
16477 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_external_semaphore");
16478 return hasExt ? (void*)entry_vkGetSemaphoreZirconHandleFUCHSIA : nullptr;
16479 }
16480#endif
16481#ifdef VK_FUCHSIA_buffer_collection
16482 if (!strcmp(name, "vkCreateBufferCollectionFUCHSIA"))
16483 {
16484 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
16485 return hasExt ? (void*)entry_vkCreateBufferCollectionFUCHSIA : nullptr;
16486 }
16487 if (!strcmp(name, "vkSetBufferCollectionImageConstraintsFUCHSIA"))
16488 {
16489 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
16490 return hasExt ? (void*)entry_vkSetBufferCollectionImageConstraintsFUCHSIA : nullptr;
16491 }
16492 if (!strcmp(name, "vkSetBufferCollectionBufferConstraintsFUCHSIA"))
16493 {
16494 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
16495 return hasExt ? (void*)entry_vkSetBufferCollectionBufferConstraintsFUCHSIA : nullptr;
16496 }
16497 if (!strcmp(name, "vkDestroyBufferCollectionFUCHSIA"))
16498 {
16499 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
16500 return hasExt ? (void*)entry_vkDestroyBufferCollectionFUCHSIA : nullptr;
16501 }
16502 if (!strcmp(name, "vkGetBufferCollectionPropertiesFUCHSIA"))
16503 {
16504 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
16505 return hasExt ? (void*)entry_vkGetBufferCollectionPropertiesFUCHSIA : nullptr;
16506 }
16507#endif
16508#ifdef VK_HUAWEI_subpass_shading
16509 if (!strcmp(name, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI"))
16510 {
16511 bool hasExt = resources->hasDeviceExtension(device, "VK_HUAWEI_subpass_shading");
16512 return hasExt ? (void*)entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI : nullptr;
16513 }
16514 if (!strcmp(name, "vkCmdSubpassShadingHUAWEI"))
16515 {
16516 bool hasExt = resources->hasDeviceExtension(device, "VK_HUAWEI_subpass_shading");
16517 return hasExt ? (void*)entry_vkCmdSubpassShadingHUAWEI : nullptr;
16518 }
16519#endif
16520#ifdef VK_HUAWEI_invocation_mask
16521 if (!strcmp(name, "vkCmdBindInvocationMaskHUAWEI"))
16522 {
16523 bool hasExt = resources->hasDeviceExtension(device, "VK_HUAWEI_invocation_mask");
16524 return hasExt ? (void*)entry_vkCmdBindInvocationMaskHUAWEI : nullptr;
16525 }
16526#endif
16527#ifdef VK_NV_external_memory_rdma
16528 if (!strcmp(name, "vkGetMemoryRemoteAddressNV"))
16529 {
16530 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_rdma");
16531 return hasExt ? (void*)entry_vkGetMemoryRemoteAddressNV : nullptr;
16532 }
16533#endif
16534#ifdef VK_EXT_extended_dynamic_state2
16535 if (!strcmp(name, "vkCmdSetPatchControlPointsEXT"))
16536 {
16537 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
16538 return hasExt ? (void*)entry_vkCmdSetPatchControlPointsEXT : nullptr;
16539 }
16540 if (!strcmp(name, "vkCmdSetRasterizerDiscardEnableEXT"))
16541 {
16542 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
16543 return hasExt ? (void*)entry_vkCmdSetRasterizerDiscardEnableEXT : nullptr;
16544 }
16545 if (!strcmp(name, "vkCmdSetDepthBiasEnableEXT"))
16546 {
16547 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
16548 return hasExt ? (void*)entry_vkCmdSetDepthBiasEnableEXT : nullptr;
16549 }
16550 if (!strcmp(name, "vkCmdSetLogicOpEXT"))
16551 {
16552 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
16553 return hasExt ? (void*)entry_vkCmdSetLogicOpEXT : nullptr;
16554 }
16555 if (!strcmp(name, "vkCmdSetPrimitiveRestartEnableEXT"))
16556 {
16557 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
16558 return hasExt ? (void*)entry_vkCmdSetPrimitiveRestartEnableEXT : nullptr;
16559 }
16560#endif
16561#ifdef VK_QNX_screen_surface
16562 if (!strcmp(name, "vkCreateScreenSurfaceQNX"))
16563 {
16564 bool hasExt = resources->hasDeviceExtension(device, "VK_QNX_screen_surface");
16565 return hasExt ? (void*)entry_vkCreateScreenSurfaceQNX : nullptr;
16566 }
16567 if (!strcmp(name, "vkGetPhysicalDeviceScreenPresentationSupportQNX"))
16568 {
16569 bool hasExt = resources->hasDeviceExtension(device, "VK_QNX_screen_surface");
16570 return hasExt ? (void*)entry_vkGetPhysicalDeviceScreenPresentationSupportQNX : nullptr;
16571 }
16572#endif
16573#ifdef VK_EXT_color_write_enable
16574 if (!strcmp(name, "vkCmdSetColorWriteEnableEXT"))
16575 {
16576 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_color_write_enable");
16577 return hasExt ? (void*)entry_vkCmdSetColorWriteEnableEXT : nullptr;
16578 }
16579#endif
Yilong Li71c43c52021-02-10 02:50:43 -080016580#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -070016581 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
16582 {
16583 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
16584 return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
16585 }
16586 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
16587 {
16588 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
16589 return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
16590 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016591 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
16592 {
Yilong Li71c43c52021-02-10 02:50:43 -080016593 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Yilong Lia8d45f12021-02-07 02:30:21 -080016594 return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
16595 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070016596 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
16597 {
Yilong Li71c43c52021-02-10 02:50:43 -080016598 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070016599 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
16600 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070016601 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
16602 {
Yilong Li71c43c52021-02-10 02:50:43 -080016603 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070016604 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
16605 }
16606 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
16607 {
Yilong Li71c43c52021-02-10 02:50:43 -080016608 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070016609 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
16610 }
16611 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
16612 {
Yilong Li71c43c52021-02-10 02:50:43 -080016613 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070016614 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
16615 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070016616 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
16617 {
Yilong Li71c43c52021-02-10 02:50:43 -080016618 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang39a276e2019-06-17 13:27:22 -070016619 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
16620 }
Lingfeng Yang87f11962019-06-27 16:28:53 +000016621 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
16622 {
Yilong Li71c43c52021-02-10 02:50:43 -080016623 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang87f11962019-06-27 16:28:53 +000016624 return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
16625 }
16626 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
16627 {
Yilong Li71c43c52021-02-10 02:50:43 -080016628 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang87f11962019-06-27 16:28:53 +000016629 return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
16630 }
Lingfeng Yang4c542412020-02-04 18:18:32 -080016631 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
16632 {
Yilong Li71c43c52021-02-10 02:50:43 -080016633 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang4c542412020-02-04 18:18:32 -080016634 return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
16635 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070016636 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
16637 {
Yilong Li71c43c52021-02-10 02:50:43 -080016638 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070016639 return hasExt ? (void*)entry_vkFreeMemorySyncGOOGLE : nullptr;
16640 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070016641 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
16642 {
Yilong Li71c43c52021-02-10 02:50:43 -080016643 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070016644 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
16645 }
16646 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
16647 {
Yilong Li71c43c52021-02-10 02:50:43 -080016648 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070016649 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
16650 }
16651 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
16652 {
Yilong Li71c43c52021-02-10 02:50:43 -080016653 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070016654 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
16655 }
16656 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
16657 {
Yilong Li71c43c52021-02-10 02:50:43 -080016658 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070016659 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
16660 }
Yilong Lia48b0102020-09-15 15:08:28 -070016661 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
16662 {
Yilong Li71c43c52021-02-10 02:50:43 -080016663 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Yilong Lia48b0102020-09-15 15:08:28 -070016664 return hasExt ? (void*)entry_vkGetLinearImageLayoutGOOGLE : nullptr;
16665 }
Lingfeng Yangded34672021-01-22 23:17:47 -080016666 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
16667 {
Yilong Li71c43c52021-02-10 02:50:43 -080016668 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangded34672021-01-22 23:17:47 -080016669 return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
16670 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080016671 if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
16672 {
16673 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
16674 return hasExt ? (void*)entry_vkQueueCommitDescriptorSetUpdatesGOOGLE : nullptr;
16675 }
16676 if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
16677 {
16678 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
16679 return hasExt ? (void*)entry_vkCollectDescriptorPoolIdsGOOGLE : nullptr;
16680 }
Lingfeng Yang5678e1e2021-07-15 12:28:05 -070016681 if (!strcmp(name, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE"))
16682 {
16683 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
16684 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE : nullptr;
16685 }
Lingfeng Yangded34672021-01-22 23:17:47 -080016686#endif
Yilong Li353409a2022-01-04 02:37:56 -080016687#ifdef VK_EXT_multi_draw
16688 if (!strcmp(name, "vkCmdDrawMultiEXT"))
16689 {
16690 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_multi_draw");
16691 return hasExt ? (void*)entry_vkCmdDrawMultiEXT : nullptr;
16692 }
16693 if (!strcmp(name, "vkCmdDrawMultiIndexedEXT"))
16694 {
16695 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_multi_draw");
16696 return hasExt ? (void*)entry_vkCmdDrawMultiIndexedEXT : nullptr;
16697 }
16698#endif
16699#ifdef VK_EXT_pageable_device_local_memory
16700 if (!strcmp(name, "vkSetDeviceMemoryPriorityEXT"))
16701 {
16702 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_pageable_device_local_memory");
16703 return hasExt ? (void*)entry_vkSetDeviceMemoryPriorityEXT : nullptr;
16704 }
16705#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080016706#ifdef VK_KHR_acceleration_structure
16707 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
16708 {
16709 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16710 return hasExt ? (void*)entry_vkCreateAccelerationStructureKHR : nullptr;
16711 }
16712 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
16713 {
16714 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16715 return hasExt ? (void*)entry_vkDestroyAccelerationStructureKHR : nullptr;
16716 }
16717 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
16718 {
16719 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16720 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresKHR : nullptr;
16721 }
16722 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
16723 {
16724 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16725 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresIndirectKHR : nullptr;
16726 }
16727 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
16728 {
16729 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16730 return hasExt ? (void*)entry_vkBuildAccelerationStructuresKHR : nullptr;
16731 }
16732 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
16733 {
16734 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16735 return hasExt ? (void*)entry_vkCopyAccelerationStructureKHR : nullptr;
16736 }
16737 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
16738 {
16739 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16740 return hasExt ? (void*)entry_vkCopyAccelerationStructureToMemoryKHR : nullptr;
16741 }
16742 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
16743 {
16744 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16745 return hasExt ? (void*)entry_vkCopyMemoryToAccelerationStructureKHR : nullptr;
16746 }
16747 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
16748 {
16749 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16750 return hasExt ? (void*)entry_vkWriteAccelerationStructuresPropertiesKHR : nullptr;
16751 }
16752 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
16753 {
16754 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16755 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureKHR : nullptr;
16756 }
16757 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
16758 {
16759 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16760 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureToMemoryKHR : nullptr;
16761 }
16762 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
16763 {
16764 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16765 return hasExt ? (void*)entry_vkCmdCopyMemoryToAccelerationStructureKHR : nullptr;
16766 }
16767 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
16768 {
16769 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16770 return hasExt ? (void*)entry_vkGetAccelerationStructureDeviceAddressKHR : nullptr;
16771 }
16772 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
16773 {
16774 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16775 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesKHR : nullptr;
16776 }
16777 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
16778 {
16779 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16780 return hasExt ? (void*)entry_vkGetDeviceAccelerationStructureCompatibilityKHR : nullptr;
16781 }
16782 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
16783 {
16784 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16785 return hasExt ? (void*)entry_vkGetAccelerationStructureBuildSizesKHR : nullptr;
16786 }
16787#endif
16788#ifdef VK_KHR_ray_tracing_pipeline
16789 if (!strcmp(name, "vkCmdTraceRaysKHR"))
16790 {
16791 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
16792 return hasExt ? (void*)entry_vkCmdTraceRaysKHR : nullptr;
16793 }
16794 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
16795 {
16796 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
16797 return hasExt ? (void*)entry_vkCreateRayTracingPipelinesKHR : nullptr;
16798 }
16799 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
16800 {
16801 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
16802 return hasExt ? (void*)entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR : nullptr;
16803 }
16804 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
16805 {
16806 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
16807 return hasExt ? (void*)entry_vkCmdTraceRaysIndirectKHR : nullptr;
16808 }
16809 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
16810 {
16811 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
16812 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupStackSizeKHR : nullptr;
16813 }
16814 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
16815 {
16816 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
16817 return hasExt ? (void*)entry_vkCmdSetRayTracingPipelineStackSizeKHR : nullptr;
16818 }
16819#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080016820 return nullptr;
16821}
16822
16823} // namespace goldfish_vk