blob: 15e7ba82de360242656198c09ea9bd0df81cea19 [file] [log] [blame]
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001// Copyright (C) 2018 The Android Open Source Project
2// Copyright (C) 2018 Google Inc.
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16// Autogenerated module func_table
17// (impl) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
18// Please do not modify directly;
19// re-run android/scripts/generate-vulkan-sources.sh,
20// or directly from Python by defining:
21// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
22// CEREAL_OUTPUT_DIR: Where to put the generated sources.
23// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
24
25#include "func_table.h"
26
27
28#include "VkEncoder.h"
Lingfeng Yang239cd602021-01-22 22:57:35 -080029#include "../OpenglSystemCommon/HostConnection.h"
Lingfeng Yange9979522018-12-25 14:44:52 -080030#include "ResourceTracker.h"
Lingfeng Yang0b81df22018-11-05 21:40:30 -080031
Lingfeng Yang808a6312018-11-13 21:06:15 -080032#include "goldfish_vk_private_defs.h"
33
Lingfeng Yang2f51a332019-10-30 09:25:25 -070034#include <log/log.h>
35
Lingfeng Yang0b81df22018-11-05 21:40:30 -080036// Stuff we are not going to use but if included,
37// will cause compile errors. These are Android Vulkan
38// required extensions, but the approach will be to
39// implement them completely on the guest side.
40#undef VK_KHR_android_surface
Lingfeng Yang0b81df22018-11-05 21:40:30 -080041
42
43namespace goldfish_vk {
44
Lingfeng Yang2f51a332019-10-30 09:25:25 -070045static void sOnInvalidDynamicallyCheckedCall(const char* apiname, const char* neededFeature)
46{
47 ALOGE("invalid call to %s: %s not supported", apiname, neededFeature);
48 abort();
49}
Lingfeng Yang0b81df22018-11-05 21:40:30 -080050#ifdef VK_VERSION_1_0
51static VkResult entry_vkCreateInstance(
52 const VkInstanceCreateInfo* pCreateInfo,
53 const VkAllocationCallbacks* pAllocator,
54 VkInstance* pInstance)
55{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080056 AEMU_SCOPED_TRACE("vkCreateInstance");
Lingfeng Yang4f539502021-01-22 23:01:57 -080057 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -080058 VkResult vkCreateInstance_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080059 vkCreateInstance_VkResult_return = vkEnc->vkCreateInstance(pCreateInfo, pAllocator, pInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080060 return vkCreateInstance_VkResult_return;
61}
62static void entry_vkDestroyInstance(
63 VkInstance instance,
64 const VkAllocationCallbacks* pAllocator)
65{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080066 AEMU_SCOPED_TRACE("vkDestroyInstance");
Lingfeng Yang4f539502021-01-22 23:01:57 -080067 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080068 vkEnc->vkDestroyInstance(instance, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080069}
70static VkResult entry_vkEnumeratePhysicalDevices(
71 VkInstance instance,
72 uint32_t* pPhysicalDeviceCount,
73 VkPhysicalDevice* pPhysicalDevices)
74{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080075 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices");
Lingfeng Yang4f539502021-01-22 23:01:57 -080076 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -080077 VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
Lingfeng Yangb64ca452019-02-14 22:04:28 -080078 auto resources = ResourceTracker::get();
79 vkEnumeratePhysicalDevices_VkResult_return = resources->on_vkEnumeratePhysicalDevices(vkEnc, VK_SUCCESS, instance, pPhysicalDeviceCount, pPhysicalDevices);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080080 return vkEnumeratePhysicalDevices_VkResult_return;
81}
82static void entry_vkGetPhysicalDeviceFeatures(
83 VkPhysicalDevice physicalDevice,
84 VkPhysicalDeviceFeatures* pFeatures)
85{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080086 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -080087 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080088 vkEnc->vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080089}
90static void entry_vkGetPhysicalDeviceFormatProperties(
91 VkPhysicalDevice physicalDevice,
92 VkFormat format,
93 VkFormatProperties* pFormatProperties)
94{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080095 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -080096 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080097 vkEnc->vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080098}
99static VkResult entry_vkGetPhysicalDeviceImageFormatProperties(
100 VkPhysicalDevice physicalDevice,
101 VkFormat format,
102 VkImageType type,
103 VkImageTiling tiling,
104 VkImageUsageFlags usage,
105 VkImageCreateFlags flags,
106 VkImageFormatProperties* pImageFormatProperties)
107{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800108 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800109 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800110 VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800111 vkGetPhysicalDeviceImageFormatProperties_VkResult_return = vkEnc->vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800112 return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
113}
114static void entry_vkGetPhysicalDeviceProperties(
115 VkPhysicalDevice physicalDevice,
116 VkPhysicalDeviceProperties* pProperties)
117{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800118 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800119 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800120 vkEnc->vkGetPhysicalDeviceProperties(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800121}
122static void entry_vkGetPhysicalDeviceQueueFamilyProperties(
123 VkPhysicalDevice physicalDevice,
124 uint32_t* pQueueFamilyPropertyCount,
125 VkQueueFamilyProperties* pQueueFamilyProperties)
126{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800127 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800128 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800129 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800130}
131static void entry_vkGetPhysicalDeviceMemoryProperties(
132 VkPhysicalDevice physicalDevice,
133 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
134{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800135 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800136 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800137 vkEnc->vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800138}
139static PFN_vkVoidFunction entry_vkGetInstanceProcAddr(
140 VkInstance instance,
141 const char* pName)
142{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800143 AEMU_SCOPED_TRACE("vkGetInstanceProcAddr");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800144 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800145 PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800146 vkGetInstanceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetInstanceProcAddr(instance, pName, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800147 return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
148}
149static PFN_vkVoidFunction entry_vkGetDeviceProcAddr(
150 VkDevice device,
151 const char* pName)
152{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800153 AEMU_SCOPED_TRACE("vkGetDeviceProcAddr");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800154 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800155 PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800156 vkGetDeviceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetDeviceProcAddr(device, pName, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800157 return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
158}
159static VkResult entry_vkCreateDevice(
160 VkPhysicalDevice physicalDevice,
161 const VkDeviceCreateInfo* pCreateInfo,
162 const VkAllocationCallbacks* pAllocator,
163 VkDevice* pDevice)
164{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800165 AEMU_SCOPED_TRACE("vkCreateDevice");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800166 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800167 VkResult vkCreateDevice_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800168 vkCreateDevice_VkResult_return = vkEnc->vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800169 return vkCreateDevice_VkResult_return;
170}
171static void entry_vkDestroyDevice(
172 VkDevice device,
173 const VkAllocationCallbacks* pAllocator)
174{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800175 AEMU_SCOPED_TRACE("vkDestroyDevice");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800176 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800177 vkEnc->vkDestroyDevice(device, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800178}
179static VkResult entry_vkEnumerateInstanceExtensionProperties(
180 const char* pLayerName,
181 uint32_t* pPropertyCount,
182 VkExtensionProperties* pProperties)
183{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800184 AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800185 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800186 VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -0800187 auto resources = ResourceTracker::get();
188 vkEnumerateInstanceExtensionProperties_VkResult_return = resources->on_vkEnumerateInstanceExtensionProperties(vkEnc, VK_SUCCESS, pLayerName, pPropertyCount, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800189 return vkEnumerateInstanceExtensionProperties_VkResult_return;
190}
191static VkResult entry_vkEnumerateDeviceExtensionProperties(
192 VkPhysicalDevice physicalDevice,
193 const char* pLayerName,
194 uint32_t* pPropertyCount,
195 VkExtensionProperties* pProperties)
196{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800197 AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800198 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800199 VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -0800200 auto resources = ResourceTracker::get();
201 vkEnumerateDeviceExtensionProperties_VkResult_return = resources->on_vkEnumerateDeviceExtensionProperties(vkEnc, VK_SUCCESS, physicalDevice, pLayerName, pPropertyCount, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800202 return vkEnumerateDeviceExtensionProperties_VkResult_return;
203}
204static VkResult entry_vkEnumerateInstanceLayerProperties(
205 uint32_t* pPropertyCount,
206 VkLayerProperties* pProperties)
207{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800208 AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800209 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800210 VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800211 vkEnumerateInstanceLayerProperties_VkResult_return = vkEnc->vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800212 return vkEnumerateInstanceLayerProperties_VkResult_return;
213}
214static VkResult entry_vkEnumerateDeviceLayerProperties(
215 VkPhysicalDevice physicalDevice,
216 uint32_t* pPropertyCount,
217 VkLayerProperties* pProperties)
218{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800219 AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800220 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800221 VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800222 vkEnumerateDeviceLayerProperties_VkResult_return = vkEnc->vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800223 return vkEnumerateDeviceLayerProperties_VkResult_return;
224}
225static void entry_vkGetDeviceQueue(
226 VkDevice device,
227 uint32_t queueFamilyIndex,
228 uint32_t queueIndex,
229 VkQueue* pQueue)
230{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800231 AEMU_SCOPED_TRACE("vkGetDeviceQueue");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800232 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800233 vkEnc->vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800234}
235static VkResult entry_vkQueueSubmit(
236 VkQueue queue,
237 uint32_t submitCount,
238 const VkSubmitInfo* pSubmits,
239 VkFence fence)
240{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800241 AEMU_SCOPED_TRACE("vkQueueSubmit");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800242 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800243 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
David Reveman24710222019-02-25 02:21:42 -0500244 auto resources = ResourceTracker::get();
245 vkQueueSubmit_VkResult_return = resources->on_vkQueueSubmit(vkEnc, VK_SUCCESS, queue, submitCount, pSubmits, fence);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800246 return vkQueueSubmit_VkResult_return;
247}
248static VkResult entry_vkQueueWaitIdle(
249 VkQueue queue)
250{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800251 AEMU_SCOPED_TRACE("vkQueueWaitIdle");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800252 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800253 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700254 auto resources = ResourceTracker::get();
255 vkQueueWaitIdle_VkResult_return = resources->on_vkQueueWaitIdle(vkEnc, VK_SUCCESS, queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800256 return vkQueueWaitIdle_VkResult_return;
257}
258static VkResult entry_vkDeviceWaitIdle(
259 VkDevice device)
260{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800261 AEMU_SCOPED_TRACE("vkDeviceWaitIdle");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800262 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800263 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800264 vkDeviceWaitIdle_VkResult_return = vkEnc->vkDeviceWaitIdle(device, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800265 return vkDeviceWaitIdle_VkResult_return;
266}
267static VkResult entry_vkAllocateMemory(
268 VkDevice device,
269 const VkMemoryAllocateInfo* pAllocateInfo,
270 const VkAllocationCallbacks* pAllocator,
271 VkDeviceMemory* pMemory)
272{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800273 AEMU_SCOPED_TRACE("vkAllocateMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800274 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800275 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
Lingfeng Yange9979522018-12-25 14:44:52 -0800276 auto resources = ResourceTracker::get();
277 vkAllocateMemory_VkResult_return = resources->on_vkAllocateMemory(vkEnc, VK_SUCCESS, device, pAllocateInfo, pAllocator, pMemory);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800278 return vkAllocateMemory_VkResult_return;
279}
280static void entry_vkFreeMemory(
281 VkDevice device,
282 VkDeviceMemory memory,
283 const VkAllocationCallbacks* pAllocator)
284{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800285 AEMU_SCOPED_TRACE("vkFreeMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800286 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yange9979522018-12-25 14:44:52 -0800287 auto resources = ResourceTracker::get();
288 resources->on_vkFreeMemory(vkEnc, device, memory, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800289}
290static VkResult entry_vkMapMemory(
291 VkDevice device,
292 VkDeviceMemory memory,
293 VkDeviceSize offset,
294 VkDeviceSize size,
295 VkMemoryMapFlags flags,
296 void** ppData)
297{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800298 AEMU_SCOPED_TRACE("vkMapMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800299 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800300 VkResult vkMapMemory_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800301 vkMapMemory_VkResult_return = vkEnc->vkMapMemory(device, memory, offset, size, flags, ppData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800302 return vkMapMemory_VkResult_return;
303}
304static void entry_vkUnmapMemory(
305 VkDevice device,
306 VkDeviceMemory memory)
307{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800308 AEMU_SCOPED_TRACE("vkUnmapMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800309 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800310 vkEnc->vkUnmapMemory(device, memory, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800311}
312static VkResult entry_vkFlushMappedMemoryRanges(
313 VkDevice device,
314 uint32_t memoryRangeCount,
315 const VkMappedMemoryRange* pMemoryRanges)
316{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800317 AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800318 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800319 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800320 vkFlushMappedMemoryRanges_VkResult_return = vkEnc->vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800321 return vkFlushMappedMemoryRanges_VkResult_return;
322}
323static VkResult entry_vkInvalidateMappedMemoryRanges(
324 VkDevice device,
325 uint32_t memoryRangeCount,
326 const VkMappedMemoryRange* pMemoryRanges)
327{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800328 AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800329 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800330 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800331 vkInvalidateMappedMemoryRanges_VkResult_return = vkEnc->vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800332 return vkInvalidateMappedMemoryRanges_VkResult_return;
333}
334static void entry_vkGetDeviceMemoryCommitment(
335 VkDevice device,
336 VkDeviceMemory memory,
337 VkDeviceSize* pCommittedMemoryInBytes)
338{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800339 AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800340 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800341 vkEnc->vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800342}
343static VkResult entry_vkBindBufferMemory(
344 VkDevice device,
345 VkBuffer buffer,
346 VkDeviceMemory memory,
347 VkDeviceSize memoryOffset)
348{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800349 AEMU_SCOPED_TRACE("vkBindBufferMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800350 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800351 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800352 auto resources = ResourceTracker::get();
353 vkBindBufferMemory_VkResult_return = resources->on_vkBindBufferMemory(vkEnc, VK_SUCCESS, device, buffer, memory, memoryOffset);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800354 return vkBindBufferMemory_VkResult_return;
355}
356static VkResult entry_vkBindImageMemory(
357 VkDevice device,
358 VkImage image,
359 VkDeviceMemory memory,
360 VkDeviceSize memoryOffset)
361{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800362 AEMU_SCOPED_TRACE("vkBindImageMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800363 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800364 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800365 auto resources = ResourceTracker::get();
366 vkBindImageMemory_VkResult_return = resources->on_vkBindImageMemory(vkEnc, VK_SUCCESS, device, image, memory, memoryOffset);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800367 return vkBindImageMemory_VkResult_return;
368}
369static void entry_vkGetBufferMemoryRequirements(
370 VkDevice device,
371 VkBuffer buffer,
372 VkMemoryRequirements* pMemoryRequirements)
373{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800374 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800375 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800376 auto resources = ResourceTracker::get();
377 resources->on_vkGetBufferMemoryRequirements(vkEnc, device, buffer, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800378}
379static void entry_vkGetImageMemoryRequirements(
380 VkDevice device,
381 VkImage image,
382 VkMemoryRequirements* pMemoryRequirements)
383{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800384 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800385 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800386 auto resources = ResourceTracker::get();
387 resources->on_vkGetImageMemoryRequirements(vkEnc, device, image, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800388}
389static void entry_vkGetImageSparseMemoryRequirements(
390 VkDevice device,
391 VkImage image,
392 uint32_t* pSparseMemoryRequirementCount,
393 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
394{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800395 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800396 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800397 vkEnc->vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800398}
399static void entry_vkGetPhysicalDeviceSparseImageFormatProperties(
400 VkPhysicalDevice physicalDevice,
401 VkFormat format,
402 VkImageType type,
403 VkSampleCountFlagBits samples,
404 VkImageUsageFlags usage,
405 VkImageTiling tiling,
406 uint32_t* pPropertyCount,
407 VkSparseImageFormatProperties* pProperties)
408{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800409 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800410 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800411 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800412}
413static VkResult entry_vkQueueBindSparse(
414 VkQueue queue,
415 uint32_t bindInfoCount,
416 const VkBindSparseInfo* pBindInfo,
417 VkFence fence)
418{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800419 AEMU_SCOPED_TRACE("vkQueueBindSparse");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800420 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800421 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800422 vkQueueBindSparse_VkResult_return = vkEnc->vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800423 return vkQueueBindSparse_VkResult_return;
424}
425static VkResult entry_vkCreateFence(
426 VkDevice device,
427 const VkFenceCreateInfo* pCreateInfo,
428 const VkAllocationCallbacks* pAllocator,
429 VkFence* pFence)
430{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800431 AEMU_SCOPED_TRACE("vkCreateFence");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800432 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800433 VkResult vkCreateFence_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700434 auto resources = ResourceTracker::get();
435 vkCreateFence_VkResult_return = resources->on_vkCreateFence(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pFence);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800436 return vkCreateFence_VkResult_return;
437}
438static void entry_vkDestroyFence(
439 VkDevice device,
440 VkFence fence,
441 const VkAllocationCallbacks* pAllocator)
442{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800443 AEMU_SCOPED_TRACE("vkDestroyFence");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800444 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800445 vkEnc->vkDestroyFence(device, fence, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800446}
447static VkResult entry_vkResetFences(
448 VkDevice device,
449 uint32_t fenceCount,
450 const VkFence* pFences)
451{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800452 AEMU_SCOPED_TRACE("vkResetFences");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800453 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800454 VkResult vkResetFences_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700455 auto resources = ResourceTracker::get();
456 vkResetFences_VkResult_return = resources->on_vkResetFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800457 return vkResetFences_VkResult_return;
458}
459static VkResult entry_vkGetFenceStatus(
460 VkDevice device,
461 VkFence fence)
462{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800463 AEMU_SCOPED_TRACE("vkGetFenceStatus");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800464 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800465 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800466 vkGetFenceStatus_VkResult_return = vkEnc->vkGetFenceStatus(device, fence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800467 return vkGetFenceStatus_VkResult_return;
468}
469static VkResult entry_vkWaitForFences(
470 VkDevice device,
471 uint32_t fenceCount,
472 const VkFence* pFences,
473 VkBool32 waitAll,
474 uint64_t timeout)
475{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800476 AEMU_SCOPED_TRACE("vkWaitForFences");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800477 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800478 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700479 auto resources = ResourceTracker::get();
480 vkWaitForFences_VkResult_return = resources->on_vkWaitForFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences, waitAll, timeout);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800481 return vkWaitForFences_VkResult_return;
482}
483static VkResult entry_vkCreateSemaphore(
484 VkDevice device,
485 const VkSemaphoreCreateInfo* pCreateInfo,
486 const VkAllocationCallbacks* pAllocator,
487 VkSemaphore* pSemaphore)
488{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800489 AEMU_SCOPED_TRACE("vkCreateSemaphore");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800490 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800491 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
David Reveman32b110e2019-02-21 13:20:54 -0500492 auto resources = ResourceTracker::get();
493 vkCreateSemaphore_VkResult_return = resources->on_vkCreateSemaphore(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSemaphore);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800494 return vkCreateSemaphore_VkResult_return;
495}
496static void entry_vkDestroySemaphore(
497 VkDevice device,
498 VkSemaphore semaphore,
499 const VkAllocationCallbacks* pAllocator)
500{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800501 AEMU_SCOPED_TRACE("vkDestroySemaphore");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800502 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
David Reveman32b110e2019-02-21 13:20:54 -0500503 auto resources = ResourceTracker::get();
504 resources->on_vkDestroySemaphore(vkEnc, device, semaphore, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800505}
506static VkResult entry_vkCreateEvent(
507 VkDevice device,
508 const VkEventCreateInfo* pCreateInfo,
509 const VkAllocationCallbacks* pAllocator,
510 VkEvent* pEvent)
511{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800512 AEMU_SCOPED_TRACE("vkCreateEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800513 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800514 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800515 vkCreateEvent_VkResult_return = vkEnc->vkCreateEvent(device, pCreateInfo, pAllocator, pEvent, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800516 return vkCreateEvent_VkResult_return;
517}
518static void entry_vkDestroyEvent(
519 VkDevice device,
520 VkEvent event,
521 const VkAllocationCallbacks* pAllocator)
522{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800523 AEMU_SCOPED_TRACE("vkDestroyEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800524 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800525 vkEnc->vkDestroyEvent(device, event, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800526}
527static VkResult entry_vkGetEventStatus(
528 VkDevice device,
529 VkEvent event)
530{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800531 AEMU_SCOPED_TRACE("vkGetEventStatus");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800532 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800533 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800534 vkGetEventStatus_VkResult_return = vkEnc->vkGetEventStatus(device, event, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800535 return vkGetEventStatus_VkResult_return;
536}
537static VkResult entry_vkSetEvent(
538 VkDevice device,
539 VkEvent event)
540{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800541 AEMU_SCOPED_TRACE("vkSetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800542 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800543 VkResult vkSetEvent_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800544 vkSetEvent_VkResult_return = vkEnc->vkSetEvent(device, event, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800545 return vkSetEvent_VkResult_return;
546}
547static VkResult entry_vkResetEvent(
548 VkDevice device,
549 VkEvent event)
550{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800551 AEMU_SCOPED_TRACE("vkResetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800552 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800553 VkResult vkResetEvent_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800554 vkResetEvent_VkResult_return = vkEnc->vkResetEvent(device, event, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800555 return vkResetEvent_VkResult_return;
556}
557static VkResult entry_vkCreateQueryPool(
558 VkDevice device,
559 const VkQueryPoolCreateInfo* pCreateInfo,
560 const VkAllocationCallbacks* pAllocator,
561 VkQueryPool* pQueryPool)
562{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800563 AEMU_SCOPED_TRACE("vkCreateQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800564 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800565 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800566 vkCreateQueryPool_VkResult_return = vkEnc->vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800567 return vkCreateQueryPool_VkResult_return;
568}
569static void entry_vkDestroyQueryPool(
570 VkDevice device,
571 VkQueryPool queryPool,
572 const VkAllocationCallbacks* pAllocator)
573{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800574 AEMU_SCOPED_TRACE("vkDestroyQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800575 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800576 vkEnc->vkDestroyQueryPool(device, queryPool, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800577}
578static VkResult entry_vkGetQueryPoolResults(
579 VkDevice device,
580 VkQueryPool queryPool,
581 uint32_t firstQuery,
582 uint32_t queryCount,
583 size_t dataSize,
584 void* pData,
585 VkDeviceSize stride,
586 VkQueryResultFlags flags)
587{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800588 AEMU_SCOPED_TRACE("vkGetQueryPoolResults");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800589 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800590 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800591 vkGetQueryPoolResults_VkResult_return = vkEnc->vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800592 return vkGetQueryPoolResults_VkResult_return;
593}
594static VkResult entry_vkCreateBuffer(
595 VkDevice device,
596 const VkBufferCreateInfo* pCreateInfo,
597 const VkAllocationCallbacks* pAllocator,
598 VkBuffer* pBuffer)
599{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800600 AEMU_SCOPED_TRACE("vkCreateBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800601 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800602 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800603 auto resources = ResourceTracker::get();
604 vkCreateBuffer_VkResult_return = resources->on_vkCreateBuffer(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800605 return vkCreateBuffer_VkResult_return;
606}
607static void entry_vkDestroyBuffer(
608 VkDevice device,
609 VkBuffer buffer,
610 const VkAllocationCallbacks* pAllocator)
611{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800612 AEMU_SCOPED_TRACE("vkDestroyBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800613 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800614 auto resources = ResourceTracker::get();
615 resources->on_vkDestroyBuffer(vkEnc, device, buffer, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800616}
617static VkResult entry_vkCreateBufferView(
618 VkDevice device,
619 const VkBufferViewCreateInfo* pCreateInfo,
620 const VkAllocationCallbacks* pAllocator,
621 VkBufferView* pView)
622{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800623 AEMU_SCOPED_TRACE("vkCreateBufferView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800624 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800625 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800626 vkCreateBufferView_VkResult_return = vkEnc->vkCreateBufferView(device, pCreateInfo, pAllocator, pView, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800627 return vkCreateBufferView_VkResult_return;
628}
629static void entry_vkDestroyBufferView(
630 VkDevice device,
631 VkBufferView bufferView,
632 const VkAllocationCallbacks* pAllocator)
633{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800634 AEMU_SCOPED_TRACE("vkDestroyBufferView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800635 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800636 vkEnc->vkDestroyBufferView(device, bufferView, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800637}
638static VkResult entry_vkCreateImage(
639 VkDevice device,
640 const VkImageCreateInfo* pCreateInfo,
641 const VkAllocationCallbacks* pAllocator,
642 VkImage* pImage)
643{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800644 AEMU_SCOPED_TRACE("vkCreateImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800645 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800646 VkResult vkCreateImage_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800647 auto resources = ResourceTracker::get();
648 vkCreateImage_VkResult_return = resources->on_vkCreateImage(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pImage);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800649 return vkCreateImage_VkResult_return;
650}
651static void entry_vkDestroyImage(
652 VkDevice device,
653 VkImage image,
654 const VkAllocationCallbacks* pAllocator)
655{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800656 AEMU_SCOPED_TRACE("vkDestroyImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800657 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800658 auto resources = ResourceTracker::get();
659 resources->on_vkDestroyImage(vkEnc, device, image, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800660}
661static void entry_vkGetImageSubresourceLayout(
662 VkDevice device,
663 VkImage image,
664 const VkImageSubresource* pSubresource,
665 VkSubresourceLayout* pLayout)
666{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800667 AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800668 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800669 vkEnc->vkGetImageSubresourceLayout(device, image, pSubresource, pLayout, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800670}
671static VkResult entry_vkCreateImageView(
672 VkDevice device,
673 const VkImageViewCreateInfo* pCreateInfo,
674 const VkAllocationCallbacks* pAllocator,
675 VkImageView* pView)
676{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800677 AEMU_SCOPED_TRACE("vkCreateImageView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800678 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800679 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
Roman Kiryanov6db11e52019-04-26 14:18:14 -0700680 auto resources = ResourceTracker::get();
681 vkCreateImageView_VkResult_return = resources->on_vkCreateImageView(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pView);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800682 return vkCreateImageView_VkResult_return;
683}
684static void entry_vkDestroyImageView(
685 VkDevice device,
686 VkImageView imageView,
687 const VkAllocationCallbacks* pAllocator)
688{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800689 AEMU_SCOPED_TRACE("vkDestroyImageView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800690 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800691 vkEnc->vkDestroyImageView(device, imageView, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800692}
693static VkResult entry_vkCreateShaderModule(
694 VkDevice device,
695 const VkShaderModuleCreateInfo* pCreateInfo,
696 const VkAllocationCallbacks* pAllocator,
697 VkShaderModule* pShaderModule)
698{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800699 AEMU_SCOPED_TRACE("vkCreateShaderModule");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800700 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800701 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800702 vkCreateShaderModule_VkResult_return = vkEnc->vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800703 return vkCreateShaderModule_VkResult_return;
704}
705static void entry_vkDestroyShaderModule(
706 VkDevice device,
707 VkShaderModule shaderModule,
708 const VkAllocationCallbacks* pAllocator)
709{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800710 AEMU_SCOPED_TRACE("vkDestroyShaderModule");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800711 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800712 vkEnc->vkDestroyShaderModule(device, shaderModule, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800713}
714static VkResult entry_vkCreatePipelineCache(
715 VkDevice device,
716 const VkPipelineCacheCreateInfo* pCreateInfo,
717 const VkAllocationCallbacks* pAllocator,
718 VkPipelineCache* pPipelineCache)
719{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800720 AEMU_SCOPED_TRACE("vkCreatePipelineCache");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800721 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800722 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800723 vkCreatePipelineCache_VkResult_return = vkEnc->vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800724 return vkCreatePipelineCache_VkResult_return;
725}
726static void entry_vkDestroyPipelineCache(
727 VkDevice device,
728 VkPipelineCache pipelineCache,
729 const VkAllocationCallbacks* pAllocator)
730{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800731 AEMU_SCOPED_TRACE("vkDestroyPipelineCache");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800732 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800733 vkEnc->vkDestroyPipelineCache(device, pipelineCache, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800734}
735static VkResult entry_vkGetPipelineCacheData(
736 VkDevice device,
737 VkPipelineCache pipelineCache,
738 size_t* pDataSize,
739 void* pData)
740{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800741 AEMU_SCOPED_TRACE("vkGetPipelineCacheData");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800742 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800743 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800744 vkGetPipelineCacheData_VkResult_return = vkEnc->vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800745 return vkGetPipelineCacheData_VkResult_return;
746}
747static VkResult entry_vkMergePipelineCaches(
748 VkDevice device,
749 VkPipelineCache dstCache,
750 uint32_t srcCacheCount,
751 const VkPipelineCache* pSrcCaches)
752{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800753 AEMU_SCOPED_TRACE("vkMergePipelineCaches");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800754 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800755 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800756 vkMergePipelineCaches_VkResult_return = vkEnc->vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800757 return vkMergePipelineCaches_VkResult_return;
758}
759static VkResult entry_vkCreateGraphicsPipelines(
760 VkDevice device,
761 VkPipelineCache pipelineCache,
762 uint32_t createInfoCount,
763 const VkGraphicsPipelineCreateInfo* pCreateInfos,
764 const VkAllocationCallbacks* pAllocator,
765 VkPipeline* pPipelines)
766{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800767 AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800768 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800769 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800770 vkCreateGraphicsPipelines_VkResult_return = vkEnc->vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800771 return vkCreateGraphicsPipelines_VkResult_return;
772}
773static VkResult entry_vkCreateComputePipelines(
774 VkDevice device,
775 VkPipelineCache pipelineCache,
776 uint32_t createInfoCount,
777 const VkComputePipelineCreateInfo* pCreateInfos,
778 const VkAllocationCallbacks* pAllocator,
779 VkPipeline* pPipelines)
780{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800781 AEMU_SCOPED_TRACE("vkCreateComputePipelines");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800782 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800783 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800784 vkCreateComputePipelines_VkResult_return = vkEnc->vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800785 return vkCreateComputePipelines_VkResult_return;
786}
787static void entry_vkDestroyPipeline(
788 VkDevice device,
789 VkPipeline pipeline,
790 const VkAllocationCallbacks* pAllocator)
791{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800792 AEMU_SCOPED_TRACE("vkDestroyPipeline");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800793 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800794 vkEnc->vkDestroyPipeline(device, pipeline, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800795}
796static VkResult entry_vkCreatePipelineLayout(
797 VkDevice device,
798 const VkPipelineLayoutCreateInfo* pCreateInfo,
799 const VkAllocationCallbacks* pAllocator,
800 VkPipelineLayout* pPipelineLayout)
801{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800802 AEMU_SCOPED_TRACE("vkCreatePipelineLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800803 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800804 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800805 vkCreatePipelineLayout_VkResult_return = vkEnc->vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800806 return vkCreatePipelineLayout_VkResult_return;
807}
808static void entry_vkDestroyPipelineLayout(
809 VkDevice device,
810 VkPipelineLayout pipelineLayout,
811 const VkAllocationCallbacks* pAllocator)
812{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800813 AEMU_SCOPED_TRACE("vkDestroyPipelineLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800814 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800815 vkEnc->vkDestroyPipelineLayout(device, pipelineLayout, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800816}
817static VkResult entry_vkCreateSampler(
818 VkDevice device,
819 const VkSamplerCreateInfo* pCreateInfo,
820 const VkAllocationCallbacks* pAllocator,
821 VkSampler* pSampler)
822{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800823 AEMU_SCOPED_TRACE("vkCreateSampler");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800824 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800825 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
Roman Kiryanov004f48c2019-06-28 14:59:32 -0700826 auto resources = ResourceTracker::get();
827 vkCreateSampler_VkResult_return = resources->on_vkCreateSampler(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSampler);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800828 return vkCreateSampler_VkResult_return;
829}
830static void entry_vkDestroySampler(
831 VkDevice device,
832 VkSampler sampler,
833 const VkAllocationCallbacks* pAllocator)
834{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800835 AEMU_SCOPED_TRACE("vkDestroySampler");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800836 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800837 vkEnc->vkDestroySampler(device, sampler, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800838}
839static VkResult entry_vkCreateDescriptorSetLayout(
840 VkDevice device,
841 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
842 const VkAllocationCallbacks* pAllocator,
843 VkDescriptorSetLayout* pSetLayout)
844{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800845 AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800846 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800847 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
Lingfeng Yang03354c72020-03-26 13:00:51 -0700848 auto resources = ResourceTracker::get();
849 vkCreateDescriptorSetLayout_VkResult_return = resources->on_vkCreateDescriptorSetLayout(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSetLayout);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800850 return vkCreateDescriptorSetLayout_VkResult_return;
851}
852static void entry_vkDestroyDescriptorSetLayout(
853 VkDevice device,
854 VkDescriptorSetLayout descriptorSetLayout,
855 const VkAllocationCallbacks* pAllocator)
856{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800857 AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800858 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800859 vkEnc->vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800860}
861static VkResult entry_vkCreateDescriptorPool(
862 VkDevice device,
863 const VkDescriptorPoolCreateInfo* pCreateInfo,
864 const VkAllocationCallbacks* pAllocator,
865 VkDescriptorPool* pDescriptorPool)
866{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800867 AEMU_SCOPED_TRACE("vkCreateDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800868 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800869 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700870 auto resources = ResourceTracker::get();
871 vkCreateDescriptorPool_VkResult_return = resources->on_vkCreateDescriptorPool(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pDescriptorPool);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800872 return vkCreateDescriptorPool_VkResult_return;
873}
874static void entry_vkDestroyDescriptorPool(
875 VkDevice device,
876 VkDescriptorPool descriptorPool,
877 const VkAllocationCallbacks* pAllocator)
878{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800879 AEMU_SCOPED_TRACE("vkDestroyDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800880 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700881 auto resources = ResourceTracker::get();
882 resources->on_vkDestroyDescriptorPool(vkEnc, device, descriptorPool, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800883}
884static VkResult entry_vkResetDescriptorPool(
885 VkDevice device,
886 VkDescriptorPool descriptorPool,
887 VkDescriptorPoolResetFlags flags)
888{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800889 AEMU_SCOPED_TRACE("vkResetDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800890 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800891 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700892 auto resources = ResourceTracker::get();
893 vkResetDescriptorPool_VkResult_return = resources->on_vkResetDescriptorPool(vkEnc, VK_SUCCESS, device, descriptorPool, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800894 return vkResetDescriptorPool_VkResult_return;
895}
896static VkResult entry_vkAllocateDescriptorSets(
897 VkDevice device,
898 const VkDescriptorSetAllocateInfo* pAllocateInfo,
899 VkDescriptorSet* pDescriptorSets)
900{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800901 AEMU_SCOPED_TRACE("vkAllocateDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800902 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800903 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700904 auto resources = ResourceTracker::get();
905 vkAllocateDescriptorSets_VkResult_return = resources->on_vkAllocateDescriptorSets(vkEnc, VK_SUCCESS, device, pAllocateInfo, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800906 return vkAllocateDescriptorSets_VkResult_return;
907}
908static VkResult entry_vkFreeDescriptorSets(
909 VkDevice device,
910 VkDescriptorPool descriptorPool,
911 uint32_t descriptorSetCount,
912 const VkDescriptorSet* pDescriptorSets)
913{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800914 AEMU_SCOPED_TRACE("vkFreeDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800915 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800916 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700917 auto resources = ResourceTracker::get();
918 vkFreeDescriptorSets_VkResult_return = resources->on_vkFreeDescriptorSets(vkEnc, VK_SUCCESS, device, descriptorPool, descriptorSetCount, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800919 return vkFreeDescriptorSets_VkResult_return;
920}
921static void entry_vkUpdateDescriptorSets(
922 VkDevice device,
923 uint32_t descriptorWriteCount,
924 const VkWriteDescriptorSet* pDescriptorWrites,
925 uint32_t descriptorCopyCount,
926 const VkCopyDescriptorSet* pDescriptorCopies)
927{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800928 AEMU_SCOPED_TRACE("vkUpdateDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800929 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang03354c72020-03-26 13:00:51 -0700930 auto resources = ResourceTracker::get();
931 resources->on_vkUpdateDescriptorSets(vkEnc, device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800932}
933static VkResult entry_vkCreateFramebuffer(
934 VkDevice device,
935 const VkFramebufferCreateInfo* pCreateInfo,
936 const VkAllocationCallbacks* pAllocator,
937 VkFramebuffer* pFramebuffer)
938{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800939 AEMU_SCOPED_TRACE("vkCreateFramebuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800940 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800941 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800942 vkCreateFramebuffer_VkResult_return = vkEnc->vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800943 return vkCreateFramebuffer_VkResult_return;
944}
945static void entry_vkDestroyFramebuffer(
946 VkDevice device,
947 VkFramebuffer framebuffer,
948 const VkAllocationCallbacks* pAllocator)
949{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800950 AEMU_SCOPED_TRACE("vkDestroyFramebuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800951 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800952 vkEnc->vkDestroyFramebuffer(device, framebuffer, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800953}
954static VkResult entry_vkCreateRenderPass(
955 VkDevice device,
956 const VkRenderPassCreateInfo* pCreateInfo,
957 const VkAllocationCallbacks* pAllocator,
958 VkRenderPass* pRenderPass)
959{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800960 AEMU_SCOPED_TRACE("vkCreateRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800961 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800962 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800963 vkCreateRenderPass_VkResult_return = vkEnc->vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800964 return vkCreateRenderPass_VkResult_return;
965}
966static void entry_vkDestroyRenderPass(
967 VkDevice device,
968 VkRenderPass renderPass,
969 const VkAllocationCallbacks* pAllocator)
970{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800971 AEMU_SCOPED_TRACE("vkDestroyRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800972 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800973 vkEnc->vkDestroyRenderPass(device, renderPass, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800974}
975static void entry_vkGetRenderAreaGranularity(
976 VkDevice device,
977 VkRenderPass renderPass,
978 VkExtent2D* pGranularity)
979{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800980 AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800981 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800982 vkEnc->vkGetRenderAreaGranularity(device, renderPass, pGranularity, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800983}
984static VkResult entry_vkCreateCommandPool(
985 VkDevice device,
986 const VkCommandPoolCreateInfo* pCreateInfo,
987 const VkAllocationCallbacks* pAllocator,
988 VkCommandPool* pCommandPool)
989{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800990 AEMU_SCOPED_TRACE("vkCreateCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800991 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800992 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800993 vkCreateCommandPool_VkResult_return = vkEnc->vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800994 return vkCreateCommandPool_VkResult_return;
995}
996static void entry_vkDestroyCommandPool(
997 VkDevice device,
998 VkCommandPool commandPool,
999 const VkAllocationCallbacks* pAllocator)
1000{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001001 AEMU_SCOPED_TRACE("vkDestroyCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001002 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001003 vkEnc->vkDestroyCommandPool(device, commandPool, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001004}
1005static VkResult entry_vkResetCommandPool(
1006 VkDevice device,
1007 VkCommandPool commandPool,
1008 VkCommandPoolResetFlags flags)
1009{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001010 AEMU_SCOPED_TRACE("vkResetCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001011 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001012 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001013 vkResetCommandPool_VkResult_return = vkEnc->vkResetCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang4f539502021-01-22 23:01:57 -08001014 if (vkResetCommandPool_VkResult_return == VK_SUCCESS) {
1015 ResourceTracker::get()->resetCommandPoolStagingInfo(commandPool);
1016 }
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001017 return vkResetCommandPool_VkResult_return;
1018}
1019static VkResult entry_vkAllocateCommandBuffers(
1020 VkDevice device,
1021 const VkCommandBufferAllocateInfo* pAllocateInfo,
1022 VkCommandBuffer* pCommandBuffers)
1023{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001024 AEMU_SCOPED_TRACE("vkAllocateCommandBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001025 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001026 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001027 vkAllocateCommandBuffers_VkResult_return = vkEnc->vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers, true /* do lock */);
Lingfeng Yang4f539502021-01-22 23:01:57 -08001028 if (vkAllocateCommandBuffers_VkResult_return == VK_SUCCESS) {
1029 ResourceTracker::get()->addToCommandPool(pAllocateInfo->commandPool, pAllocateInfo->commandBufferCount, pCommandBuffers);
1030 }
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001031 return vkAllocateCommandBuffers_VkResult_return;
1032}
1033static void entry_vkFreeCommandBuffers(
1034 VkDevice device,
1035 VkCommandPool commandPool,
1036 uint32_t commandBufferCount,
1037 const VkCommandBuffer* pCommandBuffers)
1038{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001039 AEMU_SCOPED_TRACE("vkFreeCommandBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001040 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001041 vkEnc->vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001042}
1043static VkResult entry_vkBeginCommandBuffer(
1044 VkCommandBuffer commandBuffer,
1045 const VkCommandBufferBeginInfo* pBeginInfo)
1046{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001047 AEMU_SCOPED_TRACE("vkBeginCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001048 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001049 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001050 auto resources = ResourceTracker::get();
1051 vkBeginCommandBuffer_VkResult_return = resources->on_vkBeginCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, pBeginInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001052 return vkBeginCommandBuffer_VkResult_return;
1053}
1054static VkResult entry_vkEndCommandBuffer(
1055 VkCommandBuffer commandBuffer)
1056{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001057 AEMU_SCOPED_TRACE("vkEndCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001058 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001059 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001060 auto resources = ResourceTracker::get();
1061 vkEndCommandBuffer_VkResult_return = resources->on_vkEndCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001062 return vkEndCommandBuffer_VkResult_return;
1063}
1064static VkResult entry_vkResetCommandBuffer(
1065 VkCommandBuffer commandBuffer,
1066 VkCommandBufferResetFlags flags)
1067{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001068 AEMU_SCOPED_TRACE("vkResetCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001069 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001070 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001071 auto resources = ResourceTracker::get();
1072 vkResetCommandBuffer_VkResult_return = resources->on_vkResetCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001073 return vkResetCommandBuffer_VkResult_return;
1074}
1075static void entry_vkCmdBindPipeline(
1076 VkCommandBuffer commandBuffer,
1077 VkPipelineBindPoint pipelineBindPoint,
1078 VkPipeline pipeline)
1079{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001080 AEMU_SCOPED_TRACE("vkCmdBindPipeline");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001081 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001082 vkEnc->vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001083}
1084static void entry_vkCmdSetViewport(
1085 VkCommandBuffer commandBuffer,
1086 uint32_t firstViewport,
1087 uint32_t viewportCount,
1088 const VkViewport* pViewports)
1089{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001090 AEMU_SCOPED_TRACE("vkCmdSetViewport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001091 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001092 vkEnc->vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001093}
1094static void entry_vkCmdSetScissor(
1095 VkCommandBuffer commandBuffer,
1096 uint32_t firstScissor,
1097 uint32_t scissorCount,
1098 const VkRect2D* pScissors)
1099{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001100 AEMU_SCOPED_TRACE("vkCmdSetScissor");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001101 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001102 vkEnc->vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001103}
1104static void entry_vkCmdSetLineWidth(
1105 VkCommandBuffer commandBuffer,
1106 float lineWidth)
1107{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001108 AEMU_SCOPED_TRACE("vkCmdSetLineWidth");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001109 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001110 vkEnc->vkCmdSetLineWidth(commandBuffer, lineWidth, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001111}
1112static void entry_vkCmdSetDepthBias(
1113 VkCommandBuffer commandBuffer,
1114 float depthBiasConstantFactor,
1115 float depthBiasClamp,
1116 float depthBiasSlopeFactor)
1117{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001118 AEMU_SCOPED_TRACE("vkCmdSetDepthBias");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001119 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001120 vkEnc->vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001121}
1122static void entry_vkCmdSetBlendConstants(
1123 VkCommandBuffer commandBuffer,
Lingfeng Yang97ddeb82019-04-20 14:32:52 -07001124 const float blendConstants[4])
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001125{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001126 AEMU_SCOPED_TRACE("vkCmdSetBlendConstants");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001127 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001128 vkEnc->vkCmdSetBlendConstants(commandBuffer, blendConstants, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001129}
1130static void entry_vkCmdSetDepthBounds(
1131 VkCommandBuffer commandBuffer,
1132 float minDepthBounds,
1133 float maxDepthBounds)
1134{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001135 AEMU_SCOPED_TRACE("vkCmdSetDepthBounds");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001136 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001137 vkEnc->vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001138}
1139static void entry_vkCmdSetStencilCompareMask(
1140 VkCommandBuffer commandBuffer,
1141 VkStencilFaceFlags faceMask,
1142 uint32_t compareMask)
1143{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001144 AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001145 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001146 vkEnc->vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001147}
1148static void entry_vkCmdSetStencilWriteMask(
1149 VkCommandBuffer commandBuffer,
1150 VkStencilFaceFlags faceMask,
1151 uint32_t writeMask)
1152{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001153 AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001154 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001155 vkEnc->vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001156}
1157static void entry_vkCmdSetStencilReference(
1158 VkCommandBuffer commandBuffer,
1159 VkStencilFaceFlags faceMask,
1160 uint32_t reference)
1161{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001162 AEMU_SCOPED_TRACE("vkCmdSetStencilReference");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001163 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001164 vkEnc->vkCmdSetStencilReference(commandBuffer, faceMask, reference, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001165}
1166static void entry_vkCmdBindDescriptorSets(
1167 VkCommandBuffer commandBuffer,
1168 VkPipelineBindPoint pipelineBindPoint,
1169 VkPipelineLayout layout,
1170 uint32_t firstSet,
1171 uint32_t descriptorSetCount,
1172 const VkDescriptorSet* pDescriptorSets,
1173 uint32_t dynamicOffsetCount,
1174 const uint32_t* pDynamicOffsets)
1175{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001176 AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001177 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001178 vkEnc->vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001179}
1180static void entry_vkCmdBindIndexBuffer(
1181 VkCommandBuffer commandBuffer,
1182 VkBuffer buffer,
1183 VkDeviceSize offset,
1184 VkIndexType indexType)
1185{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001186 AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001187 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001188 vkEnc->vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001189}
1190static void entry_vkCmdBindVertexBuffers(
1191 VkCommandBuffer commandBuffer,
1192 uint32_t firstBinding,
1193 uint32_t bindingCount,
1194 const VkBuffer* pBuffers,
1195 const VkDeviceSize* pOffsets)
1196{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001197 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001198 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001199 vkEnc->vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001200}
1201static void entry_vkCmdDraw(
1202 VkCommandBuffer commandBuffer,
1203 uint32_t vertexCount,
1204 uint32_t instanceCount,
1205 uint32_t firstVertex,
1206 uint32_t firstInstance)
1207{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001208 AEMU_SCOPED_TRACE("vkCmdDraw");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001209 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001210 vkEnc->vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001211}
1212static void entry_vkCmdDrawIndexed(
1213 VkCommandBuffer commandBuffer,
1214 uint32_t indexCount,
1215 uint32_t instanceCount,
1216 uint32_t firstIndex,
1217 int32_t vertexOffset,
1218 uint32_t firstInstance)
1219{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001220 AEMU_SCOPED_TRACE("vkCmdDrawIndexed");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001221 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001222 vkEnc->vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001223}
1224static void entry_vkCmdDrawIndirect(
1225 VkCommandBuffer commandBuffer,
1226 VkBuffer buffer,
1227 VkDeviceSize offset,
1228 uint32_t drawCount,
1229 uint32_t stride)
1230{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001231 AEMU_SCOPED_TRACE("vkCmdDrawIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001232 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001233 vkEnc->vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001234}
1235static void entry_vkCmdDrawIndexedIndirect(
1236 VkCommandBuffer commandBuffer,
1237 VkBuffer buffer,
1238 VkDeviceSize offset,
1239 uint32_t drawCount,
1240 uint32_t stride)
1241{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001242 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001243 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001244 vkEnc->vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001245}
1246static void entry_vkCmdDispatch(
1247 VkCommandBuffer commandBuffer,
1248 uint32_t groupCountX,
1249 uint32_t groupCountY,
1250 uint32_t groupCountZ)
1251{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001252 AEMU_SCOPED_TRACE("vkCmdDispatch");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001253 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001254 vkEnc->vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001255}
1256static void entry_vkCmdDispatchIndirect(
1257 VkCommandBuffer commandBuffer,
1258 VkBuffer buffer,
1259 VkDeviceSize offset)
1260{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001261 AEMU_SCOPED_TRACE("vkCmdDispatchIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001262 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001263 vkEnc->vkCmdDispatchIndirect(commandBuffer, buffer, offset, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001264}
1265static void entry_vkCmdCopyBuffer(
1266 VkCommandBuffer commandBuffer,
1267 VkBuffer srcBuffer,
1268 VkBuffer dstBuffer,
1269 uint32_t regionCount,
1270 const VkBufferCopy* pRegions)
1271{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001272 AEMU_SCOPED_TRACE("vkCmdCopyBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001273 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001274 vkEnc->vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001275}
1276static void entry_vkCmdCopyImage(
1277 VkCommandBuffer commandBuffer,
1278 VkImage srcImage,
1279 VkImageLayout srcImageLayout,
1280 VkImage dstImage,
1281 VkImageLayout dstImageLayout,
1282 uint32_t regionCount,
1283 const VkImageCopy* pRegions)
1284{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001285 AEMU_SCOPED_TRACE("vkCmdCopyImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001286 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001287 vkEnc->vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001288}
1289static void entry_vkCmdBlitImage(
1290 VkCommandBuffer commandBuffer,
1291 VkImage srcImage,
1292 VkImageLayout srcImageLayout,
1293 VkImage dstImage,
1294 VkImageLayout dstImageLayout,
1295 uint32_t regionCount,
1296 const VkImageBlit* pRegions,
1297 VkFilter filter)
1298{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001299 AEMU_SCOPED_TRACE("vkCmdBlitImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001300 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001301 vkEnc->vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001302}
1303static void entry_vkCmdCopyBufferToImage(
1304 VkCommandBuffer commandBuffer,
1305 VkBuffer srcBuffer,
1306 VkImage dstImage,
1307 VkImageLayout dstImageLayout,
1308 uint32_t regionCount,
1309 const VkBufferImageCopy* pRegions)
1310{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001311 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001312 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001313 vkEnc->vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001314}
1315static void entry_vkCmdCopyImageToBuffer(
1316 VkCommandBuffer commandBuffer,
1317 VkImage srcImage,
1318 VkImageLayout srcImageLayout,
1319 VkBuffer dstBuffer,
1320 uint32_t regionCount,
1321 const VkBufferImageCopy* pRegions)
1322{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001323 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001324 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001325 vkEnc->vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001326}
1327static void entry_vkCmdUpdateBuffer(
1328 VkCommandBuffer commandBuffer,
1329 VkBuffer dstBuffer,
1330 VkDeviceSize dstOffset,
1331 VkDeviceSize dataSize,
1332 const void* pData)
1333{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001334 AEMU_SCOPED_TRACE("vkCmdUpdateBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001335 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001336 vkEnc->vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001337}
1338static void entry_vkCmdFillBuffer(
1339 VkCommandBuffer commandBuffer,
1340 VkBuffer dstBuffer,
1341 VkDeviceSize dstOffset,
1342 VkDeviceSize size,
1343 uint32_t data)
1344{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001345 AEMU_SCOPED_TRACE("vkCmdFillBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001346 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001347 vkEnc->vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001348}
1349static void entry_vkCmdClearColorImage(
1350 VkCommandBuffer commandBuffer,
1351 VkImage image,
1352 VkImageLayout imageLayout,
1353 const VkClearColorValue* pColor,
1354 uint32_t rangeCount,
1355 const VkImageSubresourceRange* pRanges)
1356{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001357 AEMU_SCOPED_TRACE("vkCmdClearColorImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001358 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001359 vkEnc->vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001360}
1361static void entry_vkCmdClearDepthStencilImage(
1362 VkCommandBuffer commandBuffer,
1363 VkImage image,
1364 VkImageLayout imageLayout,
1365 const VkClearDepthStencilValue* pDepthStencil,
1366 uint32_t rangeCount,
1367 const VkImageSubresourceRange* pRanges)
1368{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001369 AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001370 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001371 vkEnc->vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001372}
1373static void entry_vkCmdClearAttachments(
1374 VkCommandBuffer commandBuffer,
1375 uint32_t attachmentCount,
1376 const VkClearAttachment* pAttachments,
1377 uint32_t rectCount,
1378 const VkClearRect* pRects)
1379{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001380 AEMU_SCOPED_TRACE("vkCmdClearAttachments");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001381 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001382 vkEnc->vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001383}
1384static void entry_vkCmdResolveImage(
1385 VkCommandBuffer commandBuffer,
1386 VkImage srcImage,
1387 VkImageLayout srcImageLayout,
1388 VkImage dstImage,
1389 VkImageLayout dstImageLayout,
1390 uint32_t regionCount,
1391 const VkImageResolve* pRegions)
1392{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001393 AEMU_SCOPED_TRACE("vkCmdResolveImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001394 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001395 vkEnc->vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001396}
1397static void entry_vkCmdSetEvent(
1398 VkCommandBuffer commandBuffer,
1399 VkEvent event,
1400 VkPipelineStageFlags stageMask)
1401{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001402 AEMU_SCOPED_TRACE("vkCmdSetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001403 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001404 vkEnc->vkCmdSetEvent(commandBuffer, event, stageMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001405}
1406static void entry_vkCmdResetEvent(
1407 VkCommandBuffer commandBuffer,
1408 VkEvent event,
1409 VkPipelineStageFlags stageMask)
1410{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001411 AEMU_SCOPED_TRACE("vkCmdResetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001412 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001413 vkEnc->vkCmdResetEvent(commandBuffer, event, stageMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001414}
1415static void entry_vkCmdWaitEvents(
1416 VkCommandBuffer commandBuffer,
1417 uint32_t eventCount,
1418 const VkEvent* pEvents,
1419 VkPipelineStageFlags srcStageMask,
1420 VkPipelineStageFlags dstStageMask,
1421 uint32_t memoryBarrierCount,
1422 const VkMemoryBarrier* pMemoryBarriers,
1423 uint32_t bufferMemoryBarrierCount,
1424 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1425 uint32_t imageMemoryBarrierCount,
1426 const VkImageMemoryBarrier* pImageMemoryBarriers)
1427{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001428 AEMU_SCOPED_TRACE("vkCmdWaitEvents");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001429 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001430 vkEnc->vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001431}
1432static void entry_vkCmdPipelineBarrier(
1433 VkCommandBuffer commandBuffer,
1434 VkPipelineStageFlags srcStageMask,
1435 VkPipelineStageFlags dstStageMask,
1436 VkDependencyFlags dependencyFlags,
1437 uint32_t memoryBarrierCount,
1438 const VkMemoryBarrier* pMemoryBarriers,
1439 uint32_t bufferMemoryBarrierCount,
1440 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1441 uint32_t imageMemoryBarrierCount,
1442 const VkImageMemoryBarrier* pImageMemoryBarriers)
1443{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001444 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001445 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001446 vkEnc->vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001447}
1448static void entry_vkCmdBeginQuery(
1449 VkCommandBuffer commandBuffer,
1450 VkQueryPool queryPool,
1451 uint32_t query,
1452 VkQueryControlFlags flags)
1453{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001454 AEMU_SCOPED_TRACE("vkCmdBeginQuery");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001455 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001456 vkEnc->vkCmdBeginQuery(commandBuffer, queryPool, query, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001457}
1458static void entry_vkCmdEndQuery(
1459 VkCommandBuffer commandBuffer,
1460 VkQueryPool queryPool,
1461 uint32_t query)
1462{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001463 AEMU_SCOPED_TRACE("vkCmdEndQuery");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001464 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001465 vkEnc->vkCmdEndQuery(commandBuffer, queryPool, query, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001466}
1467static void entry_vkCmdResetQueryPool(
1468 VkCommandBuffer commandBuffer,
1469 VkQueryPool queryPool,
1470 uint32_t firstQuery,
1471 uint32_t queryCount)
1472{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001473 AEMU_SCOPED_TRACE("vkCmdResetQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001474 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001475 vkEnc->vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001476}
1477static void entry_vkCmdWriteTimestamp(
1478 VkCommandBuffer commandBuffer,
1479 VkPipelineStageFlagBits pipelineStage,
1480 VkQueryPool queryPool,
1481 uint32_t query)
1482{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001483 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001484 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001485 vkEnc->vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001486}
1487static void entry_vkCmdCopyQueryPoolResults(
1488 VkCommandBuffer commandBuffer,
1489 VkQueryPool queryPool,
1490 uint32_t firstQuery,
1491 uint32_t queryCount,
1492 VkBuffer dstBuffer,
1493 VkDeviceSize dstOffset,
1494 VkDeviceSize stride,
1495 VkQueryResultFlags flags)
1496{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001497 AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001498 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001499 vkEnc->vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001500}
1501static void entry_vkCmdPushConstants(
1502 VkCommandBuffer commandBuffer,
1503 VkPipelineLayout layout,
1504 VkShaderStageFlags stageFlags,
1505 uint32_t offset,
1506 uint32_t size,
1507 const void* pValues)
1508{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001509 AEMU_SCOPED_TRACE("vkCmdPushConstants");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001510 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001511 vkEnc->vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001512}
1513static void entry_vkCmdBeginRenderPass(
1514 VkCommandBuffer commandBuffer,
1515 const VkRenderPassBeginInfo* pRenderPassBegin,
1516 VkSubpassContents contents)
1517{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001518 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001519 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001520 vkEnc->vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001521}
1522static void entry_vkCmdNextSubpass(
1523 VkCommandBuffer commandBuffer,
1524 VkSubpassContents contents)
1525{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001526 AEMU_SCOPED_TRACE("vkCmdNextSubpass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001527 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001528 vkEnc->vkCmdNextSubpass(commandBuffer, contents, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001529}
1530static void entry_vkCmdEndRenderPass(
1531 VkCommandBuffer commandBuffer)
1532{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001533 AEMU_SCOPED_TRACE("vkCmdEndRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001534 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001535 vkEnc->vkCmdEndRenderPass(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001536}
1537static void entry_vkCmdExecuteCommands(
1538 VkCommandBuffer commandBuffer,
1539 uint32_t commandBufferCount,
1540 const VkCommandBuffer* pCommandBuffers)
1541{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001542 AEMU_SCOPED_TRACE("vkCmdExecuteCommands");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001543 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1544 auto resources = ResourceTracker::get();
1545 resources->on_vkCmdExecuteCommands(vkEnc, commandBuffer, commandBufferCount, pCommandBuffers);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001546}
1547#endif
1548#ifdef VK_VERSION_1_1
1549static VkResult entry_vkEnumerateInstanceVersion(
1550 uint32_t* pApiVersion)
1551{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001552 AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001553 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001554 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001555 vkEnumerateInstanceVersion_VkResult_return = vkEnc->vkEnumerateInstanceVersion(pApiVersion, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001556 return vkEnumerateInstanceVersion_VkResult_return;
1557}
1558static VkResult entry_vkBindBufferMemory2(
1559 VkDevice device,
1560 uint32_t bindInfoCount,
1561 const VkBindBufferMemoryInfo* pBindInfos)
1562{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001563 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001564 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001565 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001566 auto resources = ResourceTracker::get();
1567 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001568 return vkBindBufferMemory2_VkResult_return;
1569}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001570static VkResult dynCheck_entry_vkBindBufferMemory2(
1571 VkDevice device,
1572 uint32_t bindInfoCount,
1573 const VkBindBufferMemoryInfo* pBindInfos)
1574{
1575 auto resources = ResourceTracker::get();
1576 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1577 {
1578 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2", "VK_VERSION_1_1");
1579 }
1580 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001581 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001582 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
1583 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1584 return vkBindBufferMemory2_VkResult_return;
1585}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001586static VkResult entry_vkBindImageMemory2(
1587 VkDevice device,
1588 uint32_t bindInfoCount,
1589 const VkBindImageMemoryInfo* pBindInfos)
1590{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001591 AEMU_SCOPED_TRACE("vkBindImageMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001592 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001593 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001594 auto resources = ResourceTracker::get();
1595 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001596 return vkBindImageMemory2_VkResult_return;
1597}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001598static VkResult dynCheck_entry_vkBindImageMemory2(
1599 VkDevice device,
1600 uint32_t bindInfoCount,
1601 const VkBindImageMemoryInfo* pBindInfos)
1602{
1603 auto resources = ResourceTracker::get();
1604 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1605 {
1606 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2", "VK_VERSION_1_1");
1607 }
1608 AEMU_SCOPED_TRACE("vkBindImageMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001609 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001610 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
1611 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1612 return vkBindImageMemory2_VkResult_return;
1613}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001614static void entry_vkGetDeviceGroupPeerMemoryFeatures(
1615 VkDevice device,
1616 uint32_t heapIndex,
1617 uint32_t localDeviceIndex,
1618 uint32_t remoteDeviceIndex,
1619 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1620{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001621 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001622 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001623 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001624}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001625static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures(
1626 VkDevice device,
1627 uint32_t heapIndex,
1628 uint32_t localDeviceIndex,
1629 uint32_t remoteDeviceIndex,
1630 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1631{
1632 auto resources = ResourceTracker::get();
1633 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1634 {
1635 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeatures", "VK_VERSION_1_1");
1636 }
1637 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001638 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001639 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001640}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001641static void entry_vkCmdSetDeviceMask(
1642 VkCommandBuffer commandBuffer,
1643 uint32_t deviceMask)
1644{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001645 AEMU_SCOPED_TRACE("vkCmdSetDeviceMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001646 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001647 vkEnc->vkCmdSetDeviceMask(commandBuffer, deviceMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001648}
1649static void entry_vkCmdDispatchBase(
1650 VkCommandBuffer commandBuffer,
1651 uint32_t baseGroupX,
1652 uint32_t baseGroupY,
1653 uint32_t baseGroupZ,
1654 uint32_t groupCountX,
1655 uint32_t groupCountY,
1656 uint32_t groupCountZ)
1657{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001658 AEMU_SCOPED_TRACE("vkCmdDispatchBase");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001659 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001660 vkEnc->vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001661}
1662static VkResult entry_vkEnumeratePhysicalDeviceGroups(
1663 VkInstance instance,
1664 uint32_t* pPhysicalDeviceGroupCount,
1665 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
1666{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001667 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001668 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001669 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001670 vkEnumeratePhysicalDeviceGroups_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001671 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
1672}
1673static void entry_vkGetImageMemoryRequirements2(
1674 VkDevice device,
1675 const VkImageMemoryRequirementsInfo2* pInfo,
1676 VkMemoryRequirements2* pMemoryRequirements)
1677{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001678 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001679 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001680 auto resources = ResourceTracker::get();
1681 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001682}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001683static void dynCheck_entry_vkGetImageMemoryRequirements2(
1684 VkDevice device,
1685 const VkImageMemoryRequirementsInfo2* pInfo,
1686 VkMemoryRequirements2* pMemoryRequirements)
1687{
1688 auto resources = ResourceTracker::get();
1689 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1690 {
1691 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2", "VK_VERSION_1_1");
1692 }
1693 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001694 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001695 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1696}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001697static void entry_vkGetBufferMemoryRequirements2(
1698 VkDevice device,
1699 const VkBufferMemoryRequirementsInfo2* pInfo,
1700 VkMemoryRequirements2* pMemoryRequirements)
1701{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001702 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001703 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001704 auto resources = ResourceTracker::get();
1705 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001706}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001707static void dynCheck_entry_vkGetBufferMemoryRequirements2(
1708 VkDevice device,
1709 const VkBufferMemoryRequirementsInfo2* pInfo,
1710 VkMemoryRequirements2* pMemoryRequirements)
1711{
1712 auto resources = ResourceTracker::get();
1713 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1714 {
1715 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2", "VK_VERSION_1_1");
1716 }
1717 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001718 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001719 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1720}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001721static void entry_vkGetImageSparseMemoryRequirements2(
1722 VkDevice device,
1723 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1724 uint32_t* pSparseMemoryRequirementCount,
1725 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1726{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001727 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001728 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001729 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001730}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001731static void dynCheck_entry_vkGetImageSparseMemoryRequirements2(
1732 VkDevice device,
1733 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1734 uint32_t* pSparseMemoryRequirementCount,
1735 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1736{
1737 auto resources = ResourceTracker::get();
1738 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1739 {
1740 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2", "VK_VERSION_1_1");
1741 }
1742 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001743 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001744 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001745}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001746static void entry_vkGetPhysicalDeviceFeatures2(
1747 VkPhysicalDevice physicalDevice,
1748 VkPhysicalDeviceFeatures2* pFeatures)
1749{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001750 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001751 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001752 vkEnc->vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001753}
1754static void entry_vkGetPhysicalDeviceProperties2(
1755 VkPhysicalDevice physicalDevice,
1756 VkPhysicalDeviceProperties2* pProperties)
1757{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001758 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001759 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001760 vkEnc->vkGetPhysicalDeviceProperties2(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001761}
1762static void entry_vkGetPhysicalDeviceFormatProperties2(
1763 VkPhysicalDevice physicalDevice,
1764 VkFormat format,
1765 VkFormatProperties2* pFormatProperties)
1766{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001767 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001768 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001769 vkEnc->vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001770}
1771static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2(
1772 VkPhysicalDevice physicalDevice,
1773 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
1774 VkImageFormatProperties2* pImageFormatProperties)
1775{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001776 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001777 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001778 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07001779 auto resources = ResourceTracker::get();
1780 vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001781 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
1782}
1783static void entry_vkGetPhysicalDeviceQueueFamilyProperties2(
1784 VkPhysicalDevice physicalDevice,
1785 uint32_t* pQueueFamilyPropertyCount,
1786 VkQueueFamilyProperties2* pQueueFamilyProperties)
1787{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001788 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001789 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001790 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001791}
1792static void entry_vkGetPhysicalDeviceMemoryProperties2(
1793 VkPhysicalDevice physicalDevice,
1794 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
1795{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001796 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001797 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001798 vkEnc->vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001799}
1800static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2(
1801 VkPhysicalDevice physicalDevice,
1802 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
1803 uint32_t* pPropertyCount,
1804 VkSparseImageFormatProperties2* pProperties)
1805{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001806 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001807 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001808 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001809}
1810static void entry_vkTrimCommandPool(
1811 VkDevice device,
1812 VkCommandPool commandPool,
1813 VkCommandPoolTrimFlags flags)
1814{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001815 AEMU_SCOPED_TRACE("vkTrimCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001816 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001817 vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001818}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001819static void dynCheck_entry_vkTrimCommandPool(
1820 VkDevice device,
1821 VkCommandPool commandPool,
1822 VkCommandPoolTrimFlags flags)
1823{
1824 auto resources = ResourceTracker::get();
1825 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1826 {
1827 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPool", "VK_VERSION_1_1");
1828 }
1829 AEMU_SCOPED_TRACE("vkTrimCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001830 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001831 vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001832}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001833static void entry_vkGetDeviceQueue2(
1834 VkDevice device,
1835 const VkDeviceQueueInfo2* pQueueInfo,
1836 VkQueue* pQueue)
1837{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001838 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001839 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001840 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001841}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001842static void dynCheck_entry_vkGetDeviceQueue2(
1843 VkDevice device,
1844 const VkDeviceQueueInfo2* pQueueInfo,
1845 VkQueue* pQueue)
1846{
1847 auto resources = ResourceTracker::get();
1848 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1849 {
1850 sOnInvalidDynamicallyCheckedCall("vkGetDeviceQueue2", "VK_VERSION_1_1");
1851 }
1852 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001853 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001854 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001855}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001856static VkResult entry_vkCreateSamplerYcbcrConversion(
1857 VkDevice device,
1858 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1859 const VkAllocationCallbacks* pAllocator,
1860 VkSamplerYcbcrConversion* pYcbcrConversion)
1861{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001862 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001863 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001864 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08001865 auto resources = ResourceTracker::get();
1866 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001867 return vkCreateSamplerYcbcrConversion_VkResult_return;
1868}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001869static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversion(
1870 VkDevice device,
1871 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1872 const VkAllocationCallbacks* pAllocator,
1873 VkSamplerYcbcrConversion* pYcbcrConversion)
1874{
1875 auto resources = ResourceTracker::get();
1876 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1877 {
1878 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversion", "VK_VERSION_1_1");
1879 }
1880 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001881 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001882 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
1883 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
1884 return vkCreateSamplerYcbcrConversion_VkResult_return;
1885}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001886static void entry_vkDestroySamplerYcbcrConversion(
1887 VkDevice device,
1888 VkSamplerYcbcrConversion ycbcrConversion,
1889 const VkAllocationCallbacks* pAllocator)
1890{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001891 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001892 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07001893 auto resources = ResourceTracker::get();
1894 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001895}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001896static void dynCheck_entry_vkDestroySamplerYcbcrConversion(
1897 VkDevice device,
1898 VkSamplerYcbcrConversion ycbcrConversion,
1899 const VkAllocationCallbacks* pAllocator)
1900{
1901 auto resources = ResourceTracker::get();
1902 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1903 {
1904 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversion", "VK_VERSION_1_1");
1905 }
1906 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001907 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001908 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
1909}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001910static VkResult entry_vkCreateDescriptorUpdateTemplate(
1911 VkDevice device,
1912 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1913 const VkAllocationCallbacks* pAllocator,
1914 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1915{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001916 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001917 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001918 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001919 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001920 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1921}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001922static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplate(
1923 VkDevice device,
1924 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1925 const VkAllocationCallbacks* pAllocator,
1926 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1927{
1928 auto resources = ResourceTracker::get();
1929 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1930 {
1931 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplate", "VK_VERSION_1_1");
1932 }
1933 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001934 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001935 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001936 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001937 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1938}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001939static void entry_vkDestroyDescriptorUpdateTemplate(
1940 VkDevice device,
1941 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1942 const VkAllocationCallbacks* pAllocator)
1943{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001944 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001945 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001946 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001947}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001948static void dynCheck_entry_vkDestroyDescriptorUpdateTemplate(
1949 VkDevice device,
1950 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1951 const VkAllocationCallbacks* pAllocator)
1952{
1953 auto resources = ResourceTracker::get();
1954 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1955 {
1956 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplate", "VK_VERSION_1_1");
1957 }
1958 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001959 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001960 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001961}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001962static void entry_vkUpdateDescriptorSetWithTemplate(
1963 VkDevice device,
1964 VkDescriptorSet descriptorSet,
1965 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1966 const void* pData)
1967{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001968 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001969 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07001970 auto resources = ResourceTracker::get();
1971 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001972}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001973static void dynCheck_entry_vkUpdateDescriptorSetWithTemplate(
1974 VkDevice device,
1975 VkDescriptorSet descriptorSet,
1976 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1977 const void* pData)
1978{
1979 auto resources = ResourceTracker::get();
1980 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1981 {
1982 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplate", "VK_VERSION_1_1");
1983 }
1984 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001985 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001986 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
1987}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001988static void entry_vkGetPhysicalDeviceExternalBufferProperties(
1989 VkPhysicalDevice physicalDevice,
1990 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
1991 VkExternalBufferProperties* pExternalBufferProperties)
1992{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001993 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001994 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001995 vkEnc->vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001996}
1997static void entry_vkGetPhysicalDeviceExternalFenceProperties(
1998 VkPhysicalDevice physicalDevice,
1999 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
2000 VkExternalFenceProperties* pExternalFenceProperties)
2001{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002002 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002003 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07002004 auto resources = ResourceTracker::get();
2005 resources->on_vkGetPhysicalDeviceExternalFenceProperties(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002006}
2007static void entry_vkGetPhysicalDeviceExternalSemaphoreProperties(
2008 VkPhysicalDevice physicalDevice,
2009 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2010 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
2011{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002012 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002013 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002014 vkEnc->vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002015}
2016static void entry_vkGetDescriptorSetLayoutSupport(
2017 VkDevice device,
2018 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2019 VkDescriptorSetLayoutSupport* pSupport)
2020{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002021 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002022 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002023 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002024}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002025static void dynCheck_entry_vkGetDescriptorSetLayoutSupport(
2026 VkDevice device,
2027 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2028 VkDescriptorSetLayoutSupport* pSupport)
2029{
2030 auto resources = ResourceTracker::get();
2031 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2032 {
2033 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupport", "VK_VERSION_1_1");
2034 }
2035 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002036 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002037 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002038}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002039#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08002040#ifdef VK_VERSION_1_2
2041static void entry_vkCmdDrawIndirectCount(
2042 VkCommandBuffer commandBuffer,
2043 VkBuffer buffer,
2044 VkDeviceSize offset,
2045 VkBuffer countBuffer,
2046 VkDeviceSize countBufferOffset,
2047 uint32_t maxDrawCount,
2048 uint32_t stride)
2049{
2050 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCount");
2051 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2052 vkEnc->vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
2053}
2054static void entry_vkCmdDrawIndexedIndirectCount(
2055 VkCommandBuffer commandBuffer,
2056 VkBuffer buffer,
2057 VkDeviceSize offset,
2058 VkBuffer countBuffer,
2059 VkDeviceSize countBufferOffset,
2060 uint32_t maxDrawCount,
2061 uint32_t stride)
2062{
2063 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCount");
2064 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2065 vkEnc->vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
2066}
2067static VkResult entry_vkCreateRenderPass2(
2068 VkDevice device,
2069 const VkRenderPassCreateInfo2* pCreateInfo,
2070 const VkAllocationCallbacks* pAllocator,
2071 VkRenderPass* pRenderPass)
2072{
2073 AEMU_SCOPED_TRACE("vkCreateRenderPass2");
2074 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2075 VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
2076 vkCreateRenderPass2_VkResult_return = vkEnc->vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
2077 return vkCreateRenderPass2_VkResult_return;
2078}
2079static VkResult dynCheck_entry_vkCreateRenderPass2(
2080 VkDevice device,
2081 const VkRenderPassCreateInfo2* pCreateInfo,
2082 const VkAllocationCallbacks* pAllocator,
2083 VkRenderPass* pRenderPass)
2084{
2085 auto resources = ResourceTracker::get();
2086 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2087 {
2088 sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2", "VK_VERSION_1_2");
2089 }
2090 AEMU_SCOPED_TRACE("vkCreateRenderPass2");
2091 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2092 VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
2093 vkCreateRenderPass2_VkResult_return = vkEnc->vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
2094 return vkCreateRenderPass2_VkResult_return;
2095}
2096static void entry_vkCmdBeginRenderPass2(
2097 VkCommandBuffer commandBuffer,
2098 const VkRenderPassBeginInfo* pRenderPassBegin,
2099 const VkSubpassBeginInfo* pSubpassBeginInfo)
2100{
2101 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2");
2102 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2103 vkEnc->vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
2104}
2105static void entry_vkCmdNextSubpass2(
2106 VkCommandBuffer commandBuffer,
2107 const VkSubpassBeginInfo* pSubpassBeginInfo,
2108 const VkSubpassEndInfo* pSubpassEndInfo)
2109{
2110 AEMU_SCOPED_TRACE("vkCmdNextSubpass2");
2111 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2112 vkEnc->vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
2113}
2114static void entry_vkCmdEndRenderPass2(
2115 VkCommandBuffer commandBuffer,
2116 const VkSubpassEndInfo* pSubpassEndInfo)
2117{
2118 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2");
2119 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2120 vkEnc->vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo, true /* do lock */);
2121}
2122static void entry_vkResetQueryPool(
2123 VkDevice device,
2124 VkQueryPool queryPool,
2125 uint32_t firstQuery,
2126 uint32_t queryCount)
2127{
2128 AEMU_SCOPED_TRACE("vkResetQueryPool");
2129 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2130 vkEnc->vkResetQueryPool(device, queryPool, firstQuery, queryCount, true /* do lock */);
2131}
2132static void dynCheck_entry_vkResetQueryPool(
2133 VkDevice device,
2134 VkQueryPool queryPool,
2135 uint32_t firstQuery,
2136 uint32_t queryCount)
2137{
2138 auto resources = ResourceTracker::get();
2139 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2140 {
2141 sOnInvalidDynamicallyCheckedCall("vkResetQueryPool", "VK_VERSION_1_2");
2142 }
2143 AEMU_SCOPED_TRACE("vkResetQueryPool");
2144 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2145 vkEnc->vkResetQueryPool(device, queryPool, firstQuery, queryCount, true /* do lock */);
2146}
2147static VkResult entry_vkGetSemaphoreCounterValue(
2148 VkDevice device,
2149 VkSemaphore semaphore,
2150 uint64_t* pValue)
2151{
2152 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValue");
2153 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2154 VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
2155 vkGetSemaphoreCounterValue_VkResult_return = vkEnc->vkGetSemaphoreCounterValue(device, semaphore, pValue, true /* do lock */);
2156 return vkGetSemaphoreCounterValue_VkResult_return;
2157}
2158static VkResult dynCheck_entry_vkGetSemaphoreCounterValue(
2159 VkDevice device,
2160 VkSemaphore semaphore,
2161 uint64_t* pValue)
2162{
2163 auto resources = ResourceTracker::get();
2164 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2165 {
2166 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreCounterValue", "VK_VERSION_1_2");
2167 }
2168 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValue");
2169 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2170 VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
2171 vkGetSemaphoreCounterValue_VkResult_return = vkEnc->vkGetSemaphoreCounterValue(device, semaphore, pValue, true /* do lock */);
2172 return vkGetSemaphoreCounterValue_VkResult_return;
2173}
2174static VkResult entry_vkWaitSemaphores(
2175 VkDevice device,
2176 const VkSemaphoreWaitInfo* pWaitInfo,
2177 uint64_t timeout)
2178{
2179 AEMU_SCOPED_TRACE("vkWaitSemaphores");
2180 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2181 VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
2182 vkWaitSemaphores_VkResult_return = vkEnc->vkWaitSemaphores(device, pWaitInfo, timeout, true /* do lock */);
2183 return vkWaitSemaphores_VkResult_return;
2184}
2185static VkResult dynCheck_entry_vkWaitSemaphores(
2186 VkDevice device,
2187 const VkSemaphoreWaitInfo* pWaitInfo,
2188 uint64_t timeout)
2189{
2190 auto resources = ResourceTracker::get();
2191 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2192 {
2193 sOnInvalidDynamicallyCheckedCall("vkWaitSemaphores", "VK_VERSION_1_2");
2194 }
2195 AEMU_SCOPED_TRACE("vkWaitSemaphores");
2196 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2197 VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
2198 vkWaitSemaphores_VkResult_return = vkEnc->vkWaitSemaphores(device, pWaitInfo, timeout, true /* do lock */);
2199 return vkWaitSemaphores_VkResult_return;
2200}
2201static VkResult entry_vkSignalSemaphore(
2202 VkDevice device,
2203 const VkSemaphoreSignalInfo* pSignalInfo)
2204{
2205 AEMU_SCOPED_TRACE("vkSignalSemaphore");
2206 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2207 VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
2208 vkSignalSemaphore_VkResult_return = vkEnc->vkSignalSemaphore(device, pSignalInfo, true /* do lock */);
2209 return vkSignalSemaphore_VkResult_return;
2210}
2211static VkResult dynCheck_entry_vkSignalSemaphore(
2212 VkDevice device,
2213 const VkSemaphoreSignalInfo* pSignalInfo)
2214{
2215 auto resources = ResourceTracker::get();
2216 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2217 {
2218 sOnInvalidDynamicallyCheckedCall("vkSignalSemaphore", "VK_VERSION_1_2");
2219 }
2220 AEMU_SCOPED_TRACE("vkSignalSemaphore");
2221 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2222 VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
2223 vkSignalSemaphore_VkResult_return = vkEnc->vkSignalSemaphore(device, pSignalInfo, true /* do lock */);
2224 return vkSignalSemaphore_VkResult_return;
2225}
2226static VkDeviceAddress entry_vkGetBufferDeviceAddress(
2227 VkDevice device,
2228 const VkBufferDeviceAddressInfo* pInfo)
2229{
2230 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddress");
2231 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2232 VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return = (VkDeviceAddress)0;
2233 vkGetBufferDeviceAddress_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddress(device, pInfo, true /* do lock */);
2234 return vkGetBufferDeviceAddress_VkDeviceAddress_return;
2235}
2236static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddress(
2237 VkDevice device,
2238 const VkBufferDeviceAddressInfo* pInfo)
2239{
2240 auto resources = ResourceTracker::get();
2241 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2242 {
2243 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddress", "VK_VERSION_1_2");
2244 }
2245 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddress");
2246 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2247 VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return = (VkDeviceAddress)0;
2248 vkGetBufferDeviceAddress_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddress(device, pInfo, true /* do lock */);
2249 return vkGetBufferDeviceAddress_VkDeviceAddress_return;
2250}
2251static uint64_t entry_vkGetBufferOpaqueCaptureAddress(
2252 VkDevice device,
2253 const VkBufferDeviceAddressInfo* pInfo)
2254{
2255 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddress");
2256 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2257 uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2258 vkGetBufferOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2259 return vkGetBufferOpaqueCaptureAddress_uint64_t_return;
2260}
2261static uint64_t dynCheck_entry_vkGetBufferOpaqueCaptureAddress(
2262 VkDevice device,
2263 const VkBufferDeviceAddressInfo* pInfo)
2264{
2265 auto resources = ResourceTracker::get();
2266 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2267 {
2268 sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureAddress", "VK_VERSION_1_2");
2269 }
2270 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddress");
2271 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2272 uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2273 vkGetBufferOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2274 return vkGetBufferOpaqueCaptureAddress_uint64_t_return;
2275}
2276static uint64_t entry_vkGetDeviceMemoryOpaqueCaptureAddress(
2277 VkDevice device,
2278 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
2279{
2280 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddress");
2281 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2282 uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2283 vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2284 return vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return;
2285}
2286static uint64_t dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress(
2287 VkDevice device,
2288 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
2289{
2290 auto resources = ResourceTracker::get();
2291 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2292 {
2293 sOnInvalidDynamicallyCheckedCall("vkGetDeviceMemoryOpaqueCaptureAddress", "VK_VERSION_1_2");
2294 }
2295 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddress");
2296 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2297 uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2298 vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2299 return vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return;
2300}
2301#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002302#ifdef VK_KHR_surface
2303static void entry_vkDestroySurfaceKHR(
2304 VkInstance instance,
2305 VkSurfaceKHR surface,
2306 const VkAllocationCallbacks* pAllocator)
2307{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002308 AEMU_SCOPED_TRACE("vkDestroySurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002309 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002310 vkEnc->vkDestroySurfaceKHR(instance, surface, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002311}
2312static VkResult entry_vkGetPhysicalDeviceSurfaceSupportKHR(
2313 VkPhysicalDevice physicalDevice,
2314 uint32_t queueFamilyIndex,
2315 VkSurfaceKHR surface,
2316 VkBool32* pSupported)
2317{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002318 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002319 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002320 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002321 vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002322 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
2323}
2324static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
2325 VkPhysicalDevice physicalDevice,
2326 VkSurfaceKHR surface,
2327 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
2328{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002329 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002330 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002331 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002332 vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002333 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
2334}
2335static VkResult entry_vkGetPhysicalDeviceSurfaceFormatsKHR(
2336 VkPhysicalDevice physicalDevice,
2337 VkSurfaceKHR surface,
2338 uint32_t* pSurfaceFormatCount,
2339 VkSurfaceFormatKHR* pSurfaceFormats)
2340{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002341 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002342 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002343 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002344 vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002345 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
2346}
2347static VkResult entry_vkGetPhysicalDeviceSurfacePresentModesKHR(
2348 VkPhysicalDevice physicalDevice,
2349 VkSurfaceKHR surface,
2350 uint32_t* pPresentModeCount,
2351 VkPresentModeKHR* pPresentModes)
2352{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002353 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002354 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002355 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002356 vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002357 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
2358}
2359#endif
2360#ifdef VK_KHR_swapchain
2361static VkResult entry_vkCreateSwapchainKHR(
2362 VkDevice device,
2363 const VkSwapchainCreateInfoKHR* pCreateInfo,
2364 const VkAllocationCallbacks* pAllocator,
2365 VkSwapchainKHR* pSwapchain)
2366{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002367 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002368 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002369 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002370 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002371 return vkCreateSwapchainKHR_VkResult_return;
2372}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002373static VkResult dynCheck_entry_vkCreateSwapchainKHR(
2374 VkDevice device,
2375 const VkSwapchainCreateInfoKHR* pCreateInfo,
2376 const VkAllocationCallbacks* pAllocator,
2377 VkSwapchainKHR* pSwapchain)
2378{
2379 auto resources = ResourceTracker::get();
2380 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2381 {
2382 sOnInvalidDynamicallyCheckedCall("vkCreateSwapchainKHR", "VK_KHR_swapchain");
2383 }
2384 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002385 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002386 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002387 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002388 return vkCreateSwapchainKHR_VkResult_return;
2389}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002390static void entry_vkDestroySwapchainKHR(
2391 VkDevice device,
2392 VkSwapchainKHR swapchain,
2393 const VkAllocationCallbacks* pAllocator)
2394{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002395 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002396 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002397 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002398}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002399static void dynCheck_entry_vkDestroySwapchainKHR(
2400 VkDevice device,
2401 VkSwapchainKHR swapchain,
2402 const VkAllocationCallbacks* pAllocator)
2403{
2404 auto resources = ResourceTracker::get();
2405 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2406 {
2407 sOnInvalidDynamicallyCheckedCall("vkDestroySwapchainKHR", "VK_KHR_swapchain");
2408 }
2409 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002410 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002411 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002412}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002413static VkResult entry_vkGetSwapchainImagesKHR(
2414 VkDevice device,
2415 VkSwapchainKHR swapchain,
2416 uint32_t* pSwapchainImageCount,
2417 VkImage* pSwapchainImages)
2418{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002419 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002420 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002421 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002422 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002423 return vkGetSwapchainImagesKHR_VkResult_return;
2424}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002425static VkResult dynCheck_entry_vkGetSwapchainImagesKHR(
2426 VkDevice device,
2427 VkSwapchainKHR swapchain,
2428 uint32_t* pSwapchainImageCount,
2429 VkImage* pSwapchainImages)
2430{
2431 auto resources = ResourceTracker::get();
2432 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2433 {
2434 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainImagesKHR", "VK_KHR_swapchain");
2435 }
2436 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002437 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002438 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002439 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002440 return vkGetSwapchainImagesKHR_VkResult_return;
2441}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002442static VkResult entry_vkAcquireNextImageKHR(
2443 VkDevice device,
2444 VkSwapchainKHR swapchain,
2445 uint64_t timeout,
2446 VkSemaphore semaphore,
2447 VkFence fence,
2448 uint32_t* pImageIndex)
2449{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002450 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002451 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002452 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002453 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002454 return vkAcquireNextImageKHR_VkResult_return;
2455}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002456static VkResult dynCheck_entry_vkAcquireNextImageKHR(
2457 VkDevice device,
2458 VkSwapchainKHR swapchain,
2459 uint64_t timeout,
2460 VkSemaphore semaphore,
2461 VkFence fence,
2462 uint32_t* pImageIndex)
2463{
2464 auto resources = ResourceTracker::get();
2465 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2466 {
2467 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImageKHR", "VK_KHR_swapchain");
2468 }
2469 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002470 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002471 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002472 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002473 return vkAcquireNextImageKHR_VkResult_return;
2474}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002475static VkResult entry_vkQueuePresentKHR(
2476 VkQueue queue,
2477 const VkPresentInfoKHR* pPresentInfo)
2478{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002479 AEMU_SCOPED_TRACE("vkQueuePresentKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002480 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002481 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002482 vkQueuePresentKHR_VkResult_return = vkEnc->vkQueuePresentKHR(queue, pPresentInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002483 return vkQueuePresentKHR_VkResult_return;
2484}
2485static VkResult entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2486 VkDevice device,
2487 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2488{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002489 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002490 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002491 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002492 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002493 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2494}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002495static VkResult dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2496 VkDevice device,
2497 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2498{
2499 auto resources = ResourceTracker::get();
2500 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2501 {
2502 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPresentCapabilitiesKHR", "VK_KHR_swapchain");
2503 }
2504 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002505 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002506 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002507 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002508 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2509}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002510static VkResult entry_vkGetDeviceGroupSurfacePresentModesKHR(
2511 VkDevice device,
2512 VkSurfaceKHR surface,
2513 VkDeviceGroupPresentModeFlagsKHR* pModes)
2514{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002515 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002516 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002517 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002518 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002519 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2520}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002521static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR(
2522 VkDevice device,
2523 VkSurfaceKHR surface,
2524 VkDeviceGroupPresentModeFlagsKHR* pModes)
2525{
2526 auto resources = ResourceTracker::get();
2527 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2528 {
2529 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModesKHR", "VK_KHR_swapchain");
2530 }
2531 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002532 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002533 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002534 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002535 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2536}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002537static VkResult entry_vkGetPhysicalDevicePresentRectanglesKHR(
2538 VkPhysicalDevice physicalDevice,
2539 VkSurfaceKHR surface,
2540 uint32_t* pRectCount,
2541 VkRect2D* pRects)
2542{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002543 AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002544 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002545 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002546 vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = vkEnc->vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002547 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
2548}
2549static VkResult entry_vkAcquireNextImage2KHR(
2550 VkDevice device,
2551 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2552 uint32_t* pImageIndex)
2553{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002554 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002555 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002556 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002557 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002558 return vkAcquireNextImage2KHR_VkResult_return;
2559}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002560static VkResult dynCheck_entry_vkAcquireNextImage2KHR(
2561 VkDevice device,
2562 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2563 uint32_t* pImageIndex)
2564{
2565 auto resources = ResourceTracker::get();
2566 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2567 {
2568 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImage2KHR", "VK_KHR_swapchain");
2569 }
2570 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002571 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002572 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002573 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002574 return vkAcquireNextImage2KHR_VkResult_return;
2575}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002576#endif
2577#ifdef VK_KHR_display
2578static VkResult entry_vkGetPhysicalDeviceDisplayPropertiesKHR(
2579 VkPhysicalDevice physicalDevice,
2580 uint32_t* pPropertyCount,
2581 VkDisplayPropertiesKHR* pProperties)
2582{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002583 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002584 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002585 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002586 vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002587 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
2588}
2589static VkResult entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
2590 VkPhysicalDevice physicalDevice,
2591 uint32_t* pPropertyCount,
2592 VkDisplayPlanePropertiesKHR* pProperties)
2593{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002594 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002595 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002596 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002597 vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002598 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
2599}
2600static VkResult entry_vkGetDisplayPlaneSupportedDisplaysKHR(
2601 VkPhysicalDevice physicalDevice,
2602 uint32_t planeIndex,
2603 uint32_t* pDisplayCount,
2604 VkDisplayKHR* pDisplays)
2605{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002606 AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002607 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002608 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002609 vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = vkEnc->vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002610 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
2611}
2612static VkResult entry_vkGetDisplayModePropertiesKHR(
2613 VkPhysicalDevice physicalDevice,
2614 VkDisplayKHR display,
2615 uint32_t* pPropertyCount,
2616 VkDisplayModePropertiesKHR* pProperties)
2617{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002618 AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002619 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002620 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002621 vkGetDisplayModePropertiesKHR_VkResult_return = vkEnc->vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002622 return vkGetDisplayModePropertiesKHR_VkResult_return;
2623}
2624static VkResult entry_vkCreateDisplayModeKHR(
2625 VkPhysicalDevice physicalDevice,
2626 VkDisplayKHR display,
2627 const VkDisplayModeCreateInfoKHR* pCreateInfo,
2628 const VkAllocationCallbacks* pAllocator,
2629 VkDisplayModeKHR* pMode)
2630{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002631 AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002632 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002633 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002634 vkCreateDisplayModeKHR_VkResult_return = vkEnc->vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002635 return vkCreateDisplayModeKHR_VkResult_return;
2636}
2637static VkResult entry_vkGetDisplayPlaneCapabilitiesKHR(
2638 VkPhysicalDevice physicalDevice,
2639 VkDisplayModeKHR mode,
2640 uint32_t planeIndex,
2641 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
2642{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002643 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002644 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002645 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002646 vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002647 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
2648}
2649static VkResult entry_vkCreateDisplayPlaneSurfaceKHR(
2650 VkInstance instance,
2651 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
2652 const VkAllocationCallbacks* pAllocator,
2653 VkSurfaceKHR* pSurface)
2654{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002655 AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002656 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002657 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002658 vkCreateDisplayPlaneSurfaceKHR_VkResult_return = vkEnc->vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002659 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
2660}
2661#endif
2662#ifdef VK_KHR_display_swapchain
2663static VkResult entry_vkCreateSharedSwapchainsKHR(
2664 VkDevice device,
2665 uint32_t swapchainCount,
2666 const VkSwapchainCreateInfoKHR* pCreateInfos,
2667 const VkAllocationCallbacks* pAllocator,
2668 VkSwapchainKHR* pSwapchains)
2669{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002670 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002671 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002672 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002673 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002674 return vkCreateSharedSwapchainsKHR_VkResult_return;
2675}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002676static VkResult dynCheck_entry_vkCreateSharedSwapchainsKHR(
2677 VkDevice device,
2678 uint32_t swapchainCount,
2679 const VkSwapchainCreateInfoKHR* pCreateInfos,
2680 const VkAllocationCallbacks* pAllocator,
2681 VkSwapchainKHR* pSwapchains)
2682{
2683 auto resources = ResourceTracker::get();
2684 if (!resources->hasDeviceExtension(device, "VK_KHR_display_swapchain"))
2685 {
2686 sOnInvalidDynamicallyCheckedCall("vkCreateSharedSwapchainsKHR", "VK_KHR_display_swapchain");
2687 }
2688 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002689 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002690 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002691 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002692 return vkCreateSharedSwapchainsKHR_VkResult_return;
2693}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002694#endif
2695#ifdef VK_KHR_xlib_surface
2696static VkResult entry_vkCreateXlibSurfaceKHR(
2697 VkInstance instance,
2698 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
2699 const VkAllocationCallbacks* pAllocator,
2700 VkSurfaceKHR* pSurface)
2701{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002702 AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002703 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002704 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002705 vkCreateXlibSurfaceKHR_VkResult_return = vkEnc->vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002706 return vkCreateXlibSurfaceKHR_VkResult_return;
2707}
2708static VkBool32 entry_vkGetPhysicalDeviceXlibPresentationSupportKHR(
2709 VkPhysicalDevice physicalDevice,
2710 uint32_t queueFamilyIndex,
2711 Display* dpy,
2712 VisualID visualID)
2713{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002714 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002715 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002716 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002717 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002718 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
2719}
2720#endif
2721#ifdef VK_KHR_xcb_surface
2722static VkResult entry_vkCreateXcbSurfaceKHR(
2723 VkInstance instance,
2724 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
2725 const VkAllocationCallbacks* pAllocator,
2726 VkSurfaceKHR* pSurface)
2727{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002728 AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002729 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002730 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002731 vkCreateXcbSurfaceKHR_VkResult_return = vkEnc->vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002732 return vkCreateXcbSurfaceKHR_VkResult_return;
2733}
2734static VkBool32 entry_vkGetPhysicalDeviceXcbPresentationSupportKHR(
2735 VkPhysicalDevice physicalDevice,
2736 uint32_t queueFamilyIndex,
2737 xcb_connection_t* connection,
2738 xcb_visualid_t visual_id)
2739{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002740 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002741 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002742 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002743 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002744 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
2745}
2746#endif
2747#ifdef VK_KHR_wayland_surface
2748static VkResult entry_vkCreateWaylandSurfaceKHR(
2749 VkInstance instance,
2750 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
2751 const VkAllocationCallbacks* pAllocator,
2752 VkSurfaceKHR* pSurface)
2753{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002754 AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002755 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002756 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002757 vkCreateWaylandSurfaceKHR_VkResult_return = vkEnc->vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002758 return vkCreateWaylandSurfaceKHR_VkResult_return;
2759}
2760static VkBool32 entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
2761 VkPhysicalDevice physicalDevice,
2762 uint32_t queueFamilyIndex,
2763 wl_display* display)
2764{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002765 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002766 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002767 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002768 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002769 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
2770}
2771#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002772#ifdef VK_KHR_android_surface
2773static VkResult entry_vkCreateAndroidSurfaceKHR(
2774 VkInstance instance,
2775 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
2776 const VkAllocationCallbacks* pAllocator,
2777 VkSurfaceKHR* pSurface)
2778{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002779 AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002780 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002781 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002782 vkCreateAndroidSurfaceKHR_VkResult_return = vkEnc->vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002783 return vkCreateAndroidSurfaceKHR_VkResult_return;
2784}
2785#endif
2786#ifdef VK_KHR_win32_surface
2787static VkResult entry_vkCreateWin32SurfaceKHR(
2788 VkInstance instance,
2789 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
2790 const VkAllocationCallbacks* pAllocator,
2791 VkSurfaceKHR* pSurface)
2792{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002793 AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002794 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002795 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002796 vkCreateWin32SurfaceKHR_VkResult_return = vkEnc->vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002797 return vkCreateWin32SurfaceKHR_VkResult_return;
2798}
2799static VkBool32 entry_vkGetPhysicalDeviceWin32PresentationSupportKHR(
2800 VkPhysicalDevice physicalDevice,
2801 uint32_t queueFamilyIndex)
2802{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002803 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002804 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002805 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002806 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002807 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
2808}
2809#endif
2810#ifdef VK_KHR_sampler_mirror_clamp_to_edge
2811#endif
2812#ifdef VK_KHR_multiview
2813#endif
2814#ifdef VK_KHR_get_physical_device_properties2
2815static void entry_vkGetPhysicalDeviceFeatures2KHR(
2816 VkPhysicalDevice physicalDevice,
2817 VkPhysicalDeviceFeatures2* pFeatures)
2818{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002819 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002820 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002821 vkEnc->vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002822}
2823static void entry_vkGetPhysicalDeviceProperties2KHR(
2824 VkPhysicalDevice physicalDevice,
2825 VkPhysicalDeviceProperties2* pProperties)
2826{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002827 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002828 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002829 vkEnc->vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002830}
2831static void entry_vkGetPhysicalDeviceFormatProperties2KHR(
2832 VkPhysicalDevice physicalDevice,
2833 VkFormat format,
2834 VkFormatProperties2* pFormatProperties)
2835{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002836 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002837 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002838 vkEnc->vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002839}
2840static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2KHR(
2841 VkPhysicalDevice physicalDevice,
2842 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
2843 VkImageFormatProperties2* pImageFormatProperties)
2844{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002845 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002846 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002847 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07002848 auto resources = ResourceTracker::get();
2849 vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2KHR(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002850 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
2851}
2852static void entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
2853 VkPhysicalDevice physicalDevice,
2854 uint32_t* pQueueFamilyPropertyCount,
2855 VkQueueFamilyProperties2* pQueueFamilyProperties)
2856{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002857 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002858 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002859 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002860}
2861static void entry_vkGetPhysicalDeviceMemoryProperties2KHR(
2862 VkPhysicalDevice physicalDevice,
2863 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
2864{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002865 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002866 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002867 vkEnc->vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002868}
2869static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
2870 VkPhysicalDevice physicalDevice,
2871 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
2872 uint32_t* pPropertyCount,
2873 VkSparseImageFormatProperties2* pProperties)
2874{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002875 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002876 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002877 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002878}
2879#endif
2880#ifdef VK_KHR_device_group
2881static void entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2882 VkDevice device,
2883 uint32_t heapIndex,
2884 uint32_t localDeviceIndex,
2885 uint32_t remoteDeviceIndex,
2886 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2887{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002888 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002889 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002890 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002891}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002892static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2893 VkDevice device,
2894 uint32_t heapIndex,
2895 uint32_t localDeviceIndex,
2896 uint32_t remoteDeviceIndex,
2897 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2898{
2899 auto resources = ResourceTracker::get();
2900 if (!resources->hasDeviceExtension(device, "VK_KHR_device_group"))
2901 {
2902 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeaturesKHR", "VK_KHR_device_group");
2903 }
2904 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002905 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002906 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002907}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002908static void entry_vkCmdSetDeviceMaskKHR(
2909 VkCommandBuffer commandBuffer,
2910 uint32_t deviceMask)
2911{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002912 AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002913 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002914 vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002915}
2916static void entry_vkCmdDispatchBaseKHR(
2917 VkCommandBuffer commandBuffer,
2918 uint32_t baseGroupX,
2919 uint32_t baseGroupY,
2920 uint32_t baseGroupZ,
2921 uint32_t groupCountX,
2922 uint32_t groupCountY,
2923 uint32_t groupCountZ)
2924{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002925 AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002926 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002927 vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002928}
2929#endif
2930#ifdef VK_KHR_shader_draw_parameters
2931#endif
2932#ifdef VK_KHR_maintenance1
2933static void entry_vkTrimCommandPoolKHR(
2934 VkDevice device,
2935 VkCommandPool commandPool,
2936 VkCommandPoolTrimFlags flags)
2937{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002938 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002939 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002940 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002941}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002942static void dynCheck_entry_vkTrimCommandPoolKHR(
2943 VkDevice device,
2944 VkCommandPool commandPool,
2945 VkCommandPoolTrimFlags flags)
2946{
2947 auto resources = ResourceTracker::get();
2948 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance1"))
2949 {
2950 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPoolKHR", "VK_KHR_maintenance1");
2951 }
2952 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002953 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002954 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002955}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002956#endif
2957#ifdef VK_KHR_device_group_creation
2958static VkResult entry_vkEnumeratePhysicalDeviceGroupsKHR(
2959 VkInstance instance,
2960 uint32_t* pPhysicalDeviceGroupCount,
2961 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
2962{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002963 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002964 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002965 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002966 vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002967 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
2968}
2969#endif
2970#ifdef VK_KHR_external_memory_capabilities
2971static void entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
2972 VkPhysicalDevice physicalDevice,
2973 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
2974 VkExternalBufferProperties* pExternalBufferProperties)
2975{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002976 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002977 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002978 vkEnc->vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002979}
2980#endif
2981#ifdef VK_KHR_external_memory
2982#endif
2983#ifdef VK_KHR_external_memory_win32
2984static VkResult entry_vkGetMemoryWin32HandleKHR(
2985 VkDevice device,
2986 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2987 HANDLE* pHandle)
2988{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002989 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002990 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002991 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002992 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002993 return vkGetMemoryWin32HandleKHR_VkResult_return;
2994}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002995static VkResult dynCheck_entry_vkGetMemoryWin32HandleKHR(
2996 VkDevice device,
2997 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2998 HANDLE* pHandle)
2999{
3000 auto resources = ResourceTracker::get();
3001 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
3002 {
3003 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleKHR", "VK_KHR_external_memory_win32");
3004 }
3005 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003006 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003007 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003008 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003009 return vkGetMemoryWin32HandleKHR_VkResult_return;
3010}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003011static VkResult entry_vkGetMemoryWin32HandlePropertiesKHR(
3012 VkDevice device,
3013 VkExternalMemoryHandleTypeFlagBits handleType,
3014 HANDLE handle,
3015 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
3016{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003017 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003018 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003019 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003020 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003021 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
3022}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003023static VkResult dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR(
3024 VkDevice device,
3025 VkExternalMemoryHandleTypeFlagBits handleType,
3026 HANDLE handle,
3027 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
3028{
3029 auto resources = ResourceTracker::get();
3030 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
3031 {
3032 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandlePropertiesKHR", "VK_KHR_external_memory_win32");
3033 }
3034 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003035 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003036 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003037 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003038 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
3039}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003040#endif
3041#ifdef VK_KHR_external_memory_fd
3042static VkResult entry_vkGetMemoryFdKHR(
3043 VkDevice device,
3044 const VkMemoryGetFdInfoKHR* pGetFdInfo,
3045 int* pFd)
3046{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003047 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003048 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003049 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003050 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003051 return vkGetMemoryFdKHR_VkResult_return;
3052}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003053static VkResult dynCheck_entry_vkGetMemoryFdKHR(
3054 VkDevice device,
3055 const VkMemoryGetFdInfoKHR* pGetFdInfo,
3056 int* pFd)
3057{
3058 auto resources = ResourceTracker::get();
3059 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
3060 {
3061 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdKHR", "VK_KHR_external_memory_fd");
3062 }
3063 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003064 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003065 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003066 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003067 return vkGetMemoryFdKHR_VkResult_return;
3068}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003069static VkResult entry_vkGetMemoryFdPropertiesKHR(
3070 VkDevice device,
3071 VkExternalMemoryHandleTypeFlagBits handleType,
3072 int fd,
3073 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
3074{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003075 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003076 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003077 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003078 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003079 return vkGetMemoryFdPropertiesKHR_VkResult_return;
3080}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003081static VkResult dynCheck_entry_vkGetMemoryFdPropertiesKHR(
3082 VkDevice device,
3083 VkExternalMemoryHandleTypeFlagBits handleType,
3084 int fd,
3085 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
3086{
3087 auto resources = ResourceTracker::get();
3088 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
3089 {
3090 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdPropertiesKHR", "VK_KHR_external_memory_fd");
3091 }
3092 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003093 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003094 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003095 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003096 return vkGetMemoryFdPropertiesKHR_VkResult_return;
3097}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003098#endif
3099#ifdef VK_KHR_win32_keyed_mutex
3100#endif
3101#ifdef VK_KHR_external_semaphore_capabilities
3102static void entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
3103 VkPhysicalDevice physicalDevice,
3104 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
3105 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
3106{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003107 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003108 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003109 vkEnc->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003110}
3111#endif
3112#ifdef VK_KHR_external_semaphore
3113#endif
3114#ifdef VK_KHR_external_semaphore_win32
3115static VkResult entry_vkImportSemaphoreWin32HandleKHR(
3116 VkDevice device,
3117 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
3118{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003119 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003120 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003121 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003122 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003123 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
3124}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003125static VkResult dynCheck_entry_vkImportSemaphoreWin32HandleKHR(
3126 VkDevice device,
3127 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
3128{
3129 auto resources = ResourceTracker::get();
3130 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
3131 {
3132 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
3133 }
3134 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003135 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003136 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003137 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003138 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
3139}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003140static VkResult entry_vkGetSemaphoreWin32HandleKHR(
3141 VkDevice device,
3142 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3143 HANDLE* pHandle)
3144{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003145 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003146 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003147 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003148 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003149 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
3150}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003151static VkResult dynCheck_entry_vkGetSemaphoreWin32HandleKHR(
3152 VkDevice device,
3153 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3154 HANDLE* pHandle)
3155{
3156 auto resources = ResourceTracker::get();
3157 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
3158 {
3159 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
3160 }
3161 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003162 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003163 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003164 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003165 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
3166}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003167#endif
3168#ifdef VK_KHR_external_semaphore_fd
3169static VkResult entry_vkImportSemaphoreFdKHR(
3170 VkDevice device,
3171 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
3172{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003173 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003174 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003175 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08003176 auto resources = ResourceTracker::get();
3177 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003178 return vkImportSemaphoreFdKHR_VkResult_return;
3179}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003180static VkResult dynCheck_entry_vkImportSemaphoreFdKHR(
3181 VkDevice device,
3182 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
3183{
3184 auto resources = ResourceTracker::get();
3185 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3186 {
3187 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3188 }
3189 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003190 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003191 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
3192 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
3193 return vkImportSemaphoreFdKHR_VkResult_return;
3194}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003195static VkResult entry_vkGetSemaphoreFdKHR(
3196 VkDevice device,
3197 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3198 int* pFd)
3199{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003200 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003201 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003202 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08003203 auto resources = ResourceTracker::get();
3204 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003205 return vkGetSemaphoreFdKHR_VkResult_return;
3206}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003207static VkResult dynCheck_entry_vkGetSemaphoreFdKHR(
3208 VkDevice device,
3209 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3210 int* pFd)
3211{
3212 auto resources = ResourceTracker::get();
3213 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3214 {
3215 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3216 }
3217 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003218 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003219 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
3220 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3221 return vkGetSemaphoreFdKHR_VkResult_return;
3222}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003223#endif
3224#ifdef VK_KHR_push_descriptor
3225static void entry_vkCmdPushDescriptorSetKHR(
3226 VkCommandBuffer commandBuffer,
3227 VkPipelineBindPoint pipelineBindPoint,
3228 VkPipelineLayout layout,
3229 uint32_t set,
3230 uint32_t descriptorWriteCount,
3231 const VkWriteDescriptorSet* pDescriptorWrites)
3232{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003233 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003234 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003235 vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003236}
3237static void entry_vkCmdPushDescriptorSetWithTemplateKHR(
3238 VkCommandBuffer commandBuffer,
3239 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3240 VkPipelineLayout layout,
3241 uint32_t set,
3242 const void* pData)
3243{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003244 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003245 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003246 vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003247}
3248#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003249#ifdef VK_KHR_shader_float16_int8
3250#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003251#ifdef VK_KHR_16bit_storage
3252#endif
3253#ifdef VK_KHR_incremental_present
3254#endif
3255#ifdef VK_KHR_descriptor_update_template
3256static VkResult entry_vkCreateDescriptorUpdateTemplateKHR(
3257 VkDevice device,
3258 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3259 const VkAllocationCallbacks* pAllocator,
3260 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3261{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003262 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003263 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003264 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003265 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003266 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3267}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003268static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR(
3269 VkDevice device,
3270 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3271 const VkAllocationCallbacks* pAllocator,
3272 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3273{
3274 auto resources = ResourceTracker::get();
3275 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3276 {
3277 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3278 }
3279 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003280 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003281 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003282 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003283 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3284}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003285static void entry_vkDestroyDescriptorUpdateTemplateKHR(
3286 VkDevice device,
3287 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3288 const VkAllocationCallbacks* pAllocator)
3289{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003290 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003291 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003292 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003293}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003294static void dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR(
3295 VkDevice device,
3296 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3297 const VkAllocationCallbacks* pAllocator)
3298{
3299 auto resources = ResourceTracker::get();
3300 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3301 {
3302 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3303 }
3304 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003305 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003306 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003307}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003308static void entry_vkUpdateDescriptorSetWithTemplateKHR(
3309 VkDevice device,
3310 VkDescriptorSet descriptorSet,
3311 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3312 const void* pData)
3313{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003314 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003315 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003316 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003317}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003318static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR(
3319 VkDevice device,
3320 VkDescriptorSet descriptorSet,
3321 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3322 const void* pData)
3323{
3324 auto resources = ResourceTracker::get();
3325 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3326 {
3327 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateKHR", "VK_KHR_descriptor_update_template");
3328 }
3329 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003330 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003331 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003332}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003333#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003334#ifdef VK_KHR_imageless_framebuffer
3335#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003336#ifdef VK_KHR_create_renderpass2
3337static VkResult entry_vkCreateRenderPass2KHR(
3338 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08003339 const VkRenderPassCreateInfo2* pCreateInfo,
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003340 const VkAllocationCallbacks* pAllocator,
3341 VkRenderPass* pRenderPass)
3342{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003343 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003344 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003345 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003346 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003347 return vkCreateRenderPass2KHR_VkResult_return;
3348}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003349static VkResult dynCheck_entry_vkCreateRenderPass2KHR(
3350 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08003351 const VkRenderPassCreateInfo2* pCreateInfo,
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003352 const VkAllocationCallbacks* pAllocator,
3353 VkRenderPass* pRenderPass)
3354{
3355 auto resources = ResourceTracker::get();
3356 if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"))
3357 {
3358 sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2KHR", "VK_KHR_create_renderpass2");
3359 }
3360 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003361 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003362 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003363 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003364 return vkCreateRenderPass2KHR_VkResult_return;
3365}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003366static void entry_vkCmdBeginRenderPass2KHR(
3367 VkCommandBuffer commandBuffer,
3368 const VkRenderPassBeginInfo* pRenderPassBegin,
Yilong Lia8d45f12021-02-07 02:30:21 -08003369 const VkSubpassBeginInfo* pSubpassBeginInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003370{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003371 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003372 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003373 vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003374}
3375static void entry_vkCmdNextSubpass2KHR(
3376 VkCommandBuffer commandBuffer,
Yilong Lia8d45f12021-02-07 02:30:21 -08003377 const VkSubpassBeginInfo* pSubpassBeginInfo,
3378 const VkSubpassEndInfo* pSubpassEndInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003379{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003380 AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003381 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003382 vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003383}
3384static void entry_vkCmdEndRenderPass2KHR(
3385 VkCommandBuffer commandBuffer,
Yilong Lia8d45f12021-02-07 02:30:21 -08003386 const VkSubpassEndInfo* pSubpassEndInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003387{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003388 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003389 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003390 vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003391}
3392#endif
3393#ifdef VK_KHR_shared_presentable_image
3394static VkResult entry_vkGetSwapchainStatusKHR(
3395 VkDevice device,
3396 VkSwapchainKHR swapchain)
3397{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003398 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003399 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003400 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003401 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003402 return vkGetSwapchainStatusKHR_VkResult_return;
3403}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003404static VkResult dynCheck_entry_vkGetSwapchainStatusKHR(
3405 VkDevice device,
3406 VkSwapchainKHR swapchain)
3407{
3408 auto resources = ResourceTracker::get();
3409 if (!resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image"))
3410 {
3411 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainStatusKHR", "VK_KHR_shared_presentable_image");
3412 }
3413 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003414 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003415 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003416 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003417 return vkGetSwapchainStatusKHR_VkResult_return;
3418}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003419#endif
3420#ifdef VK_KHR_external_fence_capabilities
3421static void entry_vkGetPhysicalDeviceExternalFencePropertiesKHR(
3422 VkPhysicalDevice physicalDevice,
3423 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
3424 VkExternalFenceProperties* pExternalFenceProperties)
3425{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003426 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003427 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003428 auto resources = ResourceTracker::get();
3429 resources->on_vkGetPhysicalDeviceExternalFencePropertiesKHR(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003430}
3431#endif
3432#ifdef VK_KHR_external_fence
3433#endif
3434#ifdef VK_KHR_external_fence_win32
3435static VkResult entry_vkImportFenceWin32HandleKHR(
3436 VkDevice device,
3437 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3438{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003439 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003440 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003441 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003442 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003443 return vkImportFenceWin32HandleKHR_VkResult_return;
3444}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003445static VkResult dynCheck_entry_vkImportFenceWin32HandleKHR(
3446 VkDevice device,
3447 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3448{
3449 auto resources = ResourceTracker::get();
3450 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3451 {
3452 sOnInvalidDynamicallyCheckedCall("vkImportFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3453 }
3454 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003455 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003456 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003457 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003458 return vkImportFenceWin32HandleKHR_VkResult_return;
3459}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003460static VkResult entry_vkGetFenceWin32HandleKHR(
3461 VkDevice device,
3462 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3463 HANDLE* pHandle)
3464{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003465 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003466 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003467 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003468 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003469 return vkGetFenceWin32HandleKHR_VkResult_return;
3470}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003471static VkResult dynCheck_entry_vkGetFenceWin32HandleKHR(
3472 VkDevice device,
3473 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3474 HANDLE* pHandle)
3475{
3476 auto resources = ResourceTracker::get();
3477 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3478 {
3479 sOnInvalidDynamicallyCheckedCall("vkGetFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3480 }
3481 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003482 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003483 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003484 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003485 return vkGetFenceWin32HandleKHR_VkResult_return;
3486}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003487#endif
3488#ifdef VK_KHR_external_fence_fd
3489static VkResult entry_vkImportFenceFdKHR(
3490 VkDevice device,
3491 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3492{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003493 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003494 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003495 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003496 auto resources = ResourceTracker::get();
3497 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003498 return vkImportFenceFdKHR_VkResult_return;
3499}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003500static VkResult dynCheck_entry_vkImportFenceFdKHR(
3501 VkDevice device,
3502 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3503{
3504 auto resources = ResourceTracker::get();
3505 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3506 {
3507 sOnInvalidDynamicallyCheckedCall("vkImportFenceFdKHR", "VK_KHR_external_fence_fd");
3508 }
3509 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003510 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003511 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
3512 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
3513 return vkImportFenceFdKHR_VkResult_return;
3514}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003515static VkResult entry_vkGetFenceFdKHR(
3516 VkDevice device,
3517 const VkFenceGetFdInfoKHR* pGetFdInfo,
3518 int* pFd)
3519{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003520 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003521 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003522 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003523 auto resources = ResourceTracker::get();
3524 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003525 return vkGetFenceFdKHR_VkResult_return;
3526}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003527static VkResult dynCheck_entry_vkGetFenceFdKHR(
3528 VkDevice device,
3529 const VkFenceGetFdInfoKHR* pGetFdInfo,
3530 int* pFd)
3531{
3532 auto resources = ResourceTracker::get();
3533 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3534 {
3535 sOnInvalidDynamicallyCheckedCall("vkGetFenceFdKHR", "VK_KHR_external_fence_fd");
3536 }
3537 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003538 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003539 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
3540 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3541 return vkGetFenceFdKHR_VkResult_return;
3542}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003543#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003544#ifdef VK_KHR_performance_query
3545static VkResult entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
3546 VkPhysicalDevice physicalDevice,
3547 uint32_t queueFamilyIndex,
3548 uint32_t* pCounterCount,
3549 VkPerformanceCounterKHR* pCounters,
3550 VkPerformanceCounterDescriptionKHR* pCounterDescriptions)
3551{
3552 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
3553 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3554 VkResult vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return = (VkResult)0;
3555 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, true /* do lock */);
3556 return vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return;
3557}
3558static void entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
3559 VkPhysicalDevice physicalDevice,
3560 const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo,
3561 uint32_t* pNumPasses)
3562{
3563 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
3564 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3565 vkEnc->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, true /* do lock */);
3566}
3567static VkResult entry_vkAcquireProfilingLockKHR(
3568 VkDevice device,
3569 const VkAcquireProfilingLockInfoKHR* pInfo)
3570{
3571 AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
3572 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3573 VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
3574 vkAcquireProfilingLockKHR_VkResult_return = vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
3575 return vkAcquireProfilingLockKHR_VkResult_return;
3576}
3577static VkResult dynCheck_entry_vkAcquireProfilingLockKHR(
3578 VkDevice device,
3579 const VkAcquireProfilingLockInfoKHR* pInfo)
3580{
3581 auto resources = ResourceTracker::get();
3582 if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query"))
3583 {
3584 sOnInvalidDynamicallyCheckedCall("vkAcquireProfilingLockKHR", "VK_KHR_performance_query");
3585 }
3586 AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
3587 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3588 VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
3589 vkAcquireProfilingLockKHR_VkResult_return = vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
3590 return vkAcquireProfilingLockKHR_VkResult_return;
3591}
3592static void entry_vkReleaseProfilingLockKHR(
3593 VkDevice device)
3594{
3595 AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
3596 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3597 vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
3598}
3599static void dynCheck_entry_vkReleaseProfilingLockKHR(
3600 VkDevice device)
3601{
3602 auto resources = ResourceTracker::get();
3603 if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query"))
3604 {
3605 sOnInvalidDynamicallyCheckedCall("vkReleaseProfilingLockKHR", "VK_KHR_performance_query");
3606 }
3607 AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
3608 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3609 vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
3610}
3611#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003612#ifdef VK_KHR_maintenance2
3613#endif
3614#ifdef VK_KHR_get_surface_capabilities2
3615static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
3616 VkPhysicalDevice physicalDevice,
3617 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3618 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
3619{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003620 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003621 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003622 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003623 vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003624 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
3625}
3626static VkResult entry_vkGetPhysicalDeviceSurfaceFormats2KHR(
3627 VkPhysicalDevice physicalDevice,
3628 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3629 uint32_t* pSurfaceFormatCount,
3630 VkSurfaceFormat2KHR* pSurfaceFormats)
3631{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003632 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003633 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003634 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003635 vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003636 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
3637}
3638#endif
3639#ifdef VK_KHR_variable_pointers
3640#endif
3641#ifdef VK_KHR_get_display_properties2
3642static VkResult entry_vkGetPhysicalDeviceDisplayProperties2KHR(
3643 VkPhysicalDevice physicalDevice,
3644 uint32_t* pPropertyCount,
3645 VkDisplayProperties2KHR* pProperties)
3646{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003647 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003648 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003649 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003650 vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003651 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
3652}
3653static VkResult entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
3654 VkPhysicalDevice physicalDevice,
3655 uint32_t* pPropertyCount,
3656 VkDisplayPlaneProperties2KHR* pProperties)
3657{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003658 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003659 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003660 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003661 vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003662 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
3663}
3664static VkResult entry_vkGetDisplayModeProperties2KHR(
3665 VkPhysicalDevice physicalDevice,
3666 VkDisplayKHR display,
3667 uint32_t* pPropertyCount,
3668 VkDisplayModeProperties2KHR* pProperties)
3669{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003670 AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003671 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003672 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003673 vkGetDisplayModeProperties2KHR_VkResult_return = vkEnc->vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003674 return vkGetDisplayModeProperties2KHR_VkResult_return;
3675}
3676static VkResult entry_vkGetDisplayPlaneCapabilities2KHR(
3677 VkPhysicalDevice physicalDevice,
3678 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
3679 VkDisplayPlaneCapabilities2KHR* pCapabilities)
3680{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003681 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003682 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003683 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003684 vkGetDisplayPlaneCapabilities2KHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003685 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
3686}
3687#endif
3688#ifdef VK_KHR_dedicated_allocation
3689#endif
3690#ifdef VK_KHR_storage_buffer_storage_class
3691#endif
3692#ifdef VK_KHR_relaxed_block_layout
3693#endif
3694#ifdef VK_KHR_get_memory_requirements2
3695static void entry_vkGetImageMemoryRequirements2KHR(
3696 VkDevice device,
3697 const VkImageMemoryRequirementsInfo2* pInfo,
3698 VkMemoryRequirements2* pMemoryRequirements)
3699{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003700 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003701 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003702 auto resources = ResourceTracker::get();
3703 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003704}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003705static void dynCheck_entry_vkGetImageMemoryRequirements2KHR(
3706 VkDevice device,
3707 const VkImageMemoryRequirementsInfo2* pInfo,
3708 VkMemoryRequirements2* pMemoryRequirements)
3709{
3710 auto resources = ResourceTracker::get();
3711 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3712 {
3713 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3714 }
3715 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003716 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003717 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3718}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003719static void entry_vkGetBufferMemoryRequirements2KHR(
3720 VkDevice device,
3721 const VkBufferMemoryRequirementsInfo2* pInfo,
3722 VkMemoryRequirements2* pMemoryRequirements)
3723{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003724 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003725 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003726 auto resources = ResourceTracker::get();
3727 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003728}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003729static void dynCheck_entry_vkGetBufferMemoryRequirements2KHR(
3730 VkDevice device,
3731 const VkBufferMemoryRequirementsInfo2* pInfo,
3732 VkMemoryRequirements2* pMemoryRequirements)
3733{
3734 auto resources = ResourceTracker::get();
3735 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3736 {
3737 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3738 }
3739 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003740 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003741 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3742}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003743static void entry_vkGetImageSparseMemoryRequirements2KHR(
3744 VkDevice device,
3745 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3746 uint32_t* pSparseMemoryRequirementCount,
3747 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3748{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003749 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003750 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003751 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003752}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003753static void dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR(
3754 VkDevice device,
3755 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3756 uint32_t* pSparseMemoryRequirementCount,
3757 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3758{
3759 auto resources = ResourceTracker::get();
3760 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3761 {
3762 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3763 }
3764 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003765 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003766 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003767}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003768#endif
3769#ifdef VK_KHR_image_format_list
3770#endif
3771#ifdef VK_KHR_sampler_ycbcr_conversion
3772static VkResult entry_vkCreateSamplerYcbcrConversionKHR(
3773 VkDevice device,
3774 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3775 const VkAllocationCallbacks* pAllocator,
3776 VkSamplerYcbcrConversion* pYcbcrConversion)
3777{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003778 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003779 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003780 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08003781 auto resources = ResourceTracker::get();
3782 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003783 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3784}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003785static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversionKHR(
3786 VkDevice device,
3787 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3788 const VkAllocationCallbacks* pAllocator,
3789 VkSamplerYcbcrConversion* pYcbcrConversion)
3790{
3791 auto resources = ResourceTracker::get();
3792 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3793 {
3794 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3795 }
3796 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003797 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003798 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
3799 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
3800 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3801}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003802static void entry_vkDestroySamplerYcbcrConversionKHR(
3803 VkDevice device,
3804 VkSamplerYcbcrConversion ycbcrConversion,
3805 const VkAllocationCallbacks* pAllocator)
3806{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003807 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003808 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07003809 auto resources = ResourceTracker::get();
3810 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003811}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003812static void dynCheck_entry_vkDestroySamplerYcbcrConversionKHR(
3813 VkDevice device,
3814 VkSamplerYcbcrConversion ycbcrConversion,
3815 const VkAllocationCallbacks* pAllocator)
3816{
3817 auto resources = ResourceTracker::get();
3818 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3819 {
3820 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3821 }
3822 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003823 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003824 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
3825}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003826#endif
3827#ifdef VK_KHR_bind_memory2
3828static VkResult entry_vkBindBufferMemory2KHR(
3829 VkDevice device,
3830 uint32_t bindInfoCount,
3831 const VkBindBufferMemoryInfo* pBindInfos)
3832{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003833 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003834 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003835 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003836 auto resources = ResourceTracker::get();
3837 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003838 return vkBindBufferMemory2KHR_VkResult_return;
3839}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003840static VkResult dynCheck_entry_vkBindBufferMemory2KHR(
3841 VkDevice device,
3842 uint32_t bindInfoCount,
3843 const VkBindBufferMemoryInfo* pBindInfos)
3844{
3845 auto resources = ResourceTracker::get();
3846 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3847 {
3848 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2KHR", "VK_KHR_bind_memory2");
3849 }
3850 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003851 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003852 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
3853 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3854 return vkBindBufferMemory2KHR_VkResult_return;
3855}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003856static VkResult entry_vkBindImageMemory2KHR(
3857 VkDevice device,
3858 uint32_t bindInfoCount,
3859 const VkBindImageMemoryInfo* pBindInfos)
3860{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003861 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003862 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003863 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003864 auto resources = ResourceTracker::get();
3865 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003866 return vkBindImageMemory2KHR_VkResult_return;
3867}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003868static VkResult dynCheck_entry_vkBindImageMemory2KHR(
3869 VkDevice device,
3870 uint32_t bindInfoCount,
3871 const VkBindImageMemoryInfo* pBindInfos)
3872{
3873 auto resources = ResourceTracker::get();
3874 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3875 {
3876 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2KHR", "VK_KHR_bind_memory2");
3877 }
3878 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003879 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003880 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
3881 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3882 return vkBindImageMemory2KHR_VkResult_return;
3883}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003884#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003885#ifdef VK_KHR_portability_subset
3886#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003887#ifdef VK_KHR_maintenance3
3888static void entry_vkGetDescriptorSetLayoutSupportKHR(
3889 VkDevice device,
3890 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3891 VkDescriptorSetLayoutSupport* pSupport)
3892{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003893 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003894 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003895 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003896}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003897static void dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR(
3898 VkDevice device,
3899 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3900 VkDescriptorSetLayoutSupport* pSupport)
3901{
3902 auto resources = ResourceTracker::get();
3903 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance3"))
3904 {
3905 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupportKHR", "VK_KHR_maintenance3");
3906 }
3907 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003908 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003909 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003910}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003911#endif
3912#ifdef VK_KHR_draw_indirect_count
3913static void entry_vkCmdDrawIndirectCountKHR(
3914 VkCommandBuffer commandBuffer,
3915 VkBuffer buffer,
3916 VkDeviceSize offset,
3917 VkBuffer countBuffer,
3918 VkDeviceSize countBufferOffset,
3919 uint32_t maxDrawCount,
3920 uint32_t stride)
3921{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003922 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003923 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003924 vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003925}
3926static void entry_vkCmdDrawIndexedIndirectCountKHR(
3927 VkCommandBuffer commandBuffer,
3928 VkBuffer buffer,
3929 VkDeviceSize offset,
3930 VkBuffer countBuffer,
3931 VkDeviceSize countBufferOffset,
3932 uint32_t maxDrawCount,
3933 uint32_t stride)
3934{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003935 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003936 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003937 vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003938}
3939#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003940#ifdef VK_KHR_shader_subgroup_extended_types
3941#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003942#ifdef VK_KHR_8bit_storage
3943#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003944#ifdef VK_KHR_shader_atomic_int64
3945#endif
3946#ifdef VK_KHR_shader_clock
3947#endif
3948#ifdef VK_KHR_driver_properties
3949#endif
3950#ifdef VK_KHR_shader_float_controls
3951#endif
3952#ifdef VK_KHR_depth_stencil_resolve
3953#endif
3954#ifdef VK_KHR_swapchain_mutable_format
3955#endif
3956#ifdef VK_KHR_timeline_semaphore
3957static VkResult entry_vkGetSemaphoreCounterValueKHR(
3958 VkDevice device,
3959 VkSemaphore semaphore,
3960 uint64_t* pValue)
3961{
3962 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
3963 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3964 VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
3965 vkGetSemaphoreCounterValueKHR_VkResult_return = vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
3966 return vkGetSemaphoreCounterValueKHR_VkResult_return;
3967}
3968static VkResult dynCheck_entry_vkGetSemaphoreCounterValueKHR(
3969 VkDevice device,
3970 VkSemaphore semaphore,
3971 uint64_t* pValue)
3972{
3973 auto resources = ResourceTracker::get();
3974 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
3975 {
3976 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreCounterValueKHR", "VK_KHR_timeline_semaphore");
3977 }
3978 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
3979 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3980 VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
3981 vkGetSemaphoreCounterValueKHR_VkResult_return = vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
3982 return vkGetSemaphoreCounterValueKHR_VkResult_return;
3983}
3984static VkResult entry_vkWaitSemaphoresKHR(
3985 VkDevice device,
3986 const VkSemaphoreWaitInfo* pWaitInfo,
3987 uint64_t timeout)
3988{
3989 AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
3990 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3991 VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
3992 vkWaitSemaphoresKHR_VkResult_return = vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
3993 return vkWaitSemaphoresKHR_VkResult_return;
3994}
3995static VkResult dynCheck_entry_vkWaitSemaphoresKHR(
3996 VkDevice device,
3997 const VkSemaphoreWaitInfo* pWaitInfo,
3998 uint64_t timeout)
3999{
4000 auto resources = ResourceTracker::get();
4001 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
4002 {
4003 sOnInvalidDynamicallyCheckedCall("vkWaitSemaphoresKHR", "VK_KHR_timeline_semaphore");
4004 }
4005 AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
4006 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4007 VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
4008 vkWaitSemaphoresKHR_VkResult_return = vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
4009 return vkWaitSemaphoresKHR_VkResult_return;
4010}
4011static VkResult entry_vkSignalSemaphoreKHR(
4012 VkDevice device,
4013 const VkSemaphoreSignalInfo* pSignalInfo)
4014{
4015 AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
4016 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4017 VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
4018 vkSignalSemaphoreKHR_VkResult_return = vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
4019 return vkSignalSemaphoreKHR_VkResult_return;
4020}
4021static VkResult dynCheck_entry_vkSignalSemaphoreKHR(
4022 VkDevice device,
4023 const VkSemaphoreSignalInfo* pSignalInfo)
4024{
4025 auto resources = ResourceTracker::get();
4026 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
4027 {
4028 sOnInvalidDynamicallyCheckedCall("vkSignalSemaphoreKHR", "VK_KHR_timeline_semaphore");
4029 }
4030 AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
4031 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4032 VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
4033 vkSignalSemaphoreKHR_VkResult_return = vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
4034 return vkSignalSemaphoreKHR_VkResult_return;
4035}
4036#endif
4037#ifdef VK_KHR_vulkan_memory_model
4038#endif
4039#ifdef VK_KHR_shader_terminate_invocation
4040#endif
4041#ifdef VK_KHR_fragment_shading_rate
4042static VkResult entry_vkGetPhysicalDeviceFragmentShadingRatesKHR(
4043 VkPhysicalDevice physicalDevice,
4044 uint32_t* pFragmentShadingRateCount,
4045 VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates)
4046{
4047 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFragmentShadingRatesKHR");
4048 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4049 VkResult vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return = (VkResult)0;
4050 vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, true /* do lock */);
4051 return vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return;
4052}
4053static void entry_vkCmdSetFragmentShadingRateKHR(
4054 VkCommandBuffer commandBuffer,
4055 const VkExtent2D* pFragmentSize,
4056 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
4057{
4058 AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateKHR");
4059 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4060 vkEnc->vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, true /* do lock */);
4061}
4062#endif
4063#ifdef VK_KHR_spirv_1_4
4064#endif
4065#ifdef VK_KHR_surface_protected_capabilities
4066#endif
4067#ifdef VK_KHR_separate_depth_stencil_layouts
4068#endif
4069#ifdef VK_KHR_uniform_buffer_standard_layout
4070#endif
4071#ifdef VK_KHR_buffer_device_address
4072static VkDeviceAddress entry_vkGetBufferDeviceAddressKHR(
4073 VkDevice device,
4074 const VkBufferDeviceAddressInfo* pInfo)
4075{
4076 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
4077 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4078 VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
4079 vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
4080 return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
4081}
4082static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressKHR(
4083 VkDevice device,
4084 const VkBufferDeviceAddressInfo* pInfo)
4085{
4086 auto resources = ResourceTracker::get();
4087 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4088 {
4089 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressKHR", "VK_KHR_buffer_device_address");
4090 }
4091 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
4092 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4093 VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
4094 vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
4095 return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
4096}
4097static uint64_t entry_vkGetBufferOpaqueCaptureAddressKHR(
4098 VkDevice device,
4099 const VkBufferDeviceAddressInfo* pInfo)
4100{
4101 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
4102 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4103 uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4104 vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4105 return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
4106}
4107static uint64_t dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR(
4108 VkDevice device,
4109 const VkBufferDeviceAddressInfo* pInfo)
4110{
4111 auto resources = ResourceTracker::get();
4112 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4113 {
4114 sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureAddressKHR", "VK_KHR_buffer_device_address");
4115 }
4116 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
4117 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4118 uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4119 vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4120 return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
4121}
4122static uint64_t entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
4123 VkDevice device,
4124 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
4125{
4126 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
4127 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4128 uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4129 vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4130 return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
4131}
4132static uint64_t dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
4133 VkDevice device,
4134 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
4135{
4136 auto resources = ResourceTracker::get();
4137 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4138 {
4139 sOnInvalidDynamicallyCheckedCall("vkGetDeviceMemoryOpaqueCaptureAddressKHR", "VK_KHR_buffer_device_address");
4140 }
4141 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
4142 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4143 uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4144 vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4145 return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
4146}
4147#endif
4148#ifdef VK_KHR_deferred_host_operations
4149static VkResult entry_vkCreateDeferredOperationKHR(
4150 VkDevice device,
4151 const VkAllocationCallbacks* pAllocator,
4152 VkDeferredOperationKHR* pDeferredOperation)
4153{
4154 AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
4155 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4156 VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
4157 vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, true /* do lock */);
4158 return vkCreateDeferredOperationKHR_VkResult_return;
4159}
4160static VkResult dynCheck_entry_vkCreateDeferredOperationKHR(
4161 VkDevice device,
4162 const VkAllocationCallbacks* pAllocator,
4163 VkDeferredOperationKHR* pDeferredOperation)
4164{
4165 auto resources = ResourceTracker::get();
4166 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4167 {
4168 sOnInvalidDynamicallyCheckedCall("vkCreateDeferredOperationKHR", "VK_KHR_deferred_host_operations");
4169 }
4170 AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
4171 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4172 VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
4173 vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, true /* do lock */);
4174 return vkCreateDeferredOperationKHR_VkResult_return;
4175}
4176static void entry_vkDestroyDeferredOperationKHR(
4177 VkDevice device,
4178 VkDeferredOperationKHR operation,
4179 const VkAllocationCallbacks* pAllocator)
4180{
4181 AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
4182 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4183 vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
4184}
4185static void dynCheck_entry_vkDestroyDeferredOperationKHR(
4186 VkDevice device,
4187 VkDeferredOperationKHR operation,
4188 const VkAllocationCallbacks* pAllocator)
4189{
4190 auto resources = ResourceTracker::get();
4191 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4192 {
4193 sOnInvalidDynamicallyCheckedCall("vkDestroyDeferredOperationKHR", "VK_KHR_deferred_host_operations");
4194 }
4195 AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
4196 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4197 vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
4198}
4199static uint32_t entry_vkGetDeferredOperationMaxConcurrencyKHR(
4200 VkDevice device,
4201 VkDeferredOperationKHR operation)
4202{
4203 AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
4204 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4205 uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
4206 vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
4207 return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
4208}
4209static uint32_t dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR(
4210 VkDevice device,
4211 VkDeferredOperationKHR operation)
4212{
4213 auto resources = ResourceTracker::get();
4214 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4215 {
4216 sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationMaxConcurrencyKHR", "VK_KHR_deferred_host_operations");
4217 }
4218 AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
4219 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4220 uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
4221 vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
4222 return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
4223}
4224static VkResult entry_vkGetDeferredOperationResultKHR(
4225 VkDevice device,
4226 VkDeferredOperationKHR operation)
4227{
4228 AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
4229 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4230 VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
4231 vkGetDeferredOperationResultKHR_VkResult_return = vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
4232 return vkGetDeferredOperationResultKHR_VkResult_return;
4233}
4234static VkResult dynCheck_entry_vkGetDeferredOperationResultKHR(
4235 VkDevice device,
4236 VkDeferredOperationKHR operation)
4237{
4238 auto resources = ResourceTracker::get();
4239 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4240 {
4241 sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationResultKHR", "VK_KHR_deferred_host_operations");
4242 }
4243 AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
4244 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4245 VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
4246 vkGetDeferredOperationResultKHR_VkResult_return = vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
4247 return vkGetDeferredOperationResultKHR_VkResult_return;
4248}
4249static VkResult entry_vkDeferredOperationJoinKHR(
4250 VkDevice device,
4251 VkDeferredOperationKHR operation)
4252{
4253 AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
4254 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4255 VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
4256 vkDeferredOperationJoinKHR_VkResult_return = vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
4257 return vkDeferredOperationJoinKHR_VkResult_return;
4258}
4259static VkResult dynCheck_entry_vkDeferredOperationJoinKHR(
4260 VkDevice device,
4261 VkDeferredOperationKHR operation)
4262{
4263 auto resources = ResourceTracker::get();
4264 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4265 {
4266 sOnInvalidDynamicallyCheckedCall("vkDeferredOperationJoinKHR", "VK_KHR_deferred_host_operations");
4267 }
4268 AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
4269 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4270 VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
4271 vkDeferredOperationJoinKHR_VkResult_return = vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
4272 return vkDeferredOperationJoinKHR_VkResult_return;
4273}
4274#endif
4275#ifdef VK_KHR_pipeline_executable_properties
4276static VkResult entry_vkGetPipelineExecutablePropertiesKHR(
4277 VkDevice device,
4278 const VkPipelineInfoKHR* pPipelineInfo,
4279 uint32_t* pExecutableCount,
4280 VkPipelineExecutablePropertiesKHR* pProperties)
4281{
4282 AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
4283 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4284 VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
4285 vkGetPipelineExecutablePropertiesKHR_VkResult_return = vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, true /* do lock */);
4286 return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
4287}
4288static VkResult dynCheck_entry_vkGetPipelineExecutablePropertiesKHR(
4289 VkDevice device,
4290 const VkPipelineInfoKHR* pPipelineInfo,
4291 uint32_t* pExecutableCount,
4292 VkPipelineExecutablePropertiesKHR* pProperties)
4293{
4294 auto resources = ResourceTracker::get();
4295 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4296 {
4297 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutablePropertiesKHR", "VK_KHR_pipeline_executable_properties");
4298 }
4299 AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
4300 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4301 VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
4302 vkGetPipelineExecutablePropertiesKHR_VkResult_return = vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, true /* do lock */);
4303 return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
4304}
4305static VkResult entry_vkGetPipelineExecutableStatisticsKHR(
4306 VkDevice device,
4307 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4308 uint32_t* pStatisticCount,
4309 VkPipelineExecutableStatisticKHR* pStatistics)
4310{
4311 AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
4312 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4313 VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
4314 vkGetPipelineExecutableStatisticsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, true /* do lock */);
4315 return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
4316}
4317static VkResult dynCheck_entry_vkGetPipelineExecutableStatisticsKHR(
4318 VkDevice device,
4319 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4320 uint32_t* pStatisticCount,
4321 VkPipelineExecutableStatisticKHR* pStatistics)
4322{
4323 auto resources = ResourceTracker::get();
4324 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4325 {
4326 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableStatisticsKHR", "VK_KHR_pipeline_executable_properties");
4327 }
4328 AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
4329 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4330 VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
4331 vkGetPipelineExecutableStatisticsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, true /* do lock */);
4332 return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
4333}
4334static VkResult entry_vkGetPipelineExecutableInternalRepresentationsKHR(
4335 VkDevice device,
4336 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4337 uint32_t* pInternalRepresentationCount,
4338 VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
4339{
4340 AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
4341 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4342 VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
4343 vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, true /* do lock */);
4344 return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
4345}
4346static VkResult dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR(
4347 VkDevice device,
4348 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4349 uint32_t* pInternalRepresentationCount,
4350 VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
4351{
4352 auto resources = ResourceTracker::get();
4353 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4354 {
4355 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableInternalRepresentationsKHR", "VK_KHR_pipeline_executable_properties");
4356 }
4357 AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
4358 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4359 VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
4360 vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, true /* do lock */);
4361 return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
4362}
4363#endif
4364#ifdef VK_KHR_pipeline_library
4365#endif
4366#ifdef VK_KHR_shader_non_semantic_info
4367#endif
4368#ifdef VK_KHR_copy_commands2
4369static void entry_vkCmdCopyBuffer2KHR(
4370 VkCommandBuffer commandBuffer,
4371 const VkCopyBufferInfo2KHR* pCopyBufferInfo)
4372{
4373 AEMU_SCOPED_TRACE("vkCmdCopyBuffer2KHR");
4374 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4375 vkEnc->vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, true /* do lock */);
4376}
4377static void entry_vkCmdCopyImage2KHR(
4378 VkCommandBuffer commandBuffer,
4379 const VkCopyImageInfo2KHR* pCopyImageInfo)
4380{
4381 AEMU_SCOPED_TRACE("vkCmdCopyImage2KHR");
4382 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4383 vkEnc->vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, true /* do lock */);
4384}
4385static void entry_vkCmdCopyBufferToImage2KHR(
4386 VkCommandBuffer commandBuffer,
4387 const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo)
4388{
4389 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage2KHR");
4390 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4391 vkEnc->vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, true /* do lock */);
4392}
4393static void entry_vkCmdCopyImageToBuffer2KHR(
4394 VkCommandBuffer commandBuffer,
4395 const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo)
4396{
4397 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer2KHR");
4398 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4399 vkEnc->vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, true /* do lock */);
4400}
4401static void entry_vkCmdBlitImage2KHR(
4402 VkCommandBuffer commandBuffer,
4403 const VkBlitImageInfo2KHR* pBlitImageInfo)
4404{
4405 AEMU_SCOPED_TRACE("vkCmdBlitImage2KHR");
4406 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4407 vkEnc->vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, true /* do lock */);
4408}
4409static void entry_vkCmdResolveImage2KHR(
4410 VkCommandBuffer commandBuffer,
4411 const VkResolveImageInfo2KHR* pResolveImageInfo)
4412{
4413 AEMU_SCOPED_TRACE("vkCmdResolveImage2KHR");
4414 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4415 vkEnc->vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, true /* do lock */);
4416}
Lingfeng Yang4c056b22020-07-02 11:43:57 -07004417#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08004418#ifdef VK_ANDROID_native_buffer
4419static VkResult entry_vkGetSwapchainGrallocUsageANDROID(
4420 VkDevice device,
4421 VkFormat format,
4422 VkImageUsageFlags imageUsage,
4423 int* grallocUsage)
4424{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004425 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004426 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang808a6312018-11-13 21:06:15 -08004427 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004428 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004429 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
4430}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004431static VkResult dynCheck_entry_vkGetSwapchainGrallocUsageANDROID(
4432 VkDevice device,
4433 VkFormat format,
4434 VkImageUsageFlags imageUsage,
4435 int* grallocUsage)
4436{
4437 auto resources = ResourceTracker::get();
4438 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
4439 {
4440 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainGrallocUsageANDROID", "VK_ANDROID_native_buffer");
4441 }
4442 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004443 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004444 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004445 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004446 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
4447}
Lingfeng Yang808a6312018-11-13 21:06:15 -08004448static VkResult entry_vkAcquireImageANDROID(
4449 VkDevice device,
4450 VkImage image,
4451 int nativeFenceFd,
4452 VkSemaphore semaphore,
4453 VkFence fence)
4454{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004455 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004456 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang808a6312018-11-13 21:06:15 -08004457 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004458 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004459 return vkAcquireImageANDROID_VkResult_return;
4460}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004461static VkResult dynCheck_entry_vkAcquireImageANDROID(
4462 VkDevice device,
4463 VkImage image,
4464 int nativeFenceFd,
4465 VkSemaphore semaphore,
4466 VkFence fence)
4467{
4468 auto resources = ResourceTracker::get();
4469 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
4470 {
4471 sOnInvalidDynamicallyCheckedCall("vkAcquireImageANDROID", "VK_ANDROID_native_buffer");
4472 }
4473 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004474 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004475 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004476 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004477 return vkAcquireImageANDROID_VkResult_return;
4478}
Lingfeng Yang808a6312018-11-13 21:06:15 -08004479static VkResult entry_vkQueueSignalReleaseImageANDROID(
4480 VkQueue queue,
4481 uint32_t waitSemaphoreCount,
4482 const VkSemaphore* pWaitSemaphores,
4483 VkImage image,
4484 int* pNativeFenceFd)
4485{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004486 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004487 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004488 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004489 vkQueueSignalReleaseImageANDROID_VkResult_return = vkEnc->vkQueueSignalReleaseImageANDROID(queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004490 return vkQueueSignalReleaseImageANDROID_VkResult_return;
4491}
4492#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004493#ifdef VK_EXT_debug_report
4494static VkResult entry_vkCreateDebugReportCallbackEXT(
4495 VkInstance instance,
4496 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
4497 const VkAllocationCallbacks* pAllocator,
4498 VkDebugReportCallbackEXT* pCallback)
4499{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004500 AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004501 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004502 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004503 vkCreateDebugReportCallbackEXT_VkResult_return = vkEnc->vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004504 return vkCreateDebugReportCallbackEXT_VkResult_return;
4505}
4506static void entry_vkDestroyDebugReportCallbackEXT(
4507 VkInstance instance,
4508 VkDebugReportCallbackEXT callback,
4509 const VkAllocationCallbacks* pAllocator)
4510{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004511 AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004512 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004513 vkEnc->vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004514}
4515static void entry_vkDebugReportMessageEXT(
4516 VkInstance instance,
4517 VkDebugReportFlagsEXT flags,
4518 VkDebugReportObjectTypeEXT objectType,
4519 uint64_t object,
4520 size_t location,
4521 int32_t messageCode,
4522 const char* pLayerPrefix,
4523 const char* pMessage)
4524{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004525 AEMU_SCOPED_TRACE("vkDebugReportMessageEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004526 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004527 vkEnc->vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004528}
4529#endif
4530#ifdef VK_NV_glsl_shader
4531#endif
4532#ifdef VK_EXT_depth_range_unrestricted
4533#endif
4534#ifdef VK_IMG_filter_cubic
4535#endif
4536#ifdef VK_AMD_rasterization_order
4537#endif
4538#ifdef VK_AMD_shader_trinary_minmax
4539#endif
4540#ifdef VK_AMD_shader_explicit_vertex_parameter
4541#endif
4542#ifdef VK_EXT_debug_marker
4543static VkResult entry_vkDebugMarkerSetObjectTagEXT(
4544 VkDevice device,
4545 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
4546{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004547 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004548 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004549 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004550 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004551 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
4552}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004553static VkResult dynCheck_entry_vkDebugMarkerSetObjectTagEXT(
4554 VkDevice device,
4555 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
4556{
4557 auto resources = ResourceTracker::get();
4558 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
4559 {
4560 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectTagEXT", "VK_EXT_debug_marker");
4561 }
4562 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004563 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004564 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004565 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004566 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
4567}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004568static VkResult entry_vkDebugMarkerSetObjectNameEXT(
4569 VkDevice device,
4570 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
4571{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004572 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004573 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004574 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004575 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004576 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
4577}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004578static VkResult dynCheck_entry_vkDebugMarkerSetObjectNameEXT(
4579 VkDevice device,
4580 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
4581{
4582 auto resources = ResourceTracker::get();
4583 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
4584 {
4585 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectNameEXT", "VK_EXT_debug_marker");
4586 }
4587 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004588 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004589 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004590 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004591 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
4592}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004593static void entry_vkCmdDebugMarkerBeginEXT(
4594 VkCommandBuffer commandBuffer,
4595 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
4596{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004597 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004598 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004599 vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004600}
4601static void entry_vkCmdDebugMarkerEndEXT(
4602 VkCommandBuffer commandBuffer)
4603{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004604 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004605 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004606 vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004607}
4608static void entry_vkCmdDebugMarkerInsertEXT(
4609 VkCommandBuffer commandBuffer,
4610 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
4611{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004612 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004613 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004614 vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004615}
4616#endif
4617#ifdef VK_AMD_gcn_shader
4618#endif
4619#ifdef VK_NV_dedicated_allocation
4620#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004621#ifdef VK_EXT_transform_feedback
4622static void entry_vkCmdBindTransformFeedbackBuffersEXT(
4623 VkCommandBuffer commandBuffer,
4624 uint32_t firstBinding,
4625 uint32_t bindingCount,
4626 const VkBuffer* pBuffers,
4627 const VkDeviceSize* pOffsets,
4628 const VkDeviceSize* pSizes)
4629{
4630 AEMU_SCOPED_TRACE("vkCmdBindTransformFeedbackBuffersEXT");
4631 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4632 vkEnc->vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, true /* do lock */);
4633}
4634static void entry_vkCmdBeginTransformFeedbackEXT(
4635 VkCommandBuffer commandBuffer,
4636 uint32_t firstCounterBuffer,
4637 uint32_t counterBufferCount,
4638 const VkBuffer* pCounterBuffers,
4639 const VkDeviceSize* pCounterBufferOffsets)
4640{
4641 AEMU_SCOPED_TRACE("vkCmdBeginTransformFeedbackEXT");
4642 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4643 vkEnc->vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
4644}
4645static void entry_vkCmdEndTransformFeedbackEXT(
4646 VkCommandBuffer commandBuffer,
4647 uint32_t firstCounterBuffer,
4648 uint32_t counterBufferCount,
4649 const VkBuffer* pCounterBuffers,
4650 const VkDeviceSize* pCounterBufferOffsets)
4651{
4652 AEMU_SCOPED_TRACE("vkCmdEndTransformFeedbackEXT");
4653 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4654 vkEnc->vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
4655}
4656static void entry_vkCmdBeginQueryIndexedEXT(
4657 VkCommandBuffer commandBuffer,
4658 VkQueryPool queryPool,
4659 uint32_t query,
4660 VkQueryControlFlags flags,
4661 uint32_t index)
4662{
4663 AEMU_SCOPED_TRACE("vkCmdBeginQueryIndexedEXT");
4664 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4665 vkEnc->vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, true /* do lock */);
4666}
4667static void entry_vkCmdEndQueryIndexedEXT(
4668 VkCommandBuffer commandBuffer,
4669 VkQueryPool queryPool,
4670 uint32_t query,
4671 uint32_t index)
4672{
4673 AEMU_SCOPED_TRACE("vkCmdEndQueryIndexedEXT");
4674 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4675 vkEnc->vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, true /* do lock */);
4676}
4677static void entry_vkCmdDrawIndirectByteCountEXT(
4678 VkCommandBuffer commandBuffer,
4679 uint32_t instanceCount,
4680 uint32_t firstInstance,
4681 VkBuffer counterBuffer,
4682 VkDeviceSize counterBufferOffset,
4683 uint32_t counterOffset,
4684 uint32_t vertexStride)
4685{
4686 AEMU_SCOPED_TRACE("vkCmdDrawIndirectByteCountEXT");
4687 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4688 vkEnc->vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, true /* do lock */);
4689}
4690#endif
4691#ifdef VK_NVX_image_view_handle
4692static uint32_t entry_vkGetImageViewHandleNVX(
4693 VkDevice device,
4694 const VkImageViewHandleInfoNVX* pInfo)
4695{
4696 AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
4697 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4698 uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
4699 vkGetImageViewHandleNVX_uint32_t_return = vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
4700 return vkGetImageViewHandleNVX_uint32_t_return;
4701}
4702static uint32_t dynCheck_entry_vkGetImageViewHandleNVX(
4703 VkDevice device,
4704 const VkImageViewHandleInfoNVX* pInfo)
4705{
4706 auto resources = ResourceTracker::get();
4707 if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle"))
4708 {
4709 sOnInvalidDynamicallyCheckedCall("vkGetImageViewHandleNVX", "VK_NVX_image_view_handle");
4710 }
4711 AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
4712 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4713 uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
4714 vkGetImageViewHandleNVX_uint32_t_return = vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
4715 return vkGetImageViewHandleNVX_uint32_t_return;
4716}
4717static VkResult entry_vkGetImageViewAddressNVX(
4718 VkDevice device,
4719 VkImageView imageView,
4720 VkImageViewAddressPropertiesNVX* pProperties)
4721{
4722 AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
4723 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4724 VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
4725 vkGetImageViewAddressNVX_VkResult_return = vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
4726 return vkGetImageViewAddressNVX_VkResult_return;
4727}
4728static VkResult dynCheck_entry_vkGetImageViewAddressNVX(
4729 VkDevice device,
4730 VkImageView imageView,
4731 VkImageViewAddressPropertiesNVX* pProperties)
4732{
4733 auto resources = ResourceTracker::get();
4734 if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle"))
4735 {
4736 sOnInvalidDynamicallyCheckedCall("vkGetImageViewAddressNVX", "VK_NVX_image_view_handle");
4737 }
4738 AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
4739 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4740 VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
4741 vkGetImageViewAddressNVX_VkResult_return = vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
4742 return vkGetImageViewAddressNVX_VkResult_return;
4743}
4744#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004745#ifdef VK_AMD_draw_indirect_count
4746static void entry_vkCmdDrawIndirectCountAMD(
4747 VkCommandBuffer commandBuffer,
4748 VkBuffer buffer,
4749 VkDeviceSize offset,
4750 VkBuffer countBuffer,
4751 VkDeviceSize countBufferOffset,
4752 uint32_t maxDrawCount,
4753 uint32_t stride)
4754{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004755 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004756 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004757 vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004758}
4759static void entry_vkCmdDrawIndexedIndirectCountAMD(
4760 VkCommandBuffer commandBuffer,
4761 VkBuffer buffer,
4762 VkDeviceSize offset,
4763 VkBuffer countBuffer,
4764 VkDeviceSize countBufferOffset,
4765 uint32_t maxDrawCount,
4766 uint32_t stride)
4767{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004768 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004769 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004770 vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004771}
4772#endif
4773#ifdef VK_AMD_negative_viewport_height
4774#endif
4775#ifdef VK_AMD_gpu_shader_half_float
4776#endif
4777#ifdef VK_AMD_shader_ballot
4778#endif
4779#ifdef VK_AMD_texture_gather_bias_lod
4780#endif
4781#ifdef VK_AMD_shader_info
4782static VkResult entry_vkGetShaderInfoAMD(
4783 VkDevice device,
4784 VkPipeline pipeline,
4785 VkShaderStageFlagBits shaderStage,
4786 VkShaderInfoTypeAMD infoType,
4787 size_t* pInfoSize,
4788 void* pInfo)
4789{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004790 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004791 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004792 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004793 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004794 return vkGetShaderInfoAMD_VkResult_return;
4795}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004796static VkResult dynCheck_entry_vkGetShaderInfoAMD(
4797 VkDevice device,
4798 VkPipeline pipeline,
4799 VkShaderStageFlagBits shaderStage,
4800 VkShaderInfoTypeAMD infoType,
4801 size_t* pInfoSize,
4802 void* pInfo)
4803{
4804 auto resources = ResourceTracker::get();
4805 if (!resources->hasDeviceExtension(device, "VK_AMD_shader_info"))
4806 {
4807 sOnInvalidDynamicallyCheckedCall("vkGetShaderInfoAMD", "VK_AMD_shader_info");
4808 }
4809 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004810 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004811 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004812 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004813 return vkGetShaderInfoAMD_VkResult_return;
4814}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004815#endif
4816#ifdef VK_AMD_shader_image_load_store_lod
4817#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004818#ifdef VK_GGP_stream_descriptor_surface
4819static VkResult entry_vkCreateStreamDescriptorSurfaceGGP(
4820 VkInstance instance,
4821 const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
4822 const VkAllocationCallbacks* pAllocator,
4823 VkSurfaceKHR* pSurface)
4824{
4825 AEMU_SCOPED_TRACE("vkCreateStreamDescriptorSurfaceGGP");
4826 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4827 VkResult vkCreateStreamDescriptorSurfaceGGP_VkResult_return = (VkResult)0;
4828 vkCreateStreamDescriptorSurfaceGGP_VkResult_return = vkEnc->vkCreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
4829 return vkCreateStreamDescriptorSurfaceGGP_VkResult_return;
4830}
4831#endif
4832#ifdef VK_NV_corner_sampled_image
4833#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004834#ifdef VK_IMG_format_pvrtc
4835#endif
4836#ifdef VK_NV_external_memory_capabilities
4837static VkResult entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
4838 VkPhysicalDevice physicalDevice,
4839 VkFormat format,
4840 VkImageType type,
4841 VkImageTiling tiling,
4842 VkImageUsageFlags usage,
4843 VkImageCreateFlags flags,
4844 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
4845 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
4846{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004847 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004848 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004849 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004850 vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004851 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
4852}
4853#endif
4854#ifdef VK_NV_external_memory
4855#endif
4856#ifdef VK_NV_external_memory_win32
4857static VkResult entry_vkGetMemoryWin32HandleNV(
4858 VkDevice device,
4859 VkDeviceMemory memory,
4860 VkExternalMemoryHandleTypeFlagsNV handleType,
4861 HANDLE* pHandle)
4862{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004863 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004864 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004865 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004866 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004867 return vkGetMemoryWin32HandleNV_VkResult_return;
4868}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004869static VkResult dynCheck_entry_vkGetMemoryWin32HandleNV(
4870 VkDevice device,
4871 VkDeviceMemory memory,
4872 VkExternalMemoryHandleTypeFlagsNV handleType,
4873 HANDLE* pHandle)
4874{
4875 auto resources = ResourceTracker::get();
4876 if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_win32"))
4877 {
4878 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleNV", "VK_NV_external_memory_win32");
4879 }
4880 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004881 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004882 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004883 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004884 return vkGetMemoryWin32HandleNV_VkResult_return;
4885}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004886#endif
4887#ifdef VK_NV_win32_keyed_mutex
4888#endif
4889#ifdef VK_EXT_validation_flags
4890#endif
4891#ifdef VK_NN_vi_surface
4892static VkResult entry_vkCreateViSurfaceNN(
4893 VkInstance instance,
4894 const VkViSurfaceCreateInfoNN* pCreateInfo,
4895 const VkAllocationCallbacks* pAllocator,
4896 VkSurfaceKHR* pSurface)
4897{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004898 AEMU_SCOPED_TRACE("vkCreateViSurfaceNN");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004899 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004900 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004901 vkCreateViSurfaceNN_VkResult_return = vkEnc->vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004902 return vkCreateViSurfaceNN_VkResult_return;
4903}
4904#endif
4905#ifdef VK_EXT_shader_subgroup_ballot
4906#endif
4907#ifdef VK_EXT_shader_subgroup_vote
4908#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004909#ifdef VK_EXT_texture_compression_astc_hdr
4910#endif
4911#ifdef VK_EXT_astc_decode_mode
4912#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004913#ifdef VK_EXT_conditional_rendering
4914static void entry_vkCmdBeginConditionalRenderingEXT(
4915 VkCommandBuffer commandBuffer,
4916 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
4917{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004918 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004919 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004920 vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004921}
4922static void entry_vkCmdEndConditionalRenderingEXT(
4923 VkCommandBuffer commandBuffer)
4924{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004925 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004926 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004927 vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004928}
4929#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004930#ifdef VK_NV_clip_space_w_scaling
4931static void entry_vkCmdSetViewportWScalingNV(
4932 VkCommandBuffer commandBuffer,
4933 uint32_t firstViewport,
4934 uint32_t viewportCount,
4935 const VkViewportWScalingNV* pViewportWScalings)
4936{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004937 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004938 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004939 vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004940}
4941#endif
4942#ifdef VK_EXT_direct_mode_display
4943static VkResult entry_vkReleaseDisplayEXT(
4944 VkPhysicalDevice physicalDevice,
4945 VkDisplayKHR display)
4946{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004947 AEMU_SCOPED_TRACE("vkReleaseDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004948 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004949 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004950 vkReleaseDisplayEXT_VkResult_return = vkEnc->vkReleaseDisplayEXT(physicalDevice, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004951 return vkReleaseDisplayEXT_VkResult_return;
4952}
4953#endif
4954#ifdef VK_EXT_acquire_xlib_display
4955static VkResult entry_vkAcquireXlibDisplayEXT(
4956 VkPhysicalDevice physicalDevice,
4957 Display* dpy,
4958 VkDisplayKHR display)
4959{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004960 AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004961 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004962 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004963 vkAcquireXlibDisplayEXT_VkResult_return = vkEnc->vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004964 return vkAcquireXlibDisplayEXT_VkResult_return;
4965}
4966static VkResult entry_vkGetRandROutputDisplayEXT(
4967 VkPhysicalDevice physicalDevice,
4968 Display* dpy,
4969 RROutput rrOutput,
4970 VkDisplayKHR* pDisplay)
4971{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004972 AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004973 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004974 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004975 vkGetRandROutputDisplayEXT_VkResult_return = vkEnc->vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004976 return vkGetRandROutputDisplayEXT_VkResult_return;
4977}
4978#endif
4979#ifdef VK_EXT_display_surface_counter
4980static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
4981 VkPhysicalDevice physicalDevice,
4982 VkSurfaceKHR surface,
4983 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
4984{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004985 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004986 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004987 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004988 vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004989 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
4990}
4991#endif
4992#ifdef VK_EXT_display_control
4993static VkResult entry_vkDisplayPowerControlEXT(
4994 VkDevice device,
4995 VkDisplayKHR display,
4996 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
4997{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004998 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004999 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005000 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005001 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005002 return vkDisplayPowerControlEXT_VkResult_return;
5003}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005004static VkResult dynCheck_entry_vkDisplayPowerControlEXT(
5005 VkDevice device,
5006 VkDisplayKHR display,
5007 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
5008{
5009 auto resources = ResourceTracker::get();
5010 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5011 {
5012 sOnInvalidDynamicallyCheckedCall("vkDisplayPowerControlEXT", "VK_EXT_display_control");
5013 }
5014 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005015 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005016 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005017 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005018 return vkDisplayPowerControlEXT_VkResult_return;
5019}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005020static VkResult entry_vkRegisterDeviceEventEXT(
5021 VkDevice device,
5022 const VkDeviceEventInfoEXT* pDeviceEventInfo,
5023 const VkAllocationCallbacks* pAllocator,
5024 VkFence* pFence)
5025{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005026 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005027 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005028 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005029 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005030 return vkRegisterDeviceEventEXT_VkResult_return;
5031}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005032static VkResult dynCheck_entry_vkRegisterDeviceEventEXT(
5033 VkDevice device,
5034 const VkDeviceEventInfoEXT* pDeviceEventInfo,
5035 const VkAllocationCallbacks* pAllocator,
5036 VkFence* pFence)
5037{
5038 auto resources = ResourceTracker::get();
5039 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5040 {
5041 sOnInvalidDynamicallyCheckedCall("vkRegisterDeviceEventEXT", "VK_EXT_display_control");
5042 }
5043 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005044 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005045 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005046 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005047 return vkRegisterDeviceEventEXT_VkResult_return;
5048}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005049static VkResult entry_vkRegisterDisplayEventEXT(
5050 VkDevice device,
5051 VkDisplayKHR display,
5052 const VkDisplayEventInfoEXT* pDisplayEventInfo,
5053 const VkAllocationCallbacks* pAllocator,
5054 VkFence* pFence)
5055{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005056 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005057 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005058 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005059 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005060 return vkRegisterDisplayEventEXT_VkResult_return;
5061}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005062static VkResult dynCheck_entry_vkRegisterDisplayEventEXT(
5063 VkDevice device,
5064 VkDisplayKHR display,
5065 const VkDisplayEventInfoEXT* pDisplayEventInfo,
5066 const VkAllocationCallbacks* pAllocator,
5067 VkFence* pFence)
5068{
5069 auto resources = ResourceTracker::get();
5070 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5071 {
5072 sOnInvalidDynamicallyCheckedCall("vkRegisterDisplayEventEXT", "VK_EXT_display_control");
5073 }
5074 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005075 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005076 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005077 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005078 return vkRegisterDisplayEventEXT_VkResult_return;
5079}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005080static VkResult entry_vkGetSwapchainCounterEXT(
5081 VkDevice device,
5082 VkSwapchainKHR swapchain,
5083 VkSurfaceCounterFlagBitsEXT counter,
5084 uint64_t* pCounterValue)
5085{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005086 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005087 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005088 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005089 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005090 return vkGetSwapchainCounterEXT_VkResult_return;
5091}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005092static VkResult dynCheck_entry_vkGetSwapchainCounterEXT(
5093 VkDevice device,
5094 VkSwapchainKHR swapchain,
5095 VkSurfaceCounterFlagBitsEXT counter,
5096 uint64_t* pCounterValue)
5097{
5098 auto resources = ResourceTracker::get();
5099 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5100 {
5101 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainCounterEXT", "VK_EXT_display_control");
5102 }
5103 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005104 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005105 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005106 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005107 return vkGetSwapchainCounterEXT_VkResult_return;
5108}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005109#endif
5110#ifdef VK_GOOGLE_display_timing
5111static VkResult entry_vkGetRefreshCycleDurationGOOGLE(
5112 VkDevice device,
5113 VkSwapchainKHR swapchain,
5114 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
5115{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005116 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005117 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005118 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005119 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005120 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
5121}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005122static VkResult dynCheck_entry_vkGetRefreshCycleDurationGOOGLE(
5123 VkDevice device,
5124 VkSwapchainKHR swapchain,
5125 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
5126{
5127 auto resources = ResourceTracker::get();
5128 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
5129 {
5130 sOnInvalidDynamicallyCheckedCall("vkGetRefreshCycleDurationGOOGLE", "VK_GOOGLE_display_timing");
5131 }
5132 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005133 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005134 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005135 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005136 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
5137}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005138static VkResult entry_vkGetPastPresentationTimingGOOGLE(
5139 VkDevice device,
5140 VkSwapchainKHR swapchain,
5141 uint32_t* pPresentationTimingCount,
5142 VkPastPresentationTimingGOOGLE* pPresentationTimings)
5143{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005144 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005145 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005146 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005147 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005148 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
5149}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005150static VkResult dynCheck_entry_vkGetPastPresentationTimingGOOGLE(
5151 VkDevice device,
5152 VkSwapchainKHR swapchain,
5153 uint32_t* pPresentationTimingCount,
5154 VkPastPresentationTimingGOOGLE* pPresentationTimings)
5155{
5156 auto resources = ResourceTracker::get();
5157 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
5158 {
5159 sOnInvalidDynamicallyCheckedCall("vkGetPastPresentationTimingGOOGLE", "VK_GOOGLE_display_timing");
5160 }
5161 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005162 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005163 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005164 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005165 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
5166}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005167#endif
5168#ifdef VK_NV_sample_mask_override_coverage
5169#endif
5170#ifdef VK_NV_geometry_shader_passthrough
5171#endif
5172#ifdef VK_NV_viewport_array2
5173#endif
5174#ifdef VK_NVX_multiview_per_view_attributes
5175#endif
5176#ifdef VK_NV_viewport_swizzle
5177#endif
5178#ifdef VK_EXT_discard_rectangles
5179static void entry_vkCmdSetDiscardRectangleEXT(
5180 VkCommandBuffer commandBuffer,
5181 uint32_t firstDiscardRectangle,
5182 uint32_t discardRectangleCount,
5183 const VkRect2D* pDiscardRectangles)
5184{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005185 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005186 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005187 vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005188}
5189#endif
5190#ifdef VK_EXT_conservative_rasterization
5191#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005192#ifdef VK_EXT_depth_clip_enable
5193#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005194#ifdef VK_EXT_swapchain_colorspace
5195#endif
5196#ifdef VK_EXT_hdr_metadata
5197static void entry_vkSetHdrMetadataEXT(
5198 VkDevice device,
5199 uint32_t swapchainCount,
5200 const VkSwapchainKHR* pSwapchains,
5201 const VkHdrMetadataEXT* pMetadata)
5202{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005203 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005204 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005205 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005206}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005207static void dynCheck_entry_vkSetHdrMetadataEXT(
5208 VkDevice device,
5209 uint32_t swapchainCount,
5210 const VkSwapchainKHR* pSwapchains,
5211 const VkHdrMetadataEXT* pMetadata)
5212{
5213 auto resources = ResourceTracker::get();
5214 if (!resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata"))
5215 {
5216 sOnInvalidDynamicallyCheckedCall("vkSetHdrMetadataEXT", "VK_EXT_hdr_metadata");
5217 }
5218 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005219 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005220 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005221}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005222#endif
5223#ifdef VK_MVK_ios_surface
5224static VkResult entry_vkCreateIOSSurfaceMVK(
5225 VkInstance instance,
5226 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
5227 const VkAllocationCallbacks* pAllocator,
5228 VkSurfaceKHR* pSurface)
5229{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005230 AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005231 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005232 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005233 vkCreateIOSSurfaceMVK_VkResult_return = vkEnc->vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005234 return vkCreateIOSSurfaceMVK_VkResult_return;
5235}
5236#endif
5237#ifdef VK_MVK_macos_surface
5238static VkResult entry_vkCreateMacOSSurfaceMVK(
5239 VkInstance instance,
5240 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
5241 const VkAllocationCallbacks* pAllocator,
5242 VkSurfaceKHR* pSurface)
5243{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005244 AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005245 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005246 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005247 vkCreateMacOSSurfaceMVK_VkResult_return = vkEnc->vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005248 return vkCreateMacOSSurfaceMVK_VkResult_return;
5249}
5250#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005251#ifdef VK_MVK_moltenvk
5252static void entry_vkGetMTLDeviceMVK(
5253 VkPhysicalDevice physicalDevice,
5254 void** pMTLDevice)
5255{
5256 AEMU_SCOPED_TRACE("vkGetMTLDeviceMVK");
5257 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5258 vkEnc->vkGetMTLDeviceMVK(physicalDevice, pMTLDevice, true /* do lock */);
5259}
5260static VkResult entry_vkSetMTLTextureMVK(
5261 VkImage image,
5262 void* mtlTexture)
5263{
5264 AEMU_SCOPED_TRACE("vkSetMTLTextureMVK");
5265 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5266 VkResult vkSetMTLTextureMVK_VkResult_return = (VkResult)0;
5267 vkSetMTLTextureMVK_VkResult_return = vkEnc->vkSetMTLTextureMVK(image, mtlTexture, true /* do lock */);
5268 return vkSetMTLTextureMVK_VkResult_return;
5269}
5270static void entry_vkGetMTLTextureMVK(
5271 VkImage image,
5272 void** pMTLTexture)
5273{
5274 AEMU_SCOPED_TRACE("vkGetMTLTextureMVK");
5275 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5276 vkEnc->vkGetMTLTextureMVK(image, pMTLTexture, true /* do lock */);
5277}
5278static void entry_vkGetMTLBufferMVK(
5279 VkBuffer buffer,
5280 void** pMTLBuffer)
5281{
5282 AEMU_SCOPED_TRACE("vkGetMTLBufferMVK");
5283 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5284 vkEnc->vkGetMTLBufferMVK(buffer, pMTLBuffer, true /* do lock */);
5285}
5286static VkResult entry_vkUseIOSurfaceMVK(
5287 VkImage image,
5288 void* ioSurface)
5289{
5290 AEMU_SCOPED_TRACE("vkUseIOSurfaceMVK");
5291 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5292 VkResult vkUseIOSurfaceMVK_VkResult_return = (VkResult)0;
5293 vkUseIOSurfaceMVK_VkResult_return = vkEnc->vkUseIOSurfaceMVK(image, ioSurface, true /* do lock */);
5294 return vkUseIOSurfaceMVK_VkResult_return;
5295}
5296static void entry_vkGetIOSurfaceMVK(
5297 VkImage image,
5298 void** pIOSurface)
5299{
5300 AEMU_SCOPED_TRACE("vkGetIOSurfaceMVK");
5301 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5302 vkEnc->vkGetIOSurfaceMVK(image, pIOSurface, true /* do lock */);
5303}
5304#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005305#ifdef VK_EXT_external_memory_dma_buf
5306#endif
5307#ifdef VK_EXT_queue_family_foreign
5308#endif
5309#ifdef VK_EXT_debug_utils
5310static VkResult entry_vkSetDebugUtilsObjectNameEXT(
5311 VkDevice device,
5312 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
5313{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005314 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005315 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005316 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005317 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005318 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
5319}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005320static VkResult dynCheck_entry_vkSetDebugUtilsObjectNameEXT(
5321 VkDevice device,
5322 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
5323{
5324 auto resources = ResourceTracker::get();
5325 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
5326 {
5327 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectNameEXT", "VK_EXT_debug_utils");
5328 }
5329 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005330 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005331 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005332 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005333 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
5334}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005335static VkResult entry_vkSetDebugUtilsObjectTagEXT(
5336 VkDevice device,
5337 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
5338{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005339 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005340 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005341 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005342 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005343 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
5344}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005345static VkResult dynCheck_entry_vkSetDebugUtilsObjectTagEXT(
5346 VkDevice device,
5347 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
5348{
5349 auto resources = ResourceTracker::get();
5350 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
5351 {
5352 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectTagEXT", "VK_EXT_debug_utils");
5353 }
5354 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005355 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005356 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005357 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005358 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
5359}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005360static void entry_vkQueueBeginDebugUtilsLabelEXT(
5361 VkQueue queue,
5362 const VkDebugUtilsLabelEXT* pLabelInfo)
5363{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005364 AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005365 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005366 vkEnc->vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005367}
5368static void entry_vkQueueEndDebugUtilsLabelEXT(
5369 VkQueue queue)
5370{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005371 AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005372 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005373 vkEnc->vkQueueEndDebugUtilsLabelEXT(queue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005374}
5375static void entry_vkQueueInsertDebugUtilsLabelEXT(
5376 VkQueue queue,
5377 const VkDebugUtilsLabelEXT* pLabelInfo)
5378{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005379 AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005380 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005381 vkEnc->vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005382}
5383static void entry_vkCmdBeginDebugUtilsLabelEXT(
5384 VkCommandBuffer commandBuffer,
5385 const VkDebugUtilsLabelEXT* pLabelInfo)
5386{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005387 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005388 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005389 vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005390}
5391static void entry_vkCmdEndDebugUtilsLabelEXT(
5392 VkCommandBuffer commandBuffer)
5393{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005394 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005395 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005396 vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005397}
5398static void entry_vkCmdInsertDebugUtilsLabelEXT(
5399 VkCommandBuffer commandBuffer,
5400 const VkDebugUtilsLabelEXT* pLabelInfo)
5401{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005402 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005403 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005404 vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005405}
5406static VkResult entry_vkCreateDebugUtilsMessengerEXT(
5407 VkInstance instance,
5408 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
5409 const VkAllocationCallbacks* pAllocator,
5410 VkDebugUtilsMessengerEXT* pMessenger)
5411{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005412 AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005413 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005414 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005415 vkCreateDebugUtilsMessengerEXT_VkResult_return = vkEnc->vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005416 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
5417}
5418static void entry_vkDestroyDebugUtilsMessengerEXT(
5419 VkInstance instance,
5420 VkDebugUtilsMessengerEXT messenger,
5421 const VkAllocationCallbacks* pAllocator)
5422{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005423 AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005424 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005425 vkEnc->vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005426}
5427static void entry_vkSubmitDebugUtilsMessageEXT(
5428 VkInstance instance,
5429 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
5430 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
5431 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
5432{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005433 AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005434 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005435 vkEnc->vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005436}
5437#endif
5438#ifdef VK_ANDROID_external_memory_android_hardware_buffer
5439static VkResult entry_vkGetAndroidHardwareBufferPropertiesANDROID(
5440 VkDevice device,
5441 const AHardwareBuffer* buffer,
5442 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
5443{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005444 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005445 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005446 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08005447 auto resources = ResourceTracker::get();
5448 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005449 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
5450}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005451static VkResult dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID(
5452 VkDevice device,
5453 const AHardwareBuffer* buffer,
5454 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
5455{
5456 auto resources = ResourceTracker::get();
5457 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
5458 {
5459 sOnInvalidDynamicallyCheckedCall("vkGetAndroidHardwareBufferPropertiesANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
5460 }
5461 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005462 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005463 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
5464 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
5465 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
5466}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005467static VkResult entry_vkGetMemoryAndroidHardwareBufferANDROID(
5468 VkDevice device,
5469 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
5470 AHardwareBuffer** pBuffer)
5471{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005472 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005473 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005474 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08005475 auto resources = ResourceTracker::get();
5476 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005477 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
5478}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005479static VkResult dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID(
5480 VkDevice device,
5481 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
5482 AHardwareBuffer** pBuffer)
5483{
5484 auto resources = ResourceTracker::get();
5485 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
5486 {
5487 sOnInvalidDynamicallyCheckedCall("vkGetMemoryAndroidHardwareBufferANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
5488 }
5489 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005490 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005491 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
5492 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
5493 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
5494}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005495#endif
5496#ifdef VK_EXT_sampler_filter_minmax
5497#endif
5498#ifdef VK_AMD_gpu_shader_int16
5499#endif
5500#ifdef VK_AMD_mixed_attachment_samples
5501#endif
5502#ifdef VK_AMD_shader_fragment_mask
5503#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005504#ifdef VK_EXT_inline_uniform_block
5505#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005506#ifdef VK_EXT_shader_stencil_export
5507#endif
5508#ifdef VK_EXT_sample_locations
5509static void entry_vkCmdSetSampleLocationsEXT(
5510 VkCommandBuffer commandBuffer,
5511 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
5512{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005513 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005514 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005515 vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005516}
5517static void entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(
5518 VkPhysicalDevice physicalDevice,
5519 VkSampleCountFlagBits samples,
5520 VkMultisamplePropertiesEXT* pMultisampleProperties)
5521{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005522 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005523 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005524 vkEnc->vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005525}
5526#endif
5527#ifdef VK_EXT_blend_operation_advanced
5528#endif
5529#ifdef VK_NV_fragment_coverage_to_color
5530#endif
5531#ifdef VK_NV_framebuffer_mixed_samples
5532#endif
5533#ifdef VK_NV_fill_rectangle
5534#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005535#ifdef VK_NV_shader_sm_builtins
5536#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005537#ifdef VK_EXT_post_depth_coverage
5538#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005539#ifdef VK_EXT_image_drm_format_modifier
5540static VkResult entry_vkGetImageDrmFormatModifierPropertiesEXT(
5541 VkDevice device,
5542 VkImage image,
5543 VkImageDrmFormatModifierPropertiesEXT* pProperties)
5544{
5545 AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
5546 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5547 VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
5548 vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, true /* do lock */);
5549 return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
5550}
5551static VkResult dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT(
5552 VkDevice device,
5553 VkImage image,
5554 VkImageDrmFormatModifierPropertiesEXT* pProperties)
5555{
5556 auto resources = ResourceTracker::get();
5557 if (!resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier"))
5558 {
5559 sOnInvalidDynamicallyCheckedCall("vkGetImageDrmFormatModifierPropertiesEXT", "VK_EXT_image_drm_format_modifier");
5560 }
5561 AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
5562 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5563 VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
5564 vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, true /* do lock */);
5565 return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
5566}
5567#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005568#ifdef VK_EXT_validation_cache
5569static VkResult entry_vkCreateValidationCacheEXT(
5570 VkDevice device,
5571 const VkValidationCacheCreateInfoEXT* pCreateInfo,
5572 const VkAllocationCallbacks* pAllocator,
5573 VkValidationCacheEXT* pValidationCache)
5574{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005575 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005576 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005577 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005578 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005579 return vkCreateValidationCacheEXT_VkResult_return;
5580}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005581static VkResult dynCheck_entry_vkCreateValidationCacheEXT(
5582 VkDevice device,
5583 const VkValidationCacheCreateInfoEXT* pCreateInfo,
5584 const VkAllocationCallbacks* pAllocator,
5585 VkValidationCacheEXT* pValidationCache)
5586{
5587 auto resources = ResourceTracker::get();
5588 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5589 {
5590 sOnInvalidDynamicallyCheckedCall("vkCreateValidationCacheEXT", "VK_EXT_validation_cache");
5591 }
5592 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005593 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005594 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005595 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005596 return vkCreateValidationCacheEXT_VkResult_return;
5597}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005598static void entry_vkDestroyValidationCacheEXT(
5599 VkDevice device,
5600 VkValidationCacheEXT validationCache,
5601 const VkAllocationCallbacks* pAllocator)
5602{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005603 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005604 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005605 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005606}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005607static void dynCheck_entry_vkDestroyValidationCacheEXT(
5608 VkDevice device,
5609 VkValidationCacheEXT validationCache,
5610 const VkAllocationCallbacks* pAllocator)
5611{
5612 auto resources = ResourceTracker::get();
5613 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5614 {
5615 sOnInvalidDynamicallyCheckedCall("vkDestroyValidationCacheEXT", "VK_EXT_validation_cache");
5616 }
5617 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005618 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005619 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005620}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005621static VkResult entry_vkMergeValidationCachesEXT(
5622 VkDevice device,
5623 VkValidationCacheEXT dstCache,
5624 uint32_t srcCacheCount,
5625 const VkValidationCacheEXT* pSrcCaches)
5626{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005627 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005628 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005629 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005630 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005631 return vkMergeValidationCachesEXT_VkResult_return;
5632}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005633static VkResult dynCheck_entry_vkMergeValidationCachesEXT(
5634 VkDevice device,
5635 VkValidationCacheEXT dstCache,
5636 uint32_t srcCacheCount,
5637 const VkValidationCacheEXT* pSrcCaches)
5638{
5639 auto resources = ResourceTracker::get();
5640 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5641 {
5642 sOnInvalidDynamicallyCheckedCall("vkMergeValidationCachesEXT", "VK_EXT_validation_cache");
5643 }
5644 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005645 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005646 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005647 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005648 return vkMergeValidationCachesEXT_VkResult_return;
5649}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005650static VkResult entry_vkGetValidationCacheDataEXT(
5651 VkDevice device,
5652 VkValidationCacheEXT validationCache,
5653 size_t* pDataSize,
5654 void* pData)
5655{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005656 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005657 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005658 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005659 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005660 return vkGetValidationCacheDataEXT_VkResult_return;
5661}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005662static VkResult dynCheck_entry_vkGetValidationCacheDataEXT(
5663 VkDevice device,
5664 VkValidationCacheEXT validationCache,
5665 size_t* pDataSize,
5666 void* pData)
5667{
5668 auto resources = ResourceTracker::get();
5669 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5670 {
5671 sOnInvalidDynamicallyCheckedCall("vkGetValidationCacheDataEXT", "VK_EXT_validation_cache");
5672 }
5673 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005674 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005675 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005676 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005677 return vkGetValidationCacheDataEXT_VkResult_return;
5678}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005679#endif
5680#ifdef VK_EXT_descriptor_indexing
5681#endif
5682#ifdef VK_EXT_shader_viewport_index_layer
5683#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005684#ifdef VK_NV_shading_rate_image
5685static void entry_vkCmdBindShadingRateImageNV(
5686 VkCommandBuffer commandBuffer,
5687 VkImageView imageView,
5688 VkImageLayout imageLayout)
5689{
5690 AEMU_SCOPED_TRACE("vkCmdBindShadingRateImageNV");
5691 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5692 vkEnc->vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, true /* do lock */);
5693}
5694static void entry_vkCmdSetViewportShadingRatePaletteNV(
5695 VkCommandBuffer commandBuffer,
5696 uint32_t firstViewport,
5697 uint32_t viewportCount,
5698 const VkShadingRatePaletteNV* pShadingRatePalettes)
5699{
5700 AEMU_SCOPED_TRACE("vkCmdSetViewportShadingRatePaletteNV");
5701 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5702 vkEnc->vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, true /* do lock */);
5703}
5704static void entry_vkCmdSetCoarseSampleOrderNV(
5705 VkCommandBuffer commandBuffer,
5706 VkCoarseSampleOrderTypeNV sampleOrderType,
5707 uint32_t customSampleOrderCount,
5708 const VkCoarseSampleOrderCustomNV* pCustomSampleOrders)
5709{
5710 AEMU_SCOPED_TRACE("vkCmdSetCoarseSampleOrderNV");
5711 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5712 vkEnc->vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, true /* do lock */);
5713}
5714#endif
5715#ifdef VK_NV_ray_tracing
5716static VkResult entry_vkCreateAccelerationStructureNV(
5717 VkDevice device,
5718 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
5719 const VkAllocationCallbacks* pAllocator,
5720 VkAccelerationStructureNV* pAccelerationStructure)
5721{
5722 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
5723 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5724 VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
5725 vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
5726 return vkCreateAccelerationStructureNV_VkResult_return;
5727}
5728static VkResult dynCheck_entry_vkCreateAccelerationStructureNV(
5729 VkDevice device,
5730 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
5731 const VkAllocationCallbacks* pAllocator,
5732 VkAccelerationStructureNV* pAccelerationStructure)
5733{
5734 auto resources = ResourceTracker::get();
5735 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5736 {
5737 sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureNV", "VK_NV_ray_tracing");
5738 }
5739 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
5740 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5741 VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
5742 vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
5743 return vkCreateAccelerationStructureNV_VkResult_return;
5744}
5745static void entry_vkDestroyAccelerationStructureNV(
5746 VkDevice device,
5747 VkAccelerationStructureNV accelerationStructure,
5748 const VkAllocationCallbacks* pAllocator)
5749{
5750 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
5751 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5752 vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, true /* do lock */);
5753}
5754static void dynCheck_entry_vkDestroyAccelerationStructureNV(
5755 VkDevice device,
5756 VkAccelerationStructureNV accelerationStructure,
5757 const VkAllocationCallbacks* pAllocator)
5758{
5759 auto resources = ResourceTracker::get();
5760 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5761 {
5762 sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureNV", "VK_NV_ray_tracing");
5763 }
5764 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
5765 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5766 vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, true /* do lock */);
5767}
5768static void entry_vkGetAccelerationStructureMemoryRequirementsNV(
5769 VkDevice device,
5770 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
5771 VkMemoryRequirements2KHR* pMemoryRequirements)
5772{
5773 AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
5774 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5775 vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
5776}
5777static void dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV(
5778 VkDevice device,
5779 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
5780 VkMemoryRequirements2KHR* pMemoryRequirements)
5781{
5782 auto resources = ResourceTracker::get();
5783 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5784 {
5785 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureMemoryRequirementsNV", "VK_NV_ray_tracing");
5786 }
5787 AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
5788 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5789 vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
5790}
5791static VkResult entry_vkBindAccelerationStructureMemoryNV(
5792 VkDevice device,
5793 uint32_t bindInfoCount,
5794 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
5795{
5796 AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
5797 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5798 VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
5799 vkBindAccelerationStructureMemoryNV_VkResult_return = vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, true /* do lock */);
5800 return vkBindAccelerationStructureMemoryNV_VkResult_return;
5801}
5802static VkResult dynCheck_entry_vkBindAccelerationStructureMemoryNV(
5803 VkDevice device,
5804 uint32_t bindInfoCount,
5805 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
5806{
5807 auto resources = ResourceTracker::get();
5808 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5809 {
5810 sOnInvalidDynamicallyCheckedCall("vkBindAccelerationStructureMemoryNV", "VK_NV_ray_tracing");
5811 }
5812 AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
5813 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5814 VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
5815 vkBindAccelerationStructureMemoryNV_VkResult_return = vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, true /* do lock */);
5816 return vkBindAccelerationStructureMemoryNV_VkResult_return;
5817}
5818static void entry_vkCmdBuildAccelerationStructureNV(
5819 VkCommandBuffer commandBuffer,
5820 const VkAccelerationStructureInfoNV* pInfo,
5821 VkBuffer instanceData,
5822 VkDeviceSize instanceOffset,
5823 VkBool32 update,
5824 VkAccelerationStructureNV dst,
5825 VkAccelerationStructureNV src,
5826 VkBuffer scratch,
5827 VkDeviceSize scratchOffset)
5828{
5829 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructureNV");
5830 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5831 vkEnc->vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, true /* do lock */);
5832}
5833static void entry_vkCmdCopyAccelerationStructureNV(
5834 VkCommandBuffer commandBuffer,
5835 VkAccelerationStructureNV dst,
5836 VkAccelerationStructureNV src,
5837 VkCopyAccelerationStructureModeKHR mode)
5838{
5839 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureNV");
5840 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5841 vkEnc->vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, true /* do lock */);
5842}
5843static void entry_vkCmdTraceRaysNV(
5844 VkCommandBuffer commandBuffer,
5845 VkBuffer raygenShaderBindingTableBuffer,
5846 VkDeviceSize raygenShaderBindingOffset,
5847 VkBuffer missShaderBindingTableBuffer,
5848 VkDeviceSize missShaderBindingOffset,
5849 VkDeviceSize missShaderBindingStride,
5850 VkBuffer hitShaderBindingTableBuffer,
5851 VkDeviceSize hitShaderBindingOffset,
5852 VkDeviceSize hitShaderBindingStride,
5853 VkBuffer callableShaderBindingTableBuffer,
5854 VkDeviceSize callableShaderBindingOffset,
5855 VkDeviceSize callableShaderBindingStride,
5856 uint32_t width,
5857 uint32_t height,
5858 uint32_t depth)
5859{
5860 AEMU_SCOPED_TRACE("vkCmdTraceRaysNV");
5861 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5862 vkEnc->vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, true /* do lock */);
5863}
5864static VkResult entry_vkCreateRayTracingPipelinesNV(
5865 VkDevice device,
5866 VkPipelineCache pipelineCache,
5867 uint32_t createInfoCount,
5868 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
5869 const VkAllocationCallbacks* pAllocator,
5870 VkPipeline* pPipelines)
5871{
5872 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
5873 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5874 VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
5875 vkCreateRayTracingPipelinesNV_VkResult_return = vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
5876 return vkCreateRayTracingPipelinesNV_VkResult_return;
5877}
5878static VkResult dynCheck_entry_vkCreateRayTracingPipelinesNV(
5879 VkDevice device,
5880 VkPipelineCache pipelineCache,
5881 uint32_t createInfoCount,
5882 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
5883 const VkAllocationCallbacks* pAllocator,
5884 VkPipeline* pPipelines)
5885{
5886 auto resources = ResourceTracker::get();
5887 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5888 {
5889 sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesNV", "VK_NV_ray_tracing");
5890 }
5891 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
5892 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5893 VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
5894 vkCreateRayTracingPipelinesNV_VkResult_return = vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
5895 return vkCreateRayTracingPipelinesNV_VkResult_return;
5896}
5897static VkResult entry_vkGetRayTracingShaderGroupHandlesKHR(
5898 VkDevice device,
5899 VkPipeline pipeline,
5900 uint32_t firstGroup,
5901 uint32_t groupCount,
5902 size_t dataSize,
5903 void* pData)
5904{
5905 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
5906 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5907 VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
5908 vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5909 return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
5910}
5911static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR(
5912 VkDevice device,
5913 VkPipeline pipeline,
5914 uint32_t firstGroup,
5915 uint32_t groupCount,
5916 size_t dataSize,
5917 void* pData)
5918{
5919 auto resources = ResourceTracker::get();
5920 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5921 {
5922 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesKHR", "VK_NV_ray_tracing");
5923 }
5924 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
5925 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5926 VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
5927 vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5928 return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
5929}
5930static VkResult entry_vkGetRayTracingShaderGroupHandlesNV(
5931 VkDevice device,
5932 VkPipeline pipeline,
5933 uint32_t firstGroup,
5934 uint32_t groupCount,
5935 size_t dataSize,
5936 void* pData)
5937{
5938 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
5939 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5940 VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
5941 vkGetRayTracingShaderGroupHandlesNV_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5942 return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
5943}
5944static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV(
5945 VkDevice device,
5946 VkPipeline pipeline,
5947 uint32_t firstGroup,
5948 uint32_t groupCount,
5949 size_t dataSize,
5950 void* pData)
5951{
5952 auto resources = ResourceTracker::get();
5953 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5954 {
5955 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesNV", "VK_NV_ray_tracing");
5956 }
5957 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
5958 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5959 VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
5960 vkGetRayTracingShaderGroupHandlesNV_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5961 return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
5962}
5963static VkResult entry_vkGetAccelerationStructureHandleNV(
5964 VkDevice device,
5965 VkAccelerationStructureNV accelerationStructure,
5966 size_t dataSize,
5967 void* pData)
5968{
5969 AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
5970 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5971 VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
5972 vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, true /* do lock */);
5973 return vkGetAccelerationStructureHandleNV_VkResult_return;
5974}
5975static VkResult dynCheck_entry_vkGetAccelerationStructureHandleNV(
5976 VkDevice device,
5977 VkAccelerationStructureNV accelerationStructure,
5978 size_t dataSize,
5979 void* pData)
5980{
5981 auto resources = ResourceTracker::get();
5982 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5983 {
5984 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureHandleNV", "VK_NV_ray_tracing");
5985 }
5986 AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
5987 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5988 VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
5989 vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, true /* do lock */);
5990 return vkGetAccelerationStructureHandleNV_VkResult_return;
5991}
5992static void entry_vkCmdWriteAccelerationStructuresPropertiesNV(
5993 VkCommandBuffer commandBuffer,
5994 uint32_t accelerationStructureCount,
5995 const VkAccelerationStructureNV* pAccelerationStructures,
5996 VkQueryType queryType,
5997 VkQueryPool queryPool,
5998 uint32_t firstQuery)
5999{
6000 AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesNV");
6001 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6002 vkEnc->vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
6003}
6004static VkResult entry_vkCompileDeferredNV(
6005 VkDevice device,
6006 VkPipeline pipeline,
6007 uint32_t shader)
6008{
6009 AEMU_SCOPED_TRACE("vkCompileDeferredNV");
6010 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6011 VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
6012 vkCompileDeferredNV_VkResult_return = vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
6013 return vkCompileDeferredNV_VkResult_return;
6014}
6015static VkResult dynCheck_entry_vkCompileDeferredNV(
6016 VkDevice device,
6017 VkPipeline pipeline,
6018 uint32_t shader)
6019{
6020 auto resources = ResourceTracker::get();
6021 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6022 {
6023 sOnInvalidDynamicallyCheckedCall("vkCompileDeferredNV", "VK_NV_ray_tracing");
6024 }
6025 AEMU_SCOPED_TRACE("vkCompileDeferredNV");
6026 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6027 VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
6028 vkCompileDeferredNV_VkResult_return = vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
6029 return vkCompileDeferredNV_VkResult_return;
6030}
6031#endif
6032#ifdef VK_NV_representative_fragment_test
6033#endif
6034#ifdef VK_EXT_filter_cubic
6035#endif
6036#ifdef VK_QCOM_render_pass_shader_resolve
6037#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006038#ifdef VK_EXT_global_priority
6039#endif
6040#ifdef VK_EXT_external_memory_host
6041static VkResult entry_vkGetMemoryHostPointerPropertiesEXT(
6042 VkDevice device,
6043 VkExternalMemoryHandleTypeFlagBits handleType,
6044 const void* pHostPointer,
6045 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
6046{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006047 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006048 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006049 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006050 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006051 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
6052}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006053static VkResult dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT(
6054 VkDevice device,
6055 VkExternalMemoryHandleTypeFlagBits handleType,
6056 const void* pHostPointer,
6057 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
6058{
6059 auto resources = ResourceTracker::get();
6060 if (!resources->hasDeviceExtension(device, "VK_EXT_external_memory_host"))
6061 {
6062 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostPointerPropertiesEXT", "VK_EXT_external_memory_host");
6063 }
6064 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006065 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006066 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006067 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006068 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
6069}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006070#endif
6071#ifdef VK_AMD_buffer_marker
6072static void entry_vkCmdWriteBufferMarkerAMD(
6073 VkCommandBuffer commandBuffer,
6074 VkPipelineStageFlagBits pipelineStage,
6075 VkBuffer dstBuffer,
6076 VkDeviceSize dstOffset,
6077 uint32_t marker)
6078{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006079 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006080 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006081 vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006082}
6083#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006084#ifdef VK_AMD_pipeline_compiler_control
6085#endif
6086#ifdef VK_EXT_calibrated_timestamps
6087static VkResult entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
6088 VkPhysicalDevice physicalDevice,
6089 uint32_t* pTimeDomainCount,
6090 VkTimeDomainEXT* pTimeDomains)
6091{
6092 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCalibrateableTimeDomainsEXT");
6093 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6094 VkResult vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return = (VkResult)0;
6095 vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return = vkEnc->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, true /* do lock */);
6096 return vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return;
6097}
6098static VkResult entry_vkGetCalibratedTimestampsEXT(
6099 VkDevice device,
6100 uint32_t timestampCount,
6101 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
6102 uint64_t* pTimestamps,
6103 uint64_t* pMaxDeviation)
6104{
6105 AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
6106 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6107 VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
6108 vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
6109 return vkGetCalibratedTimestampsEXT_VkResult_return;
6110}
6111static VkResult dynCheck_entry_vkGetCalibratedTimestampsEXT(
6112 VkDevice device,
6113 uint32_t timestampCount,
6114 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
6115 uint64_t* pTimestamps,
6116 uint64_t* pMaxDeviation)
6117{
6118 auto resources = ResourceTracker::get();
6119 if (!resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps"))
6120 {
6121 sOnInvalidDynamicallyCheckedCall("vkGetCalibratedTimestampsEXT", "VK_EXT_calibrated_timestamps");
6122 }
6123 AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
6124 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6125 VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
6126 vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
6127 return vkGetCalibratedTimestampsEXT_VkResult_return;
6128}
6129#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006130#ifdef VK_AMD_shader_core_properties
6131#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006132#ifdef VK_AMD_memory_overallocation_behavior
6133#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006134#ifdef VK_EXT_vertex_attribute_divisor
6135#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006136#ifdef VK_GGP_frame_token
6137#endif
6138#ifdef VK_EXT_pipeline_creation_feedback
6139#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006140#ifdef VK_NV_shader_subgroup_partitioned
6141#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006142#ifdef VK_NV_compute_shader_derivatives
6143#endif
6144#ifdef VK_NV_mesh_shader
6145static void entry_vkCmdDrawMeshTasksNV(
6146 VkCommandBuffer commandBuffer,
6147 uint32_t taskCount,
6148 uint32_t firstTask)
6149{
6150 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksNV");
6151 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6152 vkEnc->vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, true /* do lock */);
6153}
6154static void entry_vkCmdDrawMeshTasksIndirectNV(
6155 VkCommandBuffer commandBuffer,
6156 VkBuffer buffer,
6157 VkDeviceSize offset,
6158 uint32_t drawCount,
6159 uint32_t stride)
6160{
6161 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectNV");
6162 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6163 vkEnc->vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
6164}
6165static void entry_vkCmdDrawMeshTasksIndirectCountNV(
6166 VkCommandBuffer commandBuffer,
6167 VkBuffer buffer,
6168 VkDeviceSize offset,
6169 VkBuffer countBuffer,
6170 VkDeviceSize countBufferOffset,
6171 uint32_t maxDrawCount,
6172 uint32_t stride)
6173{
6174 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectCountNV");
6175 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6176 vkEnc->vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
6177}
6178#endif
6179#ifdef VK_NV_fragment_shader_barycentric
6180#endif
6181#ifdef VK_NV_shader_image_footprint
6182#endif
6183#ifdef VK_NV_scissor_exclusive
6184static void entry_vkCmdSetExclusiveScissorNV(
6185 VkCommandBuffer commandBuffer,
6186 uint32_t firstExclusiveScissor,
6187 uint32_t exclusiveScissorCount,
6188 const VkRect2D* pExclusiveScissors)
6189{
6190 AEMU_SCOPED_TRACE("vkCmdSetExclusiveScissorNV");
6191 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6192 vkEnc->vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, true /* do lock */);
6193}
6194#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006195#ifdef VK_NV_device_diagnostic_checkpoints
6196static void entry_vkCmdSetCheckpointNV(
6197 VkCommandBuffer commandBuffer,
6198 const void* pCheckpointMarker)
6199{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006200 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006201 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006202 vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006203}
6204static void entry_vkGetQueueCheckpointDataNV(
6205 VkQueue queue,
6206 uint32_t* pCheckpointDataCount,
6207 VkCheckpointDataNV* pCheckpointData)
6208{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006209 AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006210 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006211 vkEnc->vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006212}
6213#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006214#ifdef VK_INTEL_shader_integer_functions2
6215#endif
6216#ifdef VK_INTEL_performance_query
6217static VkResult entry_vkInitializePerformanceApiINTEL(
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006218 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08006219 const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006220{
Yilong Lia8d45f12021-02-07 02:30:21 -08006221 AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006222 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Yilong Lia8d45f12021-02-07 02:30:21 -08006223 VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
6224 vkInitializePerformanceApiINTEL_VkResult_return = vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
6225 return vkInitializePerformanceApiINTEL_VkResult_return;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006226}
Yilong Lia8d45f12021-02-07 02:30:21 -08006227static VkResult dynCheck_entry_vkInitializePerformanceApiINTEL(
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006228 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08006229 const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006230{
6231 auto resources = ResourceTracker::get();
Yilong Lia8d45f12021-02-07 02:30:21 -08006232 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006233 {
Yilong Lia8d45f12021-02-07 02:30:21 -08006234 sOnInvalidDynamicallyCheckedCall("vkInitializePerformanceApiINTEL", "VK_INTEL_performance_query");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006235 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006236 AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006237 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Yilong Lia8d45f12021-02-07 02:30:21 -08006238 VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
6239 vkInitializePerformanceApiINTEL_VkResult_return = vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
6240 return vkInitializePerformanceApiINTEL_VkResult_return;
6241}
6242static void entry_vkUninitializePerformanceApiINTEL(
6243 VkDevice device)
6244{
6245 AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
6246 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6247 vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
6248}
6249static void dynCheck_entry_vkUninitializePerformanceApiINTEL(
6250 VkDevice device)
6251{
6252 auto resources = ResourceTracker::get();
6253 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6254 {
6255 sOnInvalidDynamicallyCheckedCall("vkUninitializePerformanceApiINTEL", "VK_INTEL_performance_query");
6256 }
6257 AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
6258 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6259 vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
6260}
6261static VkResult entry_vkCmdSetPerformanceMarkerINTEL(
6262 VkCommandBuffer commandBuffer,
6263 const VkPerformanceMarkerInfoINTEL* pMarkerInfo)
6264{
6265 AEMU_SCOPED_TRACE("vkCmdSetPerformanceMarkerINTEL");
6266 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6267 VkResult vkCmdSetPerformanceMarkerINTEL_VkResult_return = (VkResult)0;
6268 vkCmdSetPerformanceMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
6269 return vkCmdSetPerformanceMarkerINTEL_VkResult_return;
6270}
6271static VkResult entry_vkCmdSetPerformanceStreamMarkerINTEL(
6272 VkCommandBuffer commandBuffer,
6273 const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo)
6274{
6275 AEMU_SCOPED_TRACE("vkCmdSetPerformanceStreamMarkerINTEL");
6276 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6277 VkResult vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = (VkResult)0;
6278 vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
6279 return vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return;
6280}
6281static VkResult entry_vkCmdSetPerformanceOverrideINTEL(
6282 VkCommandBuffer commandBuffer,
6283 const VkPerformanceOverrideInfoINTEL* pOverrideInfo)
6284{
6285 AEMU_SCOPED_TRACE("vkCmdSetPerformanceOverrideINTEL");
6286 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6287 VkResult vkCmdSetPerformanceOverrideINTEL_VkResult_return = (VkResult)0;
6288 vkCmdSetPerformanceOverrideINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, true /* do lock */);
6289 return vkCmdSetPerformanceOverrideINTEL_VkResult_return;
6290}
6291static VkResult entry_vkAcquirePerformanceConfigurationINTEL(
6292 VkDevice device,
6293 const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
6294 VkPerformanceConfigurationINTEL* pConfiguration)
6295{
6296 AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
6297 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6298 VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6299 vkAcquirePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, true /* do lock */);
6300 return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
6301}
6302static VkResult dynCheck_entry_vkAcquirePerformanceConfigurationINTEL(
6303 VkDevice device,
6304 const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
6305 VkPerformanceConfigurationINTEL* pConfiguration)
6306{
6307 auto resources = ResourceTracker::get();
6308 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6309 {
6310 sOnInvalidDynamicallyCheckedCall("vkAcquirePerformanceConfigurationINTEL", "VK_INTEL_performance_query");
6311 }
6312 AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
6313 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6314 VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6315 vkAcquirePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, true /* do lock */);
6316 return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
6317}
6318static VkResult entry_vkReleasePerformanceConfigurationINTEL(
6319 VkDevice device,
6320 VkPerformanceConfigurationINTEL configuration)
6321{
6322 AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
6323 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6324 VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6325 vkReleasePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
6326 return vkReleasePerformanceConfigurationINTEL_VkResult_return;
6327}
6328static VkResult dynCheck_entry_vkReleasePerformanceConfigurationINTEL(
6329 VkDevice device,
6330 VkPerformanceConfigurationINTEL configuration)
6331{
6332 auto resources = ResourceTracker::get();
6333 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6334 {
6335 sOnInvalidDynamicallyCheckedCall("vkReleasePerformanceConfigurationINTEL", "VK_INTEL_performance_query");
6336 }
6337 AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
6338 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6339 VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6340 vkReleasePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
6341 return vkReleasePerformanceConfigurationINTEL_VkResult_return;
6342}
6343static VkResult entry_vkQueueSetPerformanceConfigurationINTEL(
6344 VkQueue queue,
6345 VkPerformanceConfigurationINTEL configuration)
6346{
6347 AEMU_SCOPED_TRACE("vkQueueSetPerformanceConfigurationINTEL");
6348 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
6349 VkResult vkQueueSetPerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6350 vkQueueSetPerformanceConfigurationINTEL_VkResult_return = vkEnc->vkQueueSetPerformanceConfigurationINTEL(queue, configuration, true /* do lock */);
6351 return vkQueueSetPerformanceConfigurationINTEL_VkResult_return;
6352}
6353static VkResult entry_vkGetPerformanceParameterINTEL(
6354 VkDevice device,
6355 VkPerformanceParameterTypeINTEL parameter,
6356 VkPerformanceValueINTEL* pValue)
6357{
6358 AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
6359 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6360 VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
6361 vkGetPerformanceParameterINTEL_VkResult_return = vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
6362 return vkGetPerformanceParameterINTEL_VkResult_return;
6363}
6364static VkResult dynCheck_entry_vkGetPerformanceParameterINTEL(
6365 VkDevice device,
6366 VkPerformanceParameterTypeINTEL parameter,
6367 VkPerformanceValueINTEL* pValue)
6368{
6369 auto resources = ResourceTracker::get();
6370 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6371 {
6372 sOnInvalidDynamicallyCheckedCall("vkGetPerformanceParameterINTEL", "VK_INTEL_performance_query");
6373 }
6374 AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
6375 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6376 VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
6377 vkGetPerformanceParameterINTEL_VkResult_return = vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
6378 return vkGetPerformanceParameterINTEL_VkResult_return;
6379}
6380#endif
6381#ifdef VK_EXT_pci_bus_info
6382#endif
6383#ifdef VK_AMD_display_native_hdr
6384static void entry_vkSetLocalDimmingAMD(
6385 VkDevice device,
6386 VkSwapchainKHR swapChain,
6387 VkBool32 localDimmingEnable)
6388{
6389 AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
6390 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6391 vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
6392}
6393static void dynCheck_entry_vkSetLocalDimmingAMD(
6394 VkDevice device,
6395 VkSwapchainKHR swapChain,
6396 VkBool32 localDimmingEnable)
6397{
6398 auto resources = ResourceTracker::get();
6399 if (!resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr"))
6400 {
6401 sOnInvalidDynamicallyCheckedCall("vkSetLocalDimmingAMD", "VK_AMD_display_native_hdr");
6402 }
6403 AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
6404 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6405 vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
6406}
6407#endif
6408#ifdef VK_FUCHSIA_imagepipe_surface
6409static VkResult entry_vkCreateImagePipeSurfaceFUCHSIA(
6410 VkInstance instance,
6411 const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
6412 const VkAllocationCallbacks* pAllocator,
6413 VkSurfaceKHR* pSurface)
6414{
6415 AEMU_SCOPED_TRACE("vkCreateImagePipeSurfaceFUCHSIA");
6416 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6417 VkResult vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = (VkResult)0;
6418 vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = vkEnc->vkCreateImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
6419 return vkCreateImagePipeSurfaceFUCHSIA_VkResult_return;
6420}
6421#endif
6422#ifdef VK_EXT_metal_surface
6423static VkResult entry_vkCreateMetalSurfaceEXT(
6424 VkInstance instance,
6425 const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
6426 const VkAllocationCallbacks* pAllocator,
6427 VkSurfaceKHR* pSurface)
6428{
6429 AEMU_SCOPED_TRACE("vkCreateMetalSurfaceEXT");
6430 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6431 VkResult vkCreateMetalSurfaceEXT_VkResult_return = (VkResult)0;
6432 vkCreateMetalSurfaceEXT_VkResult_return = vkEnc->vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
6433 return vkCreateMetalSurfaceEXT_VkResult_return;
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006434}
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006435#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006436#ifdef VK_GOOGLE_color_buffer
6437static VkResult entry_vkRegisterImageColorBufferGOOGLE(
6438 VkDevice device,
6439 VkImage image,
6440 uint32_t colorBuffer)
6441{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006442 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006443 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006444 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006445 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006446 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
6447}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006448static VkResult dynCheck_entry_vkRegisterImageColorBufferGOOGLE(
6449 VkDevice device,
6450 VkImage image,
6451 uint32_t colorBuffer)
6452{
6453 auto resources = ResourceTracker::get();
6454 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer"))
6455 {
6456 sOnInvalidDynamicallyCheckedCall("vkRegisterImageColorBufferGOOGLE", "VK_GOOGLE_color_buffer");
6457 }
6458 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006459 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006460 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006461 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006462 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
6463}
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006464static VkResult entry_vkRegisterBufferColorBufferGOOGLE(
6465 VkDevice device,
6466 VkBuffer buffer,
6467 uint32_t colorBuffer)
6468{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006469 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006470 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006471 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006472 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006473 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
6474}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006475static VkResult dynCheck_entry_vkRegisterBufferColorBufferGOOGLE(
6476 VkDevice device,
6477 VkBuffer buffer,
6478 uint32_t colorBuffer)
6479{
6480 auto resources = ResourceTracker::get();
6481 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer"))
6482 {
6483 sOnInvalidDynamicallyCheckedCall("vkRegisterBufferColorBufferGOOGLE", "VK_GOOGLE_color_buffer");
6484 }
6485 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006486 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006487 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006488 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006489 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
6490}
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006491#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006492#ifdef VK_EXT_scalar_block_layout
6493#endif
6494#ifdef VK_GOOGLE_hlsl_functionality1
6495#endif
6496#ifdef VK_GOOGLE_decorate_string
6497#endif
6498#ifdef VK_EXT_subgroup_size_control
6499#endif
6500#ifdef VK_AMD_shader_core_properties2
6501#endif
6502#ifdef VK_AMD_device_coherent_memory
6503#endif
6504#ifdef VK_EXT_shader_image_atomic_int64
6505#endif
6506#ifdef VK_EXT_memory_budget
6507#endif
6508#ifdef VK_EXT_memory_priority
6509#endif
6510#ifdef VK_NV_dedicated_allocation_image_aliasing
6511#endif
6512#ifdef VK_EXT_buffer_device_address
6513static VkDeviceAddress entry_vkGetBufferDeviceAddressEXT(
6514 VkDevice device,
6515 const VkBufferDeviceAddressInfo* pInfo)
6516{
6517 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
6518 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6519 VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
6520 vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
6521 return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
6522}
6523static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressEXT(
6524 VkDevice device,
6525 const VkBufferDeviceAddressInfo* pInfo)
6526{
6527 auto resources = ResourceTracker::get();
6528 if (!resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address"))
6529 {
6530 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressEXT", "VK_EXT_buffer_device_address");
6531 }
6532 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
6533 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6534 VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
6535 vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
6536 return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
6537}
6538#endif
6539#ifdef VK_EXT_tooling_info
6540static VkResult entry_vkGetPhysicalDeviceToolPropertiesEXT(
6541 VkPhysicalDevice physicalDevice,
6542 uint32_t* pToolCount,
6543 VkPhysicalDeviceToolPropertiesEXT* pToolProperties)
6544{
6545 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceToolPropertiesEXT");
6546 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6547 VkResult vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = (VkResult)0;
6548 vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = vkEnc->vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, true /* do lock */);
6549 return vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return;
6550}
6551#endif
6552#ifdef VK_EXT_separate_stencil_usage
6553#endif
6554#ifdef VK_EXT_validation_features
6555#endif
6556#ifdef VK_NV_cooperative_matrix
6557static VkResult entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
6558 VkPhysicalDevice physicalDevice,
6559 uint32_t* pPropertyCount,
6560 VkCooperativeMatrixPropertiesNV* pProperties)
6561{
6562 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
6563 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6564 VkResult vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return = (VkResult)0;
6565 vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
6566 return vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return;
6567}
6568#endif
6569#ifdef VK_NV_coverage_reduction_mode
6570static VkResult entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
6571 VkPhysicalDevice physicalDevice,
6572 uint32_t* pCombinationCount,
6573 VkFramebufferMixedSamplesCombinationNV* pCombinations)
6574{
6575 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
6576 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6577 VkResult vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return = (VkResult)0;
6578 vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return = vkEnc->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, true /* do lock */);
6579 return vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return;
6580}
6581#endif
6582#ifdef VK_EXT_fragment_shader_interlock
6583#endif
6584#ifdef VK_EXT_ycbcr_image_arrays
6585#endif
6586#ifdef VK_EXT_full_screen_exclusive
6587static VkResult entry_vkGetPhysicalDeviceSurfacePresentModes2EXT(
6588 VkPhysicalDevice physicalDevice,
6589 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
6590 uint32_t* pPresentModeCount,
6591 VkPresentModeKHR* pPresentModes)
6592{
6593 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModes2EXT");
6594 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6595 VkResult vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
6596 vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes, true /* do lock */);
6597 return vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return;
6598}
6599static VkResult entry_vkAcquireFullScreenExclusiveModeEXT(
6600 VkDevice device,
6601 VkSwapchainKHR swapchain)
6602{
6603 AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
6604 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6605 VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6606 vkAcquireFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6607 return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
6608}
6609static VkResult dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT(
6610 VkDevice device,
6611 VkSwapchainKHR swapchain)
6612{
6613 auto resources = ResourceTracker::get();
6614 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
6615 {
6616 sOnInvalidDynamicallyCheckedCall("vkAcquireFullScreenExclusiveModeEXT", "VK_EXT_full_screen_exclusive");
6617 }
6618 AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
6619 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6620 VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6621 vkAcquireFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6622 return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
6623}
6624static VkResult entry_vkReleaseFullScreenExclusiveModeEXT(
6625 VkDevice device,
6626 VkSwapchainKHR swapchain)
6627{
6628 AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
6629 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6630 VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6631 vkReleaseFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6632 return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
6633}
6634static VkResult dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT(
6635 VkDevice device,
6636 VkSwapchainKHR swapchain)
6637{
6638 auto resources = ResourceTracker::get();
6639 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
6640 {
6641 sOnInvalidDynamicallyCheckedCall("vkReleaseFullScreenExclusiveModeEXT", "VK_EXT_full_screen_exclusive");
6642 }
6643 AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
6644 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6645 VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6646 vkReleaseFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6647 return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
6648}
6649static VkResult entry_vkGetDeviceGroupSurfacePresentModes2EXT(
6650 VkDevice device,
6651 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
6652 VkDeviceGroupPresentModeFlagsKHR* pModes)
6653{
6654 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
6655 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6656 VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
6657 vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, true /* do lock */);
6658 return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
6659}
6660static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT(
6661 VkDevice device,
6662 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
6663 VkDeviceGroupPresentModeFlagsKHR* pModes)
6664{
6665 auto resources = ResourceTracker::get();
6666 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
6667 {
6668 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModes2EXT", "VK_EXT_full_screen_exclusive");
6669 }
6670 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
6671 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6672 VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
6673 vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, true /* do lock */);
6674 return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
6675}
6676#endif
6677#ifdef VK_EXT_headless_surface
6678static VkResult entry_vkCreateHeadlessSurfaceEXT(
6679 VkInstance instance,
6680 const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo,
6681 const VkAllocationCallbacks* pAllocator,
6682 VkSurfaceKHR* pSurface)
6683{
6684 AEMU_SCOPED_TRACE("vkCreateHeadlessSurfaceEXT");
6685 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6686 VkResult vkCreateHeadlessSurfaceEXT_VkResult_return = (VkResult)0;
6687 vkCreateHeadlessSurfaceEXT_VkResult_return = vkEnc->vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
6688 return vkCreateHeadlessSurfaceEXT_VkResult_return;
6689}
6690#endif
6691#ifdef VK_EXT_line_rasterization
6692static void entry_vkCmdSetLineStippleEXT(
6693 VkCommandBuffer commandBuffer,
6694 uint32_t lineStippleFactor,
6695 uint16_t lineStipplePattern)
6696{
6697 AEMU_SCOPED_TRACE("vkCmdSetLineStippleEXT");
6698 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6699 vkEnc->vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, true /* do lock */);
6700}
6701#endif
6702#ifdef VK_EXT_shader_atomic_float
6703#endif
6704#ifdef VK_EXT_host_query_reset
6705static void entry_vkResetQueryPoolEXT(
6706 VkDevice device,
6707 VkQueryPool queryPool,
6708 uint32_t firstQuery,
6709 uint32_t queryCount)
6710{
6711 AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
6712 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6713 vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
6714}
6715static void dynCheck_entry_vkResetQueryPoolEXT(
6716 VkDevice device,
6717 VkQueryPool queryPool,
6718 uint32_t firstQuery,
6719 uint32_t queryCount)
6720{
6721 auto resources = ResourceTracker::get();
6722 if (!resources->hasDeviceExtension(device, "VK_EXT_host_query_reset"))
6723 {
6724 sOnInvalidDynamicallyCheckedCall("vkResetQueryPoolEXT", "VK_EXT_host_query_reset");
6725 }
6726 AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
6727 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6728 vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
6729}
6730#endif
6731#ifdef VK_EXT_index_type_uint8
6732#endif
6733#ifdef VK_EXT_extended_dynamic_state
6734static void entry_vkCmdSetCullModeEXT(
6735 VkCommandBuffer commandBuffer,
6736 VkCullModeFlags cullMode)
6737{
6738 AEMU_SCOPED_TRACE("vkCmdSetCullModeEXT");
6739 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6740 vkEnc->vkCmdSetCullModeEXT(commandBuffer, cullMode, true /* do lock */);
6741}
6742static void entry_vkCmdSetFrontFaceEXT(
6743 VkCommandBuffer commandBuffer,
6744 VkFrontFace frontFace)
6745{
6746 AEMU_SCOPED_TRACE("vkCmdSetFrontFaceEXT");
6747 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6748 vkEnc->vkCmdSetFrontFaceEXT(commandBuffer, frontFace, true /* do lock */);
6749}
6750static void entry_vkCmdSetPrimitiveTopologyEXT(
6751 VkCommandBuffer commandBuffer,
6752 VkPrimitiveTopology primitiveTopology)
6753{
6754 AEMU_SCOPED_TRACE("vkCmdSetPrimitiveTopologyEXT");
6755 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6756 vkEnc->vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, true /* do lock */);
6757}
6758static void entry_vkCmdSetViewportWithCountEXT(
6759 VkCommandBuffer commandBuffer,
6760 uint32_t viewportCount,
6761 const VkViewport* pViewports)
6762{
6763 AEMU_SCOPED_TRACE("vkCmdSetViewportWithCountEXT");
6764 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6765 vkEnc->vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, true /* do lock */);
6766}
6767static void entry_vkCmdSetScissorWithCountEXT(
6768 VkCommandBuffer commandBuffer,
6769 uint32_t scissorCount,
6770 const VkRect2D* pScissors)
6771{
6772 AEMU_SCOPED_TRACE("vkCmdSetScissorWithCountEXT");
6773 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6774 vkEnc->vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, true /* do lock */);
6775}
6776static void entry_vkCmdBindVertexBuffers2EXT(
6777 VkCommandBuffer commandBuffer,
6778 uint32_t firstBinding,
6779 uint32_t bindingCount,
6780 const VkBuffer* pBuffers,
6781 const VkDeviceSize* pOffsets,
6782 const VkDeviceSize* pSizes,
6783 const VkDeviceSize* pStrides)
6784{
6785 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers2EXT");
6786 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6787 vkEnc->vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, true /* do lock */);
6788}
6789static void entry_vkCmdSetDepthTestEnableEXT(
6790 VkCommandBuffer commandBuffer,
6791 VkBool32 depthTestEnable)
6792{
6793 AEMU_SCOPED_TRACE("vkCmdSetDepthTestEnableEXT");
6794 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6795 vkEnc->vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, true /* do lock */);
6796}
6797static void entry_vkCmdSetDepthWriteEnableEXT(
6798 VkCommandBuffer commandBuffer,
6799 VkBool32 depthWriteEnable)
6800{
6801 AEMU_SCOPED_TRACE("vkCmdSetDepthWriteEnableEXT");
6802 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6803 vkEnc->vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, true /* do lock */);
6804}
6805static void entry_vkCmdSetDepthCompareOpEXT(
6806 VkCommandBuffer commandBuffer,
6807 VkCompareOp depthCompareOp)
6808{
6809 AEMU_SCOPED_TRACE("vkCmdSetDepthCompareOpEXT");
6810 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6811 vkEnc->vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, true /* do lock */);
6812}
6813static void entry_vkCmdSetDepthBoundsTestEnableEXT(
6814 VkCommandBuffer commandBuffer,
6815 VkBool32 depthBoundsTestEnable)
6816{
6817 AEMU_SCOPED_TRACE("vkCmdSetDepthBoundsTestEnableEXT");
6818 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6819 vkEnc->vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, true /* do lock */);
6820}
6821static void entry_vkCmdSetStencilTestEnableEXT(
6822 VkCommandBuffer commandBuffer,
6823 VkBool32 stencilTestEnable)
6824{
6825 AEMU_SCOPED_TRACE("vkCmdSetStencilTestEnableEXT");
6826 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6827 vkEnc->vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, true /* do lock */);
6828}
6829static void entry_vkCmdSetStencilOpEXT(
6830 VkCommandBuffer commandBuffer,
6831 VkStencilFaceFlags faceMask,
6832 VkStencilOp failOp,
6833 VkStencilOp passOp,
6834 VkStencilOp depthFailOp,
6835 VkCompareOp compareOp)
6836{
6837 AEMU_SCOPED_TRACE("vkCmdSetStencilOpEXT");
6838 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6839 vkEnc->vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, true /* do lock */);
6840}
6841#endif
6842#ifdef VK_EXT_shader_demote_to_helper_invocation
6843#endif
6844#ifdef VK_NV_device_generated_commands
6845static void entry_vkGetGeneratedCommandsMemoryRequirementsNV(
6846 VkDevice device,
6847 const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
6848 VkMemoryRequirements2* pMemoryRequirements)
6849{
6850 AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
6851 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6852 vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
6853}
6854static void dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV(
6855 VkDevice device,
6856 const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
6857 VkMemoryRequirements2* pMemoryRequirements)
6858{
6859 auto resources = ResourceTracker::get();
6860 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
6861 {
6862 sOnInvalidDynamicallyCheckedCall("vkGetGeneratedCommandsMemoryRequirementsNV", "VK_NV_device_generated_commands");
6863 }
6864 AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
6865 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6866 vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
6867}
6868static void entry_vkCmdPreprocessGeneratedCommandsNV(
6869 VkCommandBuffer commandBuffer,
6870 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
6871{
6872 AEMU_SCOPED_TRACE("vkCmdPreprocessGeneratedCommandsNV");
6873 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6874 vkEnc->vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, true /* do lock */);
6875}
6876static void entry_vkCmdExecuteGeneratedCommandsNV(
6877 VkCommandBuffer commandBuffer,
6878 VkBool32 isPreprocessed,
6879 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
6880{
6881 AEMU_SCOPED_TRACE("vkCmdExecuteGeneratedCommandsNV");
6882 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6883 vkEnc->vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, true /* do lock */);
6884}
6885static void entry_vkCmdBindPipelineShaderGroupNV(
6886 VkCommandBuffer commandBuffer,
6887 VkPipelineBindPoint pipelineBindPoint,
6888 VkPipeline pipeline,
6889 uint32_t groupIndex)
6890{
6891 AEMU_SCOPED_TRACE("vkCmdBindPipelineShaderGroupNV");
6892 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6893 vkEnc->vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, true /* do lock */);
6894}
6895static VkResult entry_vkCreateIndirectCommandsLayoutNV(
6896 VkDevice device,
6897 const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
6898 const VkAllocationCallbacks* pAllocator,
6899 VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
6900{
6901 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
6902 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6903 VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
6904 vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
6905 return vkCreateIndirectCommandsLayoutNV_VkResult_return;
6906}
6907static VkResult dynCheck_entry_vkCreateIndirectCommandsLayoutNV(
6908 VkDevice device,
6909 const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
6910 const VkAllocationCallbacks* pAllocator,
6911 VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
6912{
6913 auto resources = ResourceTracker::get();
6914 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
6915 {
6916 sOnInvalidDynamicallyCheckedCall("vkCreateIndirectCommandsLayoutNV", "VK_NV_device_generated_commands");
6917 }
6918 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
6919 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6920 VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
6921 vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
6922 return vkCreateIndirectCommandsLayoutNV_VkResult_return;
6923}
6924static void entry_vkDestroyIndirectCommandsLayoutNV(
6925 VkDevice device,
6926 VkIndirectCommandsLayoutNV indirectCommandsLayout,
6927 const VkAllocationCallbacks* pAllocator)
6928{
6929 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
6930 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6931 vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, true /* do lock */);
6932}
6933static void dynCheck_entry_vkDestroyIndirectCommandsLayoutNV(
6934 VkDevice device,
6935 VkIndirectCommandsLayoutNV indirectCommandsLayout,
6936 const VkAllocationCallbacks* pAllocator)
6937{
6938 auto resources = ResourceTracker::get();
6939 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
6940 {
6941 sOnInvalidDynamicallyCheckedCall("vkDestroyIndirectCommandsLayoutNV", "VK_NV_device_generated_commands");
6942 }
6943 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
6944 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6945 vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, true /* do lock */);
6946}
6947#endif
6948#ifdef VK_EXT_texel_buffer_alignment
6949#endif
6950#ifdef VK_QCOM_render_pass_transform
6951#endif
6952#ifdef VK_EXT_device_memory_report
6953#endif
6954#ifdef VK_EXT_robustness2
6955#endif
6956#ifdef VK_EXT_custom_border_color
6957#endif
6958#ifdef VK_GOOGLE_user_type
6959#endif
6960#ifdef VK_EXT_private_data
6961static VkResult entry_vkCreatePrivateDataSlotEXT(
6962 VkDevice device,
6963 const VkPrivateDataSlotCreateInfoEXT* pCreateInfo,
6964 const VkAllocationCallbacks* pAllocator,
6965 VkPrivateDataSlotEXT* pPrivateDataSlot)
6966{
6967 AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
6968 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6969 VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
6970 vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
6971 return vkCreatePrivateDataSlotEXT_VkResult_return;
6972}
6973static VkResult dynCheck_entry_vkCreatePrivateDataSlotEXT(
6974 VkDevice device,
6975 const VkPrivateDataSlotCreateInfoEXT* pCreateInfo,
6976 const VkAllocationCallbacks* pAllocator,
6977 VkPrivateDataSlotEXT* pPrivateDataSlot)
6978{
6979 auto resources = ResourceTracker::get();
6980 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
6981 {
6982 sOnInvalidDynamicallyCheckedCall("vkCreatePrivateDataSlotEXT", "VK_EXT_private_data");
6983 }
6984 AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
6985 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6986 VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
6987 vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
6988 return vkCreatePrivateDataSlotEXT_VkResult_return;
6989}
6990static void entry_vkDestroyPrivateDataSlotEXT(
6991 VkDevice device,
6992 VkPrivateDataSlotEXT privateDataSlot,
6993 const VkAllocationCallbacks* pAllocator)
6994{
6995 AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
6996 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6997 vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
6998}
6999static void dynCheck_entry_vkDestroyPrivateDataSlotEXT(
7000 VkDevice device,
7001 VkPrivateDataSlotEXT privateDataSlot,
7002 const VkAllocationCallbacks* pAllocator)
7003{
7004 auto resources = ResourceTracker::get();
7005 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
7006 {
7007 sOnInvalidDynamicallyCheckedCall("vkDestroyPrivateDataSlotEXT", "VK_EXT_private_data");
7008 }
7009 AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
7010 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7011 vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
7012}
7013static VkResult entry_vkSetPrivateDataEXT(
7014 VkDevice device,
7015 VkObjectType objectType,
7016 uint64_t objectHandle,
7017 VkPrivateDataSlotEXT privateDataSlot,
7018 uint64_t data)
7019{
7020 AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
7021 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7022 VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
7023 vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
7024 return vkSetPrivateDataEXT_VkResult_return;
7025}
7026static VkResult dynCheck_entry_vkSetPrivateDataEXT(
7027 VkDevice device,
7028 VkObjectType objectType,
7029 uint64_t objectHandle,
7030 VkPrivateDataSlotEXT privateDataSlot,
7031 uint64_t data)
7032{
7033 auto resources = ResourceTracker::get();
7034 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
7035 {
7036 sOnInvalidDynamicallyCheckedCall("vkSetPrivateDataEXT", "VK_EXT_private_data");
7037 }
7038 AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
7039 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7040 VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
7041 vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
7042 return vkSetPrivateDataEXT_VkResult_return;
7043}
7044static void entry_vkGetPrivateDataEXT(
7045 VkDevice device,
7046 VkObjectType objectType,
7047 uint64_t objectHandle,
7048 VkPrivateDataSlotEXT privateDataSlot,
7049 uint64_t* pData)
7050{
7051 AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
7052 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7053 vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, true /* do lock */);
7054}
7055static void dynCheck_entry_vkGetPrivateDataEXT(
7056 VkDevice device,
7057 VkObjectType objectType,
7058 uint64_t objectHandle,
7059 VkPrivateDataSlotEXT privateDataSlot,
7060 uint64_t* pData)
7061{
7062 auto resources = ResourceTracker::get();
7063 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
7064 {
7065 sOnInvalidDynamicallyCheckedCall("vkGetPrivateDataEXT", "VK_EXT_private_data");
7066 }
7067 AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
7068 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7069 vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, true /* do lock */);
7070}
7071#endif
7072#ifdef VK_EXT_pipeline_creation_cache_control
7073#endif
7074#ifdef VK_NV_device_diagnostics_config
7075#endif
7076#ifdef VK_QCOM_render_pass_store_ops
7077#endif
7078#ifdef VK_NV_fragment_shading_rate_enums
7079static void entry_vkCmdSetFragmentShadingRateEnumNV(
7080 VkCommandBuffer commandBuffer,
7081 VkFragmentShadingRateNV shadingRate,
7082 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
7083{
7084 AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateEnumNV");
7085 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7086 vkEnc->vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, true /* do lock */);
7087}
7088#endif
7089#ifdef VK_EXT_fragment_density_map2
7090#endif
7091#ifdef VK_QCOM_rotated_copy_commands
7092#endif
7093#ifdef VK_EXT_image_robustness
7094#endif
7095#ifdef VK_EXT_4444_formats
7096#endif
7097#ifdef VK_EXT_directfb_surface
7098static VkResult entry_vkCreateDirectFBSurfaceEXT(
7099 VkInstance instance,
7100 const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo,
7101 const VkAllocationCallbacks* pAllocator,
7102 VkSurfaceKHR* pSurface)
7103{
7104 AEMU_SCOPED_TRACE("vkCreateDirectFBSurfaceEXT");
7105 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7106 VkResult vkCreateDirectFBSurfaceEXT_VkResult_return = (VkResult)0;
7107 vkCreateDirectFBSurfaceEXT_VkResult_return = vkEnc->vkCreateDirectFBSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
7108 return vkCreateDirectFBSurfaceEXT_VkResult_return;
7109}
7110static VkBool32 entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT(
7111 VkPhysicalDevice physicalDevice,
7112 uint32_t queueFamilyIndex,
7113 IDirectFB* dfb)
7114{
7115 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDirectFBPresentationSupportEXT");
7116 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7117 VkBool32 vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return = (VkBool32)0;
7118 vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return = vkEnc->vkGetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice, queueFamilyIndex, dfb, true /* do lock */);
7119 return vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return;
7120}
7121#endif
Yilong Li71c43c52021-02-10 02:50:43 -08007122#ifdef VK_GOOGLE_gfxstream
Yilong Lia8d45f12021-02-07 02:30:21 -08007123static VkResult entry_vkMapMemoryIntoAddressSpaceGOOGLE(
7124 VkDevice device,
7125 VkDeviceMemory memory,
7126 uint64_t* pAddress)
7127{
7128 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
7129 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7130 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
7131 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
7132 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
7133}
7134static VkResult dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE(
7135 VkDevice device,
7136 VkDeviceMemory memory,
7137 uint64_t* pAddress)
7138{
7139 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007140 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Yilong Lia8d45f12021-02-07 02:30:21 -08007141 {
Yilong Li71c43c52021-02-10 02:50:43 -08007142 sOnInvalidDynamicallyCheckedCall("vkMapMemoryIntoAddressSpaceGOOGLE", "VK_GOOGLE_gfxstream");
Yilong Lia8d45f12021-02-07 02:30:21 -08007143 }
7144 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
7145 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7146 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
7147 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
7148 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
7149}
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07007150static void entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
7151 VkDevice device,
7152 VkDescriptorSet descriptorSet,
7153 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
7154 uint32_t imageInfoCount,
7155 uint32_t bufferInfoCount,
7156 uint32_t bufferViewCount,
7157 const uint32_t* pImageInfoEntryIndices,
7158 const uint32_t* pBufferInfoEntryIndices,
7159 const uint32_t* pBufferViewEntryIndices,
7160 const VkDescriptorImageInfo* pImageInfos,
7161 const VkDescriptorBufferInfo* pBufferInfos,
7162 const VkBufferView* pBufferViews)
7163{
7164 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007165 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007166 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07007167}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007168static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
7169 VkDevice device,
7170 VkDescriptorSet descriptorSet,
7171 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
7172 uint32_t imageInfoCount,
7173 uint32_t bufferInfoCount,
7174 uint32_t bufferViewCount,
7175 const uint32_t* pImageInfoEntryIndices,
7176 const uint32_t* pBufferInfoEntryIndices,
7177 const uint32_t* pBufferViewEntryIndices,
7178 const VkDescriptorImageInfo* pImageInfos,
7179 const VkDescriptorBufferInfo* pBufferInfos,
7180 const VkBufferView* pBufferViews)
7181{
7182 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007183 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007184 {
Yilong Li71c43c52021-02-10 02:50:43 -08007185 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateSizedGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007186 }
7187 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007188 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007189 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007190}
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007191static void entry_vkBeginCommandBufferAsyncGOOGLE(
7192 VkCommandBuffer commandBuffer,
7193 const VkCommandBufferBeginInfo* pBeginInfo)
7194{
7195 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007196 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007197 vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007198}
7199static void entry_vkEndCommandBufferAsyncGOOGLE(
7200 VkCommandBuffer commandBuffer)
7201{
7202 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007203 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007204 vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007205}
7206static void entry_vkResetCommandBufferAsyncGOOGLE(
7207 VkCommandBuffer commandBuffer,
7208 VkCommandBufferResetFlags flags)
7209{
7210 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007211 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007212 vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007213}
Lingfeng Yang39a276e2019-06-17 13:27:22 -07007214static void entry_vkCommandBufferHostSyncGOOGLE(
7215 VkCommandBuffer commandBuffer,
7216 uint32_t needHostSync,
7217 uint32_t sequenceNumber)
7218{
7219 AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007220 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007221 vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber, true /* do lock */);
Lingfeng Yang39a276e2019-06-17 13:27:22 -07007222}
Lingfeng Yang87f11962019-06-27 16:28:53 +00007223static VkResult entry_vkCreateImageWithRequirementsGOOGLE(
7224 VkDevice device,
7225 const VkImageCreateInfo* pCreateInfo,
7226 const VkAllocationCallbacks* pAllocator,
7227 VkImage* pImage,
7228 VkMemoryRequirements* pMemoryRequirements)
7229{
7230 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007231 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang87f11962019-06-27 16:28:53 +00007232 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007233 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
Lingfeng Yang87f11962019-06-27 16:28:53 +00007234 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
7235}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007236static VkResult dynCheck_entry_vkCreateImageWithRequirementsGOOGLE(
7237 VkDevice device,
7238 const VkImageCreateInfo* pCreateInfo,
7239 const VkAllocationCallbacks* pAllocator,
7240 VkImage* pImage,
7241 VkMemoryRequirements* pMemoryRequirements)
7242{
7243 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007244 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007245 {
Yilong Li71c43c52021-02-10 02:50:43 -08007246 sOnInvalidDynamicallyCheckedCall("vkCreateImageWithRequirementsGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007247 }
7248 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007249 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007250 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007251 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007252 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
7253}
Lingfeng Yang87f11962019-06-27 16:28:53 +00007254static VkResult entry_vkCreateBufferWithRequirementsGOOGLE(
7255 VkDevice device,
7256 const VkBufferCreateInfo* pCreateInfo,
7257 const VkAllocationCallbacks* pAllocator,
7258 VkBuffer* pBuffer,
7259 VkMemoryRequirements* pMemoryRequirements)
7260{
7261 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007262 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang87f11962019-06-27 16:28:53 +00007263 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007264 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
Lingfeng Yang87f11962019-06-27 16:28:53 +00007265 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
7266}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007267static VkResult dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE(
7268 VkDevice device,
7269 const VkBufferCreateInfo* pCreateInfo,
7270 const VkAllocationCallbacks* pAllocator,
7271 VkBuffer* pBuffer,
7272 VkMemoryRequirements* pMemoryRequirements)
7273{
7274 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007275 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007276 {
Yilong Li71c43c52021-02-10 02:50:43 -08007277 sOnInvalidDynamicallyCheckedCall("vkCreateBufferWithRequirementsGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007278 }
7279 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007280 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007281 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007282 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007283 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
7284}
Lingfeng Yang4c542412020-02-04 18:18:32 -08007285static VkResult entry_vkGetMemoryHostAddressInfoGOOGLE(
7286 VkDevice device,
7287 VkDeviceMemory memory,
7288 uint64_t* pAddress,
7289 uint64_t* pSize,
7290 uint64_t* pHostmemId)
7291{
7292 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007293 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4c542412020-02-04 18:18:32 -08007294 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007295 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
Lingfeng Yang4c542412020-02-04 18:18:32 -08007296 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
7297}
7298static VkResult dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE(
7299 VkDevice device,
7300 VkDeviceMemory memory,
7301 uint64_t* pAddress,
7302 uint64_t* pSize,
7303 uint64_t* pHostmemId)
7304{
7305 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007306 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang4c542412020-02-04 18:18:32 -08007307 {
Yilong Li71c43c52021-02-10 02:50:43 -08007308 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostAddressInfoGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang4c542412020-02-04 18:18:32 -08007309 }
7310 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007311 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4c542412020-02-04 18:18:32 -08007312 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007313 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
Lingfeng Yang4c542412020-02-04 18:18:32 -08007314 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
7315}
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007316static VkResult entry_vkFreeMemorySyncGOOGLE(
7317 VkDevice device,
7318 VkDeviceMemory memory,
7319 const VkAllocationCallbacks* pAllocator)
7320{
7321 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007322 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007323 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007324 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007325 return vkFreeMemorySyncGOOGLE_VkResult_return;
7326}
7327static VkResult dynCheck_entry_vkFreeMemorySyncGOOGLE(
7328 VkDevice device,
7329 VkDeviceMemory memory,
7330 const VkAllocationCallbacks* pAllocator)
7331{
7332 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007333 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007334 {
Yilong Li71c43c52021-02-10 02:50:43 -08007335 sOnInvalidDynamicallyCheckedCall("vkFreeMemorySyncGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007336 }
7337 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007338 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007339 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007340 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007341 return vkFreeMemorySyncGOOGLE_VkResult_return;
7342}
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007343static void entry_vkQueueHostSyncGOOGLE(
7344 VkQueue queue,
7345 uint32_t needHostSync,
7346 uint32_t sequenceNumber)
7347{
7348 AEMU_SCOPED_TRACE("vkQueueHostSyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007349 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007350 vkEnc->vkQueueHostSyncGOOGLE(queue, needHostSync, sequenceNumber, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007351}
7352static void entry_vkQueueSubmitAsyncGOOGLE(
7353 VkQueue queue,
7354 uint32_t submitCount,
7355 const VkSubmitInfo* pSubmits,
7356 VkFence fence)
7357{
7358 AEMU_SCOPED_TRACE("vkQueueSubmitAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007359 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007360 vkEnc->vkQueueSubmitAsyncGOOGLE(queue, submitCount, pSubmits, fence, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007361}
7362static void entry_vkQueueWaitIdleAsyncGOOGLE(
7363 VkQueue queue)
7364{
7365 AEMU_SCOPED_TRACE("vkQueueWaitIdleAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007366 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007367 vkEnc->vkQueueWaitIdleAsyncGOOGLE(queue, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007368}
7369static void entry_vkQueueBindSparseAsyncGOOGLE(
7370 VkQueue queue,
7371 uint32_t bindInfoCount,
7372 const VkBindSparseInfo* pBindInfo,
7373 VkFence fence)
7374{
7375 AEMU_SCOPED_TRACE("vkQueueBindSparseAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007376 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007377 vkEnc->vkQueueBindSparseAsyncGOOGLE(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007378}
Yilong Lia48b0102020-09-15 15:08:28 -07007379static void entry_vkGetLinearImageLayoutGOOGLE(
7380 VkDevice device,
7381 VkFormat format,
7382 VkDeviceSize* pOffset,
7383 VkDeviceSize* pRowPitchAlignment)
7384{
7385 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007386 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007387 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
Yilong Lia48b0102020-09-15 15:08:28 -07007388}
7389static void dynCheck_entry_vkGetLinearImageLayoutGOOGLE(
7390 VkDevice device,
7391 VkFormat format,
7392 VkDeviceSize* pOffset,
7393 VkDeviceSize* pRowPitchAlignment)
7394{
7395 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007396 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Yilong Lia48b0102020-09-15 15:08:28 -07007397 {
Yilong Li71c43c52021-02-10 02:50:43 -08007398 sOnInvalidDynamicallyCheckedCall("vkGetLinearImageLayoutGOOGLE", "VK_GOOGLE_gfxstream");
Yilong Lia48b0102020-09-15 15:08:28 -07007399 }
7400 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007401 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007402 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
Yilong Lia48b0102020-09-15 15:08:28 -07007403}
Lingfeng Yangded34672021-01-22 23:17:47 -08007404static void entry_vkQueueFlushCommandsGOOGLE(
7405 VkQueue queue,
7406 VkCommandBuffer commandBuffer,
7407 VkDeviceSize dataSize,
7408 const void* pData)
7409{
7410 AEMU_SCOPED_TRACE("vkQueueFlushCommandsGOOGLE");
7411 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
7412 vkEnc->vkQueueFlushCommandsGOOGLE(queue, commandBuffer, dataSize, pData, true /* do lock */);
7413}
7414#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007415#ifdef VK_KHR_acceleration_structure
7416static VkResult entry_vkCreateAccelerationStructureKHR(
7417 VkDevice device,
7418 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
7419 const VkAllocationCallbacks* pAllocator,
7420 VkAccelerationStructureKHR* pAccelerationStructure)
7421{
7422 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
7423 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7424 VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
7425 vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
7426 return vkCreateAccelerationStructureKHR_VkResult_return;
7427}
7428static VkResult dynCheck_entry_vkCreateAccelerationStructureKHR(
7429 VkDevice device,
7430 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
7431 const VkAllocationCallbacks* pAllocator,
7432 VkAccelerationStructureKHR* pAccelerationStructure)
7433{
7434 auto resources = ResourceTracker::get();
7435 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7436 {
7437 sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7438 }
7439 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
7440 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7441 VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
7442 vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
7443 return vkCreateAccelerationStructureKHR_VkResult_return;
7444}
7445static void entry_vkDestroyAccelerationStructureKHR(
7446 VkDevice device,
7447 VkAccelerationStructureKHR accelerationStructure,
7448 const VkAllocationCallbacks* pAllocator)
7449{
7450 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
7451 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7452 vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
7453}
7454static void dynCheck_entry_vkDestroyAccelerationStructureKHR(
7455 VkDevice device,
7456 VkAccelerationStructureKHR accelerationStructure,
7457 const VkAllocationCallbacks* pAllocator)
7458{
7459 auto resources = ResourceTracker::get();
7460 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7461 {
7462 sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7463 }
7464 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
7465 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7466 vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
7467}
7468static void entry_vkCmdBuildAccelerationStructuresKHR(
7469 VkCommandBuffer commandBuffer,
7470 uint32_t infoCount,
7471 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7472 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
7473{
7474 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresKHR");
7475 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7476 vkEnc->vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
7477}
7478static void entry_vkCmdBuildAccelerationStructuresIndirectKHR(
7479 VkCommandBuffer commandBuffer,
7480 uint32_t infoCount,
7481 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7482 const VkDeviceAddress* pIndirectDeviceAddresses,
7483 const uint32_t* pIndirectStrides,
7484 const uint32_t* const* ppMaxPrimitiveCounts)
7485{
7486 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresIndirectKHR");
7487 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7488 vkEnc->vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, true /* do lock */);
7489}
7490static VkResult entry_vkBuildAccelerationStructuresKHR(
7491 VkDevice device,
7492 VkDeferredOperationKHR deferredOperation,
7493 uint32_t infoCount,
7494 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7495 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
7496{
7497 AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
7498 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7499 VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
7500 vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
7501 return vkBuildAccelerationStructuresKHR_VkResult_return;
7502}
7503static VkResult dynCheck_entry_vkBuildAccelerationStructuresKHR(
7504 VkDevice device,
7505 VkDeferredOperationKHR deferredOperation,
7506 uint32_t infoCount,
7507 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7508 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
7509{
7510 auto resources = ResourceTracker::get();
7511 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7512 {
7513 sOnInvalidDynamicallyCheckedCall("vkBuildAccelerationStructuresKHR", "VK_KHR_acceleration_structure");
7514 }
7515 AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
7516 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7517 VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
7518 vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
7519 return vkBuildAccelerationStructuresKHR_VkResult_return;
7520}
7521static VkResult entry_vkCopyAccelerationStructureKHR(
7522 VkDevice device,
7523 VkDeferredOperationKHR deferredOperation,
7524 const VkCopyAccelerationStructureInfoKHR* pInfo)
7525{
7526 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
7527 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7528 VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
7529 vkCopyAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7530 return vkCopyAccelerationStructureKHR_VkResult_return;
7531}
7532static VkResult dynCheck_entry_vkCopyAccelerationStructureKHR(
7533 VkDevice device,
7534 VkDeferredOperationKHR deferredOperation,
7535 const VkCopyAccelerationStructureInfoKHR* pInfo)
7536{
7537 auto resources = ResourceTracker::get();
7538 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7539 {
7540 sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7541 }
7542 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
7543 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7544 VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
7545 vkCopyAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7546 return vkCopyAccelerationStructureKHR_VkResult_return;
7547}
7548static VkResult entry_vkCopyAccelerationStructureToMemoryKHR(
7549 VkDevice device,
7550 VkDeferredOperationKHR deferredOperation,
7551 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
7552{
7553 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
7554 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7555 VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
7556 vkCopyAccelerationStructureToMemoryKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, true /* do lock */);
7557 return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
7558}
7559static VkResult dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR(
7560 VkDevice device,
7561 VkDeferredOperationKHR deferredOperation,
7562 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
7563{
7564 auto resources = ResourceTracker::get();
7565 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7566 {
7567 sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureToMemoryKHR", "VK_KHR_acceleration_structure");
7568 }
7569 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
7570 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7571 VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
7572 vkCopyAccelerationStructureToMemoryKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, true /* do lock */);
7573 return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
7574}
7575static VkResult entry_vkCopyMemoryToAccelerationStructureKHR(
7576 VkDevice device,
7577 VkDeferredOperationKHR deferredOperation,
7578 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
7579{
7580 AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
7581 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7582 VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
7583 vkCopyMemoryToAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7584 return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
7585}
7586static VkResult dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR(
7587 VkDevice device,
7588 VkDeferredOperationKHR deferredOperation,
7589 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
7590{
7591 auto resources = ResourceTracker::get();
7592 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7593 {
7594 sOnInvalidDynamicallyCheckedCall("vkCopyMemoryToAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7595 }
7596 AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
7597 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7598 VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
7599 vkCopyMemoryToAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7600 return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
7601}
7602static VkResult entry_vkWriteAccelerationStructuresPropertiesKHR(
7603 VkDevice device,
7604 uint32_t accelerationStructureCount,
7605 const VkAccelerationStructureKHR* pAccelerationStructures,
7606 VkQueryType queryType,
7607 size_t dataSize,
7608 void* pData,
7609 size_t stride)
7610{
7611 AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
7612 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7613 VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
7614 vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
7615 return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
7616}
7617static VkResult dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR(
7618 VkDevice device,
7619 uint32_t accelerationStructureCount,
7620 const VkAccelerationStructureKHR* pAccelerationStructures,
7621 VkQueryType queryType,
7622 size_t dataSize,
7623 void* pData,
7624 size_t stride)
7625{
7626 auto resources = ResourceTracker::get();
7627 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7628 {
7629 sOnInvalidDynamicallyCheckedCall("vkWriteAccelerationStructuresPropertiesKHR", "VK_KHR_acceleration_structure");
7630 }
7631 AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
7632 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7633 VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
7634 vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
7635 return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
7636}
7637static void entry_vkCmdCopyAccelerationStructureKHR(
7638 VkCommandBuffer commandBuffer,
7639 const VkCopyAccelerationStructureInfoKHR* pInfo)
7640{
7641 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureKHR");
7642 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7643 vkEnc->vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
7644}
7645static void entry_vkCmdCopyAccelerationStructureToMemoryKHR(
7646 VkCommandBuffer commandBuffer,
7647 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
7648{
7649 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureToMemoryKHR");
7650 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7651 vkEnc->vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, true /* do lock */);
7652}
7653static void entry_vkCmdCopyMemoryToAccelerationStructureKHR(
7654 VkCommandBuffer commandBuffer,
7655 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
7656{
7657 AEMU_SCOPED_TRACE("vkCmdCopyMemoryToAccelerationStructureKHR");
7658 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7659 vkEnc->vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
7660}
7661static VkDeviceAddress entry_vkGetAccelerationStructureDeviceAddressKHR(
7662 VkDevice device,
7663 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
7664{
7665 AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
7666 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7667 VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
7668 vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
7669 return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
7670}
7671static VkDeviceAddress dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR(
7672 VkDevice device,
7673 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
7674{
7675 auto resources = ResourceTracker::get();
7676 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7677 {
7678 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureDeviceAddressKHR", "VK_KHR_acceleration_structure");
7679 }
7680 AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
7681 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7682 VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
7683 vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
7684 return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
7685}
7686static void entry_vkCmdWriteAccelerationStructuresPropertiesKHR(
7687 VkCommandBuffer commandBuffer,
7688 uint32_t accelerationStructureCount,
7689 const VkAccelerationStructureKHR* pAccelerationStructures,
7690 VkQueryType queryType,
7691 VkQueryPool queryPool,
7692 uint32_t firstQuery)
7693{
7694 AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesKHR");
7695 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7696 vkEnc->vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
7697}
7698static void entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
7699 VkDevice device,
7700 const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
7701 VkAccelerationStructureCompatibilityKHR* pCompatibility)
7702{
7703 AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
7704 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7705 vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
7706}
7707static void dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
7708 VkDevice device,
7709 const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
7710 VkAccelerationStructureCompatibilityKHR* pCompatibility)
7711{
7712 auto resources = ResourceTracker::get();
7713 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7714 {
7715 sOnInvalidDynamicallyCheckedCall("vkGetDeviceAccelerationStructureCompatibilityKHR", "VK_KHR_acceleration_structure");
7716 }
7717 AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
7718 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7719 vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
7720}
7721static void entry_vkGetAccelerationStructureBuildSizesKHR(
7722 VkDevice device,
7723 VkAccelerationStructureBuildTypeKHR buildType,
7724 const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
7725 const uint32_t* pMaxPrimitiveCounts,
7726 VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
7727{
7728 AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
7729 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7730 vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
7731}
7732static void dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR(
7733 VkDevice device,
7734 VkAccelerationStructureBuildTypeKHR buildType,
7735 const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
7736 const uint32_t* pMaxPrimitiveCounts,
7737 VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
7738{
7739 auto resources = ResourceTracker::get();
7740 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7741 {
7742 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureBuildSizesKHR", "VK_KHR_acceleration_structure");
7743 }
7744 AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
7745 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7746 vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
7747}
7748#endif
7749#ifdef VK_KHR_ray_tracing_pipeline
7750static void entry_vkCmdTraceRaysKHR(
7751 VkCommandBuffer commandBuffer,
7752 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
7753 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
7754 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
7755 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
7756 uint32_t width,
7757 uint32_t height,
7758 uint32_t depth)
7759{
7760 AEMU_SCOPED_TRACE("vkCmdTraceRaysKHR");
7761 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7762 vkEnc->vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, true /* do lock */);
7763}
7764static VkResult entry_vkCreateRayTracingPipelinesKHR(
7765 VkDevice device,
7766 VkDeferredOperationKHR deferredOperation,
7767 VkPipelineCache pipelineCache,
7768 uint32_t createInfoCount,
7769 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
7770 const VkAllocationCallbacks* pAllocator,
7771 VkPipeline* pPipelines)
7772{
7773 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
7774 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7775 VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
7776 vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
7777 return vkCreateRayTracingPipelinesKHR_VkResult_return;
7778}
7779static VkResult dynCheck_entry_vkCreateRayTracingPipelinesKHR(
7780 VkDevice device,
7781 VkDeferredOperationKHR deferredOperation,
7782 VkPipelineCache pipelineCache,
7783 uint32_t createInfoCount,
7784 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
7785 const VkAllocationCallbacks* pAllocator,
7786 VkPipeline* pPipelines)
7787{
7788 auto resources = ResourceTracker::get();
7789 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
7790 {
7791 sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesKHR", "VK_KHR_ray_tracing_pipeline");
7792 }
7793 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
7794 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7795 VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
7796 vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
7797 return vkCreateRayTracingPipelinesKHR_VkResult_return;
7798}
7799static VkResult entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
7800 VkDevice device,
7801 VkPipeline pipeline,
7802 uint32_t firstGroup,
7803 uint32_t groupCount,
7804 size_t dataSize,
7805 void* pData)
7806{
7807 AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
7808 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7809 VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
7810 vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
7811 return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
7812}
7813static VkResult dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
7814 VkDevice device,
7815 VkPipeline pipeline,
7816 uint32_t firstGroup,
7817 uint32_t groupCount,
7818 size_t dataSize,
7819 void* pData)
7820{
7821 auto resources = ResourceTracker::get();
7822 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
7823 {
7824 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR", "VK_KHR_ray_tracing_pipeline");
7825 }
7826 AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
7827 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7828 VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
7829 vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
7830 return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
7831}
7832static void entry_vkCmdTraceRaysIndirectKHR(
7833 VkCommandBuffer commandBuffer,
7834 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
7835 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
7836 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
7837 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
7838 VkDeviceAddress indirectDeviceAddress)
7839{
7840 AEMU_SCOPED_TRACE("vkCmdTraceRaysIndirectKHR");
7841 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7842 vkEnc->vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, true /* do lock */);
7843}
7844static VkDeviceSize entry_vkGetRayTracingShaderGroupStackSizeKHR(
7845 VkDevice device,
7846 VkPipeline pipeline,
7847 uint32_t group,
7848 VkShaderGroupShaderKHR groupShader)
7849{
7850 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
7851 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7852 VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
7853 vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
7854 return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
7855}
7856static VkDeviceSize dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR(
7857 VkDevice device,
7858 VkPipeline pipeline,
7859 uint32_t group,
7860 VkShaderGroupShaderKHR groupShader)
7861{
7862 auto resources = ResourceTracker::get();
7863 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
7864 {
7865 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupStackSizeKHR", "VK_KHR_ray_tracing_pipeline");
7866 }
7867 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
7868 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7869 VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
7870 vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
7871 return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
7872}
7873static void entry_vkCmdSetRayTracingPipelineStackSizeKHR(
7874 VkCommandBuffer commandBuffer,
7875 uint32_t pipelineStackSize)
7876{
7877 AEMU_SCOPED_TRACE("vkCmdSetRayTracingPipelineStackSizeKHR");
7878 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7879 vkEnc->vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, true /* do lock */);
7880}
7881#endif
7882#ifdef VK_KHR_ray_query
7883#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007884void* goldfish_vulkan_get_proc_address(const char* name){
7885#ifdef VK_VERSION_1_0
7886 if (!strcmp(name, "vkCreateInstance"))
7887 {
7888 return (void*)entry_vkCreateInstance;
7889 }
7890 if (!strcmp(name, "vkDestroyInstance"))
7891 {
7892 return (void*)entry_vkDestroyInstance;
7893 }
7894 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
7895 {
7896 return (void*)entry_vkEnumeratePhysicalDevices;
7897 }
7898 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
7899 {
7900 return (void*)entry_vkGetPhysicalDeviceFeatures;
7901 }
7902 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
7903 {
7904 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
7905 }
7906 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
7907 {
7908 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
7909 }
7910 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
7911 {
7912 return (void*)entry_vkGetPhysicalDeviceProperties;
7913 }
7914 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
7915 {
7916 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
7917 }
7918 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
7919 {
7920 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
7921 }
7922 if (!strcmp(name, "vkGetInstanceProcAddr"))
7923 {
7924 return (void*)entry_vkGetInstanceProcAddr;
7925 }
7926 if (!strcmp(name, "vkGetDeviceProcAddr"))
7927 {
7928 return (void*)entry_vkGetDeviceProcAddr;
7929 }
7930 if (!strcmp(name, "vkCreateDevice"))
7931 {
7932 return (void*)entry_vkCreateDevice;
7933 }
7934 if (!strcmp(name, "vkDestroyDevice"))
7935 {
7936 return (void*)entry_vkDestroyDevice;
7937 }
7938 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
7939 {
7940 return (void*)entry_vkEnumerateInstanceExtensionProperties;
7941 }
7942 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
7943 {
7944 return (void*)entry_vkEnumerateDeviceExtensionProperties;
7945 }
7946 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
7947 {
7948 return (void*)entry_vkEnumerateInstanceLayerProperties;
7949 }
7950 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
7951 {
7952 return (void*)entry_vkEnumerateDeviceLayerProperties;
7953 }
7954 if (!strcmp(name, "vkGetDeviceQueue"))
7955 {
7956 return (void*)entry_vkGetDeviceQueue;
7957 }
7958 if (!strcmp(name, "vkQueueSubmit"))
7959 {
7960 return (void*)entry_vkQueueSubmit;
7961 }
7962 if (!strcmp(name, "vkQueueWaitIdle"))
7963 {
7964 return (void*)entry_vkQueueWaitIdle;
7965 }
7966 if (!strcmp(name, "vkDeviceWaitIdle"))
7967 {
7968 return (void*)entry_vkDeviceWaitIdle;
7969 }
7970 if (!strcmp(name, "vkAllocateMemory"))
7971 {
7972 return (void*)entry_vkAllocateMemory;
7973 }
7974 if (!strcmp(name, "vkFreeMemory"))
7975 {
7976 return (void*)entry_vkFreeMemory;
7977 }
7978 if (!strcmp(name, "vkMapMemory"))
7979 {
7980 return (void*)entry_vkMapMemory;
7981 }
7982 if (!strcmp(name, "vkUnmapMemory"))
7983 {
7984 return (void*)entry_vkUnmapMemory;
7985 }
7986 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
7987 {
7988 return (void*)entry_vkFlushMappedMemoryRanges;
7989 }
7990 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
7991 {
7992 return (void*)entry_vkInvalidateMappedMemoryRanges;
7993 }
7994 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
7995 {
7996 return (void*)entry_vkGetDeviceMemoryCommitment;
7997 }
7998 if (!strcmp(name, "vkBindBufferMemory"))
7999 {
8000 return (void*)entry_vkBindBufferMemory;
8001 }
8002 if (!strcmp(name, "vkBindImageMemory"))
8003 {
8004 return (void*)entry_vkBindImageMemory;
8005 }
8006 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
8007 {
8008 return (void*)entry_vkGetBufferMemoryRequirements;
8009 }
8010 if (!strcmp(name, "vkGetImageMemoryRequirements"))
8011 {
8012 return (void*)entry_vkGetImageMemoryRequirements;
8013 }
8014 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
8015 {
8016 return (void*)entry_vkGetImageSparseMemoryRequirements;
8017 }
8018 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
8019 {
8020 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
8021 }
8022 if (!strcmp(name, "vkQueueBindSparse"))
8023 {
8024 return (void*)entry_vkQueueBindSparse;
8025 }
8026 if (!strcmp(name, "vkCreateFence"))
8027 {
8028 return (void*)entry_vkCreateFence;
8029 }
8030 if (!strcmp(name, "vkDestroyFence"))
8031 {
8032 return (void*)entry_vkDestroyFence;
8033 }
8034 if (!strcmp(name, "vkResetFences"))
8035 {
8036 return (void*)entry_vkResetFences;
8037 }
8038 if (!strcmp(name, "vkGetFenceStatus"))
8039 {
8040 return (void*)entry_vkGetFenceStatus;
8041 }
8042 if (!strcmp(name, "vkWaitForFences"))
8043 {
8044 return (void*)entry_vkWaitForFences;
8045 }
8046 if (!strcmp(name, "vkCreateSemaphore"))
8047 {
8048 return (void*)entry_vkCreateSemaphore;
8049 }
8050 if (!strcmp(name, "vkDestroySemaphore"))
8051 {
8052 return (void*)entry_vkDestroySemaphore;
8053 }
8054 if (!strcmp(name, "vkCreateEvent"))
8055 {
8056 return (void*)entry_vkCreateEvent;
8057 }
8058 if (!strcmp(name, "vkDestroyEvent"))
8059 {
8060 return (void*)entry_vkDestroyEvent;
8061 }
8062 if (!strcmp(name, "vkGetEventStatus"))
8063 {
8064 return (void*)entry_vkGetEventStatus;
8065 }
8066 if (!strcmp(name, "vkSetEvent"))
8067 {
8068 return (void*)entry_vkSetEvent;
8069 }
8070 if (!strcmp(name, "vkResetEvent"))
8071 {
8072 return (void*)entry_vkResetEvent;
8073 }
8074 if (!strcmp(name, "vkCreateQueryPool"))
8075 {
8076 return (void*)entry_vkCreateQueryPool;
8077 }
8078 if (!strcmp(name, "vkDestroyQueryPool"))
8079 {
8080 return (void*)entry_vkDestroyQueryPool;
8081 }
8082 if (!strcmp(name, "vkGetQueryPoolResults"))
8083 {
8084 return (void*)entry_vkGetQueryPoolResults;
8085 }
8086 if (!strcmp(name, "vkCreateBuffer"))
8087 {
8088 return (void*)entry_vkCreateBuffer;
8089 }
8090 if (!strcmp(name, "vkDestroyBuffer"))
8091 {
8092 return (void*)entry_vkDestroyBuffer;
8093 }
8094 if (!strcmp(name, "vkCreateBufferView"))
8095 {
8096 return (void*)entry_vkCreateBufferView;
8097 }
8098 if (!strcmp(name, "vkDestroyBufferView"))
8099 {
8100 return (void*)entry_vkDestroyBufferView;
8101 }
8102 if (!strcmp(name, "vkCreateImage"))
8103 {
8104 return (void*)entry_vkCreateImage;
8105 }
8106 if (!strcmp(name, "vkDestroyImage"))
8107 {
8108 return (void*)entry_vkDestroyImage;
8109 }
8110 if (!strcmp(name, "vkGetImageSubresourceLayout"))
8111 {
8112 return (void*)entry_vkGetImageSubresourceLayout;
8113 }
8114 if (!strcmp(name, "vkCreateImageView"))
8115 {
8116 return (void*)entry_vkCreateImageView;
8117 }
8118 if (!strcmp(name, "vkDestroyImageView"))
8119 {
8120 return (void*)entry_vkDestroyImageView;
8121 }
8122 if (!strcmp(name, "vkCreateShaderModule"))
8123 {
8124 return (void*)entry_vkCreateShaderModule;
8125 }
8126 if (!strcmp(name, "vkDestroyShaderModule"))
8127 {
8128 return (void*)entry_vkDestroyShaderModule;
8129 }
8130 if (!strcmp(name, "vkCreatePipelineCache"))
8131 {
8132 return (void*)entry_vkCreatePipelineCache;
8133 }
8134 if (!strcmp(name, "vkDestroyPipelineCache"))
8135 {
8136 return (void*)entry_vkDestroyPipelineCache;
8137 }
8138 if (!strcmp(name, "vkGetPipelineCacheData"))
8139 {
8140 return (void*)entry_vkGetPipelineCacheData;
8141 }
8142 if (!strcmp(name, "vkMergePipelineCaches"))
8143 {
8144 return (void*)entry_vkMergePipelineCaches;
8145 }
8146 if (!strcmp(name, "vkCreateGraphicsPipelines"))
8147 {
8148 return (void*)entry_vkCreateGraphicsPipelines;
8149 }
8150 if (!strcmp(name, "vkCreateComputePipelines"))
8151 {
8152 return (void*)entry_vkCreateComputePipelines;
8153 }
8154 if (!strcmp(name, "vkDestroyPipeline"))
8155 {
8156 return (void*)entry_vkDestroyPipeline;
8157 }
8158 if (!strcmp(name, "vkCreatePipelineLayout"))
8159 {
8160 return (void*)entry_vkCreatePipelineLayout;
8161 }
8162 if (!strcmp(name, "vkDestroyPipelineLayout"))
8163 {
8164 return (void*)entry_vkDestroyPipelineLayout;
8165 }
8166 if (!strcmp(name, "vkCreateSampler"))
8167 {
8168 return (void*)entry_vkCreateSampler;
8169 }
8170 if (!strcmp(name, "vkDestroySampler"))
8171 {
8172 return (void*)entry_vkDestroySampler;
8173 }
8174 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
8175 {
8176 return (void*)entry_vkCreateDescriptorSetLayout;
8177 }
8178 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
8179 {
8180 return (void*)entry_vkDestroyDescriptorSetLayout;
8181 }
8182 if (!strcmp(name, "vkCreateDescriptorPool"))
8183 {
8184 return (void*)entry_vkCreateDescriptorPool;
8185 }
8186 if (!strcmp(name, "vkDestroyDescriptorPool"))
8187 {
8188 return (void*)entry_vkDestroyDescriptorPool;
8189 }
8190 if (!strcmp(name, "vkResetDescriptorPool"))
8191 {
8192 return (void*)entry_vkResetDescriptorPool;
8193 }
8194 if (!strcmp(name, "vkAllocateDescriptorSets"))
8195 {
8196 return (void*)entry_vkAllocateDescriptorSets;
8197 }
8198 if (!strcmp(name, "vkFreeDescriptorSets"))
8199 {
8200 return (void*)entry_vkFreeDescriptorSets;
8201 }
8202 if (!strcmp(name, "vkUpdateDescriptorSets"))
8203 {
8204 return (void*)entry_vkUpdateDescriptorSets;
8205 }
8206 if (!strcmp(name, "vkCreateFramebuffer"))
8207 {
8208 return (void*)entry_vkCreateFramebuffer;
8209 }
8210 if (!strcmp(name, "vkDestroyFramebuffer"))
8211 {
8212 return (void*)entry_vkDestroyFramebuffer;
8213 }
8214 if (!strcmp(name, "vkCreateRenderPass"))
8215 {
8216 return (void*)entry_vkCreateRenderPass;
8217 }
8218 if (!strcmp(name, "vkDestroyRenderPass"))
8219 {
8220 return (void*)entry_vkDestroyRenderPass;
8221 }
8222 if (!strcmp(name, "vkGetRenderAreaGranularity"))
8223 {
8224 return (void*)entry_vkGetRenderAreaGranularity;
8225 }
8226 if (!strcmp(name, "vkCreateCommandPool"))
8227 {
8228 return (void*)entry_vkCreateCommandPool;
8229 }
8230 if (!strcmp(name, "vkDestroyCommandPool"))
8231 {
8232 return (void*)entry_vkDestroyCommandPool;
8233 }
8234 if (!strcmp(name, "vkResetCommandPool"))
8235 {
8236 return (void*)entry_vkResetCommandPool;
8237 }
8238 if (!strcmp(name, "vkAllocateCommandBuffers"))
8239 {
8240 return (void*)entry_vkAllocateCommandBuffers;
8241 }
8242 if (!strcmp(name, "vkFreeCommandBuffers"))
8243 {
8244 return (void*)entry_vkFreeCommandBuffers;
8245 }
8246 if (!strcmp(name, "vkBeginCommandBuffer"))
8247 {
8248 return (void*)entry_vkBeginCommandBuffer;
8249 }
8250 if (!strcmp(name, "vkEndCommandBuffer"))
8251 {
8252 return (void*)entry_vkEndCommandBuffer;
8253 }
8254 if (!strcmp(name, "vkResetCommandBuffer"))
8255 {
8256 return (void*)entry_vkResetCommandBuffer;
8257 }
8258 if (!strcmp(name, "vkCmdBindPipeline"))
8259 {
8260 return (void*)entry_vkCmdBindPipeline;
8261 }
8262 if (!strcmp(name, "vkCmdSetViewport"))
8263 {
8264 return (void*)entry_vkCmdSetViewport;
8265 }
8266 if (!strcmp(name, "vkCmdSetScissor"))
8267 {
8268 return (void*)entry_vkCmdSetScissor;
8269 }
8270 if (!strcmp(name, "vkCmdSetLineWidth"))
8271 {
8272 return (void*)entry_vkCmdSetLineWidth;
8273 }
8274 if (!strcmp(name, "vkCmdSetDepthBias"))
8275 {
8276 return (void*)entry_vkCmdSetDepthBias;
8277 }
8278 if (!strcmp(name, "vkCmdSetBlendConstants"))
8279 {
8280 return (void*)entry_vkCmdSetBlendConstants;
8281 }
8282 if (!strcmp(name, "vkCmdSetDepthBounds"))
8283 {
8284 return (void*)entry_vkCmdSetDepthBounds;
8285 }
8286 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
8287 {
8288 return (void*)entry_vkCmdSetStencilCompareMask;
8289 }
8290 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
8291 {
8292 return (void*)entry_vkCmdSetStencilWriteMask;
8293 }
8294 if (!strcmp(name, "vkCmdSetStencilReference"))
8295 {
8296 return (void*)entry_vkCmdSetStencilReference;
8297 }
8298 if (!strcmp(name, "vkCmdBindDescriptorSets"))
8299 {
8300 return (void*)entry_vkCmdBindDescriptorSets;
8301 }
8302 if (!strcmp(name, "vkCmdBindIndexBuffer"))
8303 {
8304 return (void*)entry_vkCmdBindIndexBuffer;
8305 }
8306 if (!strcmp(name, "vkCmdBindVertexBuffers"))
8307 {
8308 return (void*)entry_vkCmdBindVertexBuffers;
8309 }
8310 if (!strcmp(name, "vkCmdDraw"))
8311 {
8312 return (void*)entry_vkCmdDraw;
8313 }
8314 if (!strcmp(name, "vkCmdDrawIndexed"))
8315 {
8316 return (void*)entry_vkCmdDrawIndexed;
8317 }
8318 if (!strcmp(name, "vkCmdDrawIndirect"))
8319 {
8320 return (void*)entry_vkCmdDrawIndirect;
8321 }
8322 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
8323 {
8324 return (void*)entry_vkCmdDrawIndexedIndirect;
8325 }
8326 if (!strcmp(name, "vkCmdDispatch"))
8327 {
8328 return (void*)entry_vkCmdDispatch;
8329 }
8330 if (!strcmp(name, "vkCmdDispatchIndirect"))
8331 {
8332 return (void*)entry_vkCmdDispatchIndirect;
8333 }
8334 if (!strcmp(name, "vkCmdCopyBuffer"))
8335 {
8336 return (void*)entry_vkCmdCopyBuffer;
8337 }
8338 if (!strcmp(name, "vkCmdCopyImage"))
8339 {
8340 return (void*)entry_vkCmdCopyImage;
8341 }
8342 if (!strcmp(name, "vkCmdBlitImage"))
8343 {
8344 return (void*)entry_vkCmdBlitImage;
8345 }
8346 if (!strcmp(name, "vkCmdCopyBufferToImage"))
8347 {
8348 return (void*)entry_vkCmdCopyBufferToImage;
8349 }
8350 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
8351 {
8352 return (void*)entry_vkCmdCopyImageToBuffer;
8353 }
8354 if (!strcmp(name, "vkCmdUpdateBuffer"))
8355 {
8356 return (void*)entry_vkCmdUpdateBuffer;
8357 }
8358 if (!strcmp(name, "vkCmdFillBuffer"))
8359 {
8360 return (void*)entry_vkCmdFillBuffer;
8361 }
8362 if (!strcmp(name, "vkCmdClearColorImage"))
8363 {
8364 return (void*)entry_vkCmdClearColorImage;
8365 }
8366 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
8367 {
8368 return (void*)entry_vkCmdClearDepthStencilImage;
8369 }
8370 if (!strcmp(name, "vkCmdClearAttachments"))
8371 {
8372 return (void*)entry_vkCmdClearAttachments;
8373 }
8374 if (!strcmp(name, "vkCmdResolveImage"))
8375 {
8376 return (void*)entry_vkCmdResolveImage;
8377 }
8378 if (!strcmp(name, "vkCmdSetEvent"))
8379 {
8380 return (void*)entry_vkCmdSetEvent;
8381 }
8382 if (!strcmp(name, "vkCmdResetEvent"))
8383 {
8384 return (void*)entry_vkCmdResetEvent;
8385 }
8386 if (!strcmp(name, "vkCmdWaitEvents"))
8387 {
8388 return (void*)entry_vkCmdWaitEvents;
8389 }
8390 if (!strcmp(name, "vkCmdPipelineBarrier"))
8391 {
8392 return (void*)entry_vkCmdPipelineBarrier;
8393 }
8394 if (!strcmp(name, "vkCmdBeginQuery"))
8395 {
8396 return (void*)entry_vkCmdBeginQuery;
8397 }
8398 if (!strcmp(name, "vkCmdEndQuery"))
8399 {
8400 return (void*)entry_vkCmdEndQuery;
8401 }
8402 if (!strcmp(name, "vkCmdResetQueryPool"))
8403 {
8404 return (void*)entry_vkCmdResetQueryPool;
8405 }
8406 if (!strcmp(name, "vkCmdWriteTimestamp"))
8407 {
8408 return (void*)entry_vkCmdWriteTimestamp;
8409 }
8410 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
8411 {
8412 return (void*)entry_vkCmdCopyQueryPoolResults;
8413 }
8414 if (!strcmp(name, "vkCmdPushConstants"))
8415 {
8416 return (void*)entry_vkCmdPushConstants;
8417 }
8418 if (!strcmp(name, "vkCmdBeginRenderPass"))
8419 {
8420 return (void*)entry_vkCmdBeginRenderPass;
8421 }
8422 if (!strcmp(name, "vkCmdNextSubpass"))
8423 {
8424 return (void*)entry_vkCmdNextSubpass;
8425 }
8426 if (!strcmp(name, "vkCmdEndRenderPass"))
8427 {
8428 return (void*)entry_vkCmdEndRenderPass;
8429 }
8430 if (!strcmp(name, "vkCmdExecuteCommands"))
8431 {
8432 return (void*)entry_vkCmdExecuteCommands;
8433 }
8434#endif
8435#ifdef VK_VERSION_1_1
8436 if (!strcmp(name, "vkEnumerateInstanceVersion"))
8437 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008438 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008439 }
8440 if (!strcmp(name, "vkBindBufferMemory2"))
8441 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008442 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008443 }
8444 if (!strcmp(name, "vkBindImageMemory2"))
8445 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008446 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008447 }
8448 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
8449 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008450 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008451 }
8452 if (!strcmp(name, "vkCmdSetDeviceMask"))
8453 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008454 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008455 }
8456 if (!strcmp(name, "vkCmdDispatchBase"))
8457 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008458 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008459 }
8460 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
8461 {
Lingfeng Yang113689e2018-11-11 16:48:50 -08008462 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008463 }
8464 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
8465 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008466 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008467 }
8468 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
8469 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008470 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008471 }
8472 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
8473 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008474 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008475 }
8476 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
8477 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008478 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008479 }
8480 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
8481 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008482 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008483 }
8484 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
8485 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008486 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008487 }
8488 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
8489 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008490 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008491 }
8492 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
8493 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008494 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008495 }
8496 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
8497 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008498 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008499 }
8500 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
8501 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008502 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008503 }
8504 if (!strcmp(name, "vkTrimCommandPool"))
8505 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008506 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008507 }
8508 if (!strcmp(name, "vkGetDeviceQueue2"))
8509 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008510 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008511 }
8512 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
8513 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008514 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008515 }
8516 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
8517 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008518 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008519 }
8520 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
8521 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008522 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008523 }
8524 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
8525 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008526 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008527 }
8528 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
8529 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008530 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008531 }
8532 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
8533 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008534 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008535 }
8536 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
8537 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008538 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008539 }
8540 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
8541 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008542 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008543 }
8544 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
8545 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008546 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008547 }
8548#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008549#ifdef VK_VERSION_1_2
8550 if (!strcmp(name, "vkCmdDrawIndirectCount"))
8551 {
8552 return nullptr;
8553 }
8554 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
8555 {
8556 return nullptr;
8557 }
8558 if (!strcmp(name, "vkCreateRenderPass2"))
8559 {
8560 return nullptr;
8561 }
8562 if (!strcmp(name, "vkCmdBeginRenderPass2"))
8563 {
8564 return nullptr;
8565 }
8566 if (!strcmp(name, "vkCmdNextSubpass2"))
8567 {
8568 return nullptr;
8569 }
8570 if (!strcmp(name, "vkCmdEndRenderPass2"))
8571 {
8572 return nullptr;
8573 }
8574 if (!strcmp(name, "vkResetQueryPool"))
8575 {
8576 return nullptr;
8577 }
8578 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
8579 {
8580 return nullptr;
8581 }
8582 if (!strcmp(name, "vkWaitSemaphores"))
8583 {
8584 return nullptr;
8585 }
8586 if (!strcmp(name, "vkSignalSemaphore"))
8587 {
8588 return nullptr;
8589 }
8590 if (!strcmp(name, "vkGetBufferDeviceAddress"))
8591 {
8592 return nullptr;
8593 }
8594 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
8595 {
8596 return nullptr;
8597 }
8598 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
8599 {
8600 return nullptr;
8601 }
8602#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008603#ifdef VK_KHR_surface
8604 if (!strcmp(name, "vkDestroySurfaceKHR"))
8605 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008606 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008607 }
8608 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
8609 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008610 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008611 }
8612 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
8613 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008614 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008615 }
8616 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
8617 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008618 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008619 }
8620 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
8621 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008622 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008623 }
8624#endif
8625#ifdef VK_KHR_swapchain
8626 if (!strcmp(name, "vkCreateSwapchainKHR"))
8627 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008628 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008629 }
8630 if (!strcmp(name, "vkDestroySwapchainKHR"))
8631 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008632 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008633 }
8634 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
8635 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008636 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008637 }
8638 if (!strcmp(name, "vkAcquireNextImageKHR"))
8639 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008640 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008641 }
8642 if (!strcmp(name, "vkQueuePresentKHR"))
8643 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008644 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008645 }
8646 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
8647 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008648 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008649 }
8650 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
8651 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008652 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008653 }
8654 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
8655 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008656 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008657 }
8658 if (!strcmp(name, "vkAcquireNextImage2KHR"))
8659 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008660 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008661 }
8662#endif
8663#ifdef VK_KHR_display
8664 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
8665 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008666 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008667 }
8668 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
8669 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008670 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008671 }
8672 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
8673 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008674 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008675 }
8676 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
8677 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008678 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008679 }
8680 if (!strcmp(name, "vkCreateDisplayModeKHR"))
8681 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008682 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008683 }
8684 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
8685 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008686 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008687 }
8688 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
8689 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008690 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008691 }
8692#endif
8693#ifdef VK_KHR_display_swapchain
8694 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
8695 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008696 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008697 }
8698#endif
8699#ifdef VK_KHR_xlib_surface
8700 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
8701 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008702 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008703 }
8704 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
8705 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008706 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008707 }
8708#endif
8709#ifdef VK_KHR_xcb_surface
8710 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
8711 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008712 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008713 }
8714 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
8715 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008716 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008717 }
8718#endif
8719#ifdef VK_KHR_wayland_surface
8720 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
8721 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008722 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008723 }
8724 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
8725 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008726 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008727 }
8728#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008729#ifdef VK_KHR_android_surface
8730 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
8731 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008732 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008733 }
8734#endif
8735#ifdef VK_KHR_win32_surface
8736 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
8737 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008738 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008739 }
8740 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
8741 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008742 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008743 }
8744#endif
8745#ifdef VK_KHR_get_physical_device_properties2
8746 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
8747 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008748 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008749 }
8750 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
8751 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008752 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008753 }
8754 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
8755 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008756 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008757 }
8758 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
8759 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008760 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008761 }
8762 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
8763 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008764 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008765 }
8766 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
8767 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008768 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008769 }
8770 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
8771 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008772 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008773 }
8774#endif
8775#ifdef VK_KHR_device_group
8776 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
8777 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008778 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008779 }
8780 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
8781 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008782 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008783 }
8784 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
8785 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008786 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008787 }
8788#endif
8789#ifdef VK_KHR_maintenance1
8790 if (!strcmp(name, "vkTrimCommandPoolKHR"))
8791 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008792 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008793 }
8794#endif
8795#ifdef VK_KHR_device_group_creation
8796 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
8797 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008798 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008799 }
8800#endif
8801#ifdef VK_KHR_external_memory_capabilities
8802 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
8803 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008804 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008805 }
8806#endif
8807#ifdef VK_KHR_external_memory_win32
8808 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
8809 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008810 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008811 }
8812 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
8813 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008814 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008815 }
8816#endif
8817#ifdef VK_KHR_external_memory_fd
8818 if (!strcmp(name, "vkGetMemoryFdKHR"))
8819 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008820 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008821 }
8822 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
8823 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008824 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008825 }
8826#endif
8827#ifdef VK_KHR_external_semaphore_capabilities
8828 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
8829 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008830 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008831 }
8832#endif
8833#ifdef VK_KHR_external_semaphore_win32
8834 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
8835 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008836 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008837 }
8838 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
8839 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008840 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008841 }
8842#endif
8843#ifdef VK_KHR_external_semaphore_fd
8844 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
8845 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008846 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008847 }
8848 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
8849 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008850 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008851 }
8852#endif
8853#ifdef VK_KHR_push_descriptor
8854 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
8855 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008856 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008857 }
8858 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
8859 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008860 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008861 }
8862#endif
8863#ifdef VK_KHR_descriptor_update_template
8864 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
8865 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008866 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008867 }
8868 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
8869 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008870 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008871 }
8872 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
8873 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008874 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008875 }
8876#endif
8877#ifdef VK_KHR_create_renderpass2
8878 if (!strcmp(name, "vkCreateRenderPass2KHR"))
8879 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008880 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008881 }
8882 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
8883 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008884 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008885 }
8886 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
8887 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008888 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008889 }
8890 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
8891 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008892 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008893 }
8894#endif
8895#ifdef VK_KHR_shared_presentable_image
8896 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
8897 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008898 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008899 }
8900#endif
8901#ifdef VK_KHR_external_fence_capabilities
8902 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
8903 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008904 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008905 }
8906#endif
8907#ifdef VK_KHR_external_fence_win32
8908 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
8909 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008910 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008911 }
8912 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
8913 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008914 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008915 }
8916#endif
8917#ifdef VK_KHR_external_fence_fd
8918 if (!strcmp(name, "vkImportFenceFdKHR"))
8919 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008920 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008921 }
8922 if (!strcmp(name, "vkGetFenceFdKHR"))
8923 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008924 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008925 }
8926#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008927#ifdef VK_KHR_performance_query
8928 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
8929 {
8930 return nullptr;
8931 }
8932 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
8933 {
8934 return nullptr;
8935 }
8936 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
8937 {
8938 return nullptr;
8939 }
8940 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
8941 {
8942 return nullptr;
8943 }
8944#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008945#ifdef VK_KHR_get_surface_capabilities2
8946 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
8947 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008948 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008949 }
8950 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
8951 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008952 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008953 }
8954#endif
8955#ifdef VK_KHR_get_display_properties2
8956 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
8957 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008958 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008959 }
8960 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
8961 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008962 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008963 }
8964 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
8965 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008966 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008967 }
8968 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
8969 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008970 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008971 }
8972#endif
8973#ifdef VK_KHR_get_memory_requirements2
8974 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
8975 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008976 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008977 }
8978 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
8979 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008980 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008981 }
8982 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
8983 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008984 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008985 }
8986#endif
8987#ifdef VK_KHR_sampler_ycbcr_conversion
8988 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
8989 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008990 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008991 }
8992 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
8993 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008994 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008995 }
8996#endif
8997#ifdef VK_KHR_bind_memory2
8998 if (!strcmp(name, "vkBindBufferMemory2KHR"))
8999 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009000 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009001 }
9002 if (!strcmp(name, "vkBindImageMemory2KHR"))
9003 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009004 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009005 }
9006#endif
9007#ifdef VK_KHR_maintenance3
9008 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
9009 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009010 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009011 }
9012#endif
9013#ifdef VK_KHR_draw_indirect_count
9014 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
9015 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009016 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009017 }
9018 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
9019 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009020 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009021 }
9022#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009023#ifdef VK_KHR_timeline_semaphore
9024 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
9025 {
9026 return nullptr;
9027 }
9028 if (!strcmp(name, "vkWaitSemaphoresKHR"))
9029 {
9030 return nullptr;
9031 }
9032 if (!strcmp(name, "vkSignalSemaphoreKHR"))
9033 {
9034 return nullptr;
9035 }
9036#endif
9037#ifdef VK_KHR_fragment_shading_rate
9038 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
9039 {
9040 return nullptr;
9041 }
9042 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
9043 {
9044 return nullptr;
9045 }
9046#endif
9047#ifdef VK_KHR_buffer_device_address
9048 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
9049 {
9050 return nullptr;
9051 }
9052 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
9053 {
9054 return nullptr;
9055 }
9056 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
9057 {
9058 return nullptr;
9059 }
9060#endif
9061#ifdef VK_KHR_deferred_host_operations
9062 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
9063 {
9064 return nullptr;
9065 }
9066 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
9067 {
9068 return nullptr;
9069 }
9070 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
9071 {
9072 return nullptr;
9073 }
9074 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
9075 {
9076 return nullptr;
9077 }
9078 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
9079 {
9080 return nullptr;
9081 }
9082#endif
9083#ifdef VK_KHR_pipeline_executable_properties
9084 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
9085 {
9086 return nullptr;
9087 }
9088 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
9089 {
9090 return nullptr;
9091 }
9092 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
9093 {
9094 return nullptr;
9095 }
9096#endif
9097#ifdef VK_KHR_copy_commands2
9098 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
9099 {
9100 return nullptr;
9101 }
9102 if (!strcmp(name, "vkCmdCopyImage2KHR"))
9103 {
9104 return nullptr;
9105 }
9106 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
9107 {
9108 return nullptr;
9109 }
9110 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
9111 {
9112 return nullptr;
9113 }
9114 if (!strcmp(name, "vkCmdBlitImage2KHR"))
9115 {
9116 return nullptr;
9117 }
9118 if (!strcmp(name, "vkCmdResolveImage2KHR"))
9119 {
9120 return nullptr;
9121 }
9122#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08009123#ifdef VK_ANDROID_native_buffer
9124 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
9125 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009126 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08009127 }
9128 if (!strcmp(name, "vkAcquireImageANDROID"))
9129 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009130 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08009131 }
9132 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
9133 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009134 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08009135 }
9136#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009137#ifdef VK_EXT_debug_report
9138 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
9139 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009140 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009141 }
9142 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
9143 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009144 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009145 }
9146 if (!strcmp(name, "vkDebugReportMessageEXT"))
9147 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009148 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009149 }
9150#endif
9151#ifdef VK_EXT_debug_marker
9152 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
9153 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009154 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009155 }
9156 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
9157 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009158 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009159 }
9160 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
9161 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009162 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009163 }
9164 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
9165 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009166 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009167 }
9168 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
9169 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009170 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009171 }
9172#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009173#ifdef VK_EXT_transform_feedback
9174 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
9175 {
9176 return nullptr;
9177 }
9178 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
9179 {
9180 return nullptr;
9181 }
9182 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
9183 {
9184 return nullptr;
9185 }
9186 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
9187 {
9188 return nullptr;
9189 }
9190 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
9191 {
9192 return nullptr;
9193 }
9194 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
9195 {
9196 return nullptr;
9197 }
9198#endif
9199#ifdef VK_NVX_image_view_handle
9200 if (!strcmp(name, "vkGetImageViewHandleNVX"))
9201 {
9202 return nullptr;
9203 }
9204 if (!strcmp(name, "vkGetImageViewAddressNVX"))
9205 {
9206 return nullptr;
9207 }
9208#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009209#ifdef VK_AMD_draw_indirect_count
9210 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
9211 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009212 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009213 }
9214 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
9215 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009216 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009217 }
9218#endif
9219#ifdef VK_AMD_shader_info
9220 if (!strcmp(name, "vkGetShaderInfoAMD"))
9221 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009222 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009223 }
9224#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009225#ifdef VK_GGP_stream_descriptor_surface
9226 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
9227 {
9228 return nullptr;
9229 }
9230#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009231#ifdef VK_NV_external_memory_capabilities
9232 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
9233 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009234 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009235 }
9236#endif
9237#ifdef VK_NV_external_memory_win32
9238 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
9239 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009240 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009241 }
9242#endif
9243#ifdef VK_NN_vi_surface
9244 if (!strcmp(name, "vkCreateViSurfaceNN"))
9245 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009246 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009247 }
9248#endif
9249#ifdef VK_EXT_conditional_rendering
9250 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
9251 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009252 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009253 }
9254 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
9255 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009256 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009257 }
9258#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009259#ifdef VK_NV_clip_space_w_scaling
9260 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
9261 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009262 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009263 }
9264#endif
9265#ifdef VK_EXT_direct_mode_display
9266 if (!strcmp(name, "vkReleaseDisplayEXT"))
9267 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009268 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009269 }
9270#endif
9271#ifdef VK_EXT_acquire_xlib_display
9272 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
9273 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009274 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009275 }
9276 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
9277 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009278 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009279 }
9280#endif
9281#ifdef VK_EXT_display_surface_counter
9282 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
9283 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009284 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009285 }
9286#endif
9287#ifdef VK_EXT_display_control
9288 if (!strcmp(name, "vkDisplayPowerControlEXT"))
9289 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009290 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009291 }
9292 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
9293 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009294 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009295 }
9296 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
9297 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009298 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009299 }
9300 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
9301 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009302 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009303 }
9304#endif
9305#ifdef VK_GOOGLE_display_timing
9306 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
9307 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009308 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009309 }
9310 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
9311 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009312 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009313 }
9314#endif
9315#ifdef VK_EXT_discard_rectangles
9316 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
9317 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009318 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009319 }
9320#endif
9321#ifdef VK_EXT_hdr_metadata
9322 if (!strcmp(name, "vkSetHdrMetadataEXT"))
9323 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009324 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009325 }
9326#endif
9327#ifdef VK_MVK_ios_surface
9328 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
9329 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009330 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009331 }
9332#endif
9333#ifdef VK_MVK_macos_surface
9334 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
9335 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009336 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009337 }
9338#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009339#ifdef VK_MVK_moltenvk
9340 if (!strcmp(name, "vkGetMTLDeviceMVK"))
9341 {
9342 return nullptr;
9343 }
9344 if (!strcmp(name, "vkSetMTLTextureMVK"))
9345 {
9346 return nullptr;
9347 }
9348 if (!strcmp(name, "vkGetMTLTextureMVK"))
9349 {
9350 return nullptr;
9351 }
9352 if (!strcmp(name, "vkGetMTLBufferMVK"))
9353 {
9354 return nullptr;
9355 }
9356 if (!strcmp(name, "vkUseIOSurfaceMVK"))
9357 {
9358 return nullptr;
9359 }
9360 if (!strcmp(name, "vkGetIOSurfaceMVK"))
9361 {
9362 return nullptr;
9363 }
9364#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009365#ifdef VK_EXT_debug_utils
9366 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
9367 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009368 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009369 }
9370 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
9371 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009372 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009373 }
9374 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
9375 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009376 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009377 }
9378 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
9379 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009380 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009381 }
9382 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
9383 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009384 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009385 }
9386 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
9387 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009388 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009389 }
9390 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
9391 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009392 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009393 }
9394 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
9395 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009396 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009397 }
9398 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
9399 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009400 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009401 }
9402 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
9403 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009404 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009405 }
9406 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
9407 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009408 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009409 }
9410#endif
9411#ifdef VK_ANDROID_external_memory_android_hardware_buffer
9412 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
9413 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009414 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009415 }
9416 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
9417 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009418 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009419 }
9420#endif
9421#ifdef VK_EXT_sample_locations
9422 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
9423 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009424 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009425 }
9426 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
9427 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009428 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009429 }
9430#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009431#ifdef VK_EXT_image_drm_format_modifier
9432 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
9433 {
9434 return nullptr;
9435 }
9436#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009437#ifdef VK_EXT_validation_cache
9438 if (!strcmp(name, "vkCreateValidationCacheEXT"))
9439 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009440 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009441 }
9442 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
9443 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009444 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009445 }
9446 if (!strcmp(name, "vkMergeValidationCachesEXT"))
9447 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009448 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009449 }
9450 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
9451 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009452 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009453 }
9454#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009455#ifdef VK_NV_shading_rate_image
9456 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
9457 {
9458 return nullptr;
9459 }
9460 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
9461 {
9462 return nullptr;
9463 }
9464 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
9465 {
9466 return nullptr;
9467 }
9468#endif
9469#ifdef VK_NV_ray_tracing
9470 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
9471 {
9472 return nullptr;
9473 }
9474 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
9475 {
9476 return nullptr;
9477 }
9478 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
9479 {
9480 return nullptr;
9481 }
9482 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
9483 {
9484 return nullptr;
9485 }
9486 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
9487 {
9488 return nullptr;
9489 }
9490 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
9491 {
9492 return nullptr;
9493 }
9494 if (!strcmp(name, "vkCmdTraceRaysNV"))
9495 {
9496 return nullptr;
9497 }
9498 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
9499 {
9500 return nullptr;
9501 }
9502 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
9503 {
9504 return nullptr;
9505 }
9506 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
9507 {
9508 return nullptr;
9509 }
9510 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
9511 {
9512 return nullptr;
9513 }
9514 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
9515 {
9516 return nullptr;
9517 }
9518 if (!strcmp(name, "vkCompileDeferredNV"))
9519 {
9520 return nullptr;
9521 }
9522#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009523#ifdef VK_EXT_external_memory_host
9524 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
9525 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009526 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009527 }
9528#endif
9529#ifdef VK_AMD_buffer_marker
9530 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
9531 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009532 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009533 }
9534#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009535#ifdef VK_EXT_calibrated_timestamps
9536 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
9537 {
9538 return nullptr;
9539 }
9540 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
9541 {
9542 return nullptr;
9543 }
9544#endif
9545#ifdef VK_NV_mesh_shader
9546 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
9547 {
9548 return nullptr;
9549 }
9550 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
9551 {
9552 return nullptr;
9553 }
9554 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
9555 {
9556 return nullptr;
9557 }
9558#endif
9559#ifdef VK_NV_scissor_exclusive
9560 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
9561 {
9562 return nullptr;
9563 }
9564#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009565#ifdef VK_NV_device_diagnostic_checkpoints
9566 if (!strcmp(name, "vkCmdSetCheckpointNV"))
9567 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009568 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009569 }
9570 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
9571 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009572 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009573 }
9574#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009575#ifdef VK_INTEL_performance_query
9576 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
9577 {
9578 return nullptr;
9579 }
9580 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
9581 {
9582 return nullptr;
9583 }
9584 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
9585 {
9586 return nullptr;
9587 }
9588 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
9589 {
9590 return nullptr;
9591 }
9592 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
9593 {
9594 return nullptr;
9595 }
9596 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
9597 {
9598 return nullptr;
9599 }
9600 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
9601 {
9602 return nullptr;
9603 }
9604 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
9605 {
9606 return nullptr;
9607 }
9608 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
9609 {
9610 return nullptr;
9611 }
9612#endif
9613#ifdef VK_AMD_display_native_hdr
9614 if (!strcmp(name, "vkSetLocalDimmingAMD"))
9615 {
9616 return nullptr;
9617 }
9618#endif
9619#ifdef VK_FUCHSIA_imagepipe_surface
9620 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
9621 {
9622 return nullptr;
9623 }
9624#endif
9625#ifdef VK_EXT_metal_surface
9626 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08009627 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009628 return nullptr;
9629 }
9630#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08009631#ifdef VK_GOOGLE_color_buffer
9632 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
9633 {
9634 return nullptr;
9635 }
9636 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
9637 {
9638 return nullptr;
9639 }
9640#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009641#ifdef VK_EXT_buffer_device_address
9642 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
9643 {
9644 return nullptr;
9645 }
9646#endif
9647#ifdef VK_EXT_tooling_info
9648 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
9649 {
9650 return nullptr;
9651 }
9652#endif
9653#ifdef VK_NV_cooperative_matrix
9654 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
9655 {
9656 return nullptr;
9657 }
9658#endif
9659#ifdef VK_NV_coverage_reduction_mode
9660 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
9661 {
9662 return nullptr;
9663 }
9664#endif
9665#ifdef VK_EXT_full_screen_exclusive
9666 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
9667 {
9668 return nullptr;
9669 }
9670 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
9671 {
9672 return nullptr;
9673 }
9674 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
9675 {
9676 return nullptr;
9677 }
9678 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
9679 {
9680 return nullptr;
9681 }
9682#endif
9683#ifdef VK_EXT_headless_surface
9684 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
9685 {
9686 return nullptr;
9687 }
9688#endif
9689#ifdef VK_EXT_line_rasterization
9690 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
9691 {
9692 return nullptr;
9693 }
9694#endif
9695#ifdef VK_EXT_host_query_reset
9696 if (!strcmp(name, "vkResetQueryPoolEXT"))
9697 {
9698 return nullptr;
9699 }
9700#endif
9701#ifdef VK_EXT_extended_dynamic_state
9702 if (!strcmp(name, "vkCmdSetCullModeEXT"))
9703 {
9704 return nullptr;
9705 }
9706 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
9707 {
9708 return nullptr;
9709 }
9710 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
9711 {
9712 return nullptr;
9713 }
9714 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
9715 {
9716 return nullptr;
9717 }
9718 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
9719 {
9720 return nullptr;
9721 }
9722 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
9723 {
9724 return nullptr;
9725 }
9726 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
9727 {
9728 return nullptr;
9729 }
9730 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
9731 {
9732 return nullptr;
9733 }
9734 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
9735 {
9736 return nullptr;
9737 }
9738 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
9739 {
9740 return nullptr;
9741 }
9742 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
9743 {
9744 return nullptr;
9745 }
9746 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
9747 {
9748 return nullptr;
9749 }
9750#endif
9751#ifdef VK_NV_device_generated_commands
9752 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
9753 {
9754 return nullptr;
9755 }
9756 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
9757 {
9758 return nullptr;
9759 }
9760 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
9761 {
9762 return nullptr;
9763 }
9764 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
9765 {
9766 return nullptr;
9767 }
9768 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
9769 {
9770 return nullptr;
9771 }
9772 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
9773 {
9774 return nullptr;
9775 }
9776#endif
9777#ifdef VK_EXT_private_data
9778 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
9779 {
9780 return nullptr;
9781 }
9782 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
9783 {
9784 return nullptr;
9785 }
9786 if (!strcmp(name, "vkSetPrivateDataEXT"))
9787 {
9788 return nullptr;
9789 }
9790 if (!strcmp(name, "vkGetPrivateDataEXT"))
9791 {
9792 return nullptr;
9793 }
9794#endif
9795#ifdef VK_NV_fragment_shading_rate_enums
9796 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
9797 {
9798 return nullptr;
9799 }
9800#endif
9801#ifdef VK_EXT_directfb_surface
9802 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
9803 {
9804 return nullptr;
9805 }
9806 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
9807 {
9808 return nullptr;
9809 }
9810#endif
Yilong Li71c43c52021-02-10 02:50:43 -08009811#ifdef VK_GOOGLE_gfxstream
Yilong Lia8d45f12021-02-07 02:30:21 -08009812 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
9813 {
9814 return nullptr;
9815 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07009816 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
9817 {
9818 return nullptr;
9819 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009820 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
9821 {
9822 return nullptr;
9823 }
9824 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
9825 {
9826 return nullptr;
9827 }
9828 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
9829 {
9830 return nullptr;
9831 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07009832 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
9833 {
9834 return nullptr;
9835 }
Lingfeng Yang87f11962019-06-27 16:28:53 +00009836 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
9837 {
9838 return nullptr;
9839 }
9840 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
9841 {
9842 return nullptr;
9843 }
Lingfeng Yang4c542412020-02-04 18:18:32 -08009844 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
9845 {
9846 return nullptr;
9847 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07009848 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
9849 {
9850 return nullptr;
9851 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07009852 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
9853 {
9854 return nullptr;
9855 }
9856 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
9857 {
9858 return nullptr;
9859 }
9860 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
9861 {
9862 return nullptr;
9863 }
9864 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
9865 {
9866 return nullptr;
9867 }
Yilong Lia48b0102020-09-15 15:08:28 -07009868 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
9869 {
9870 return nullptr;
9871 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009872 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
Lingfeng Yang2178dc72021-01-08 14:01:47 -08009873 {
9874 return nullptr;
9875 }
9876#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009877#ifdef VK_KHR_acceleration_structure
9878 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
9879 {
9880 return nullptr;
9881 }
9882 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
9883 {
9884 return nullptr;
9885 }
9886 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
9887 {
9888 return nullptr;
9889 }
9890 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
9891 {
9892 return nullptr;
9893 }
9894 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
9895 {
9896 return nullptr;
9897 }
9898 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
9899 {
9900 return nullptr;
9901 }
9902 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
9903 {
9904 return nullptr;
9905 }
9906 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
9907 {
9908 return nullptr;
9909 }
9910 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
9911 {
9912 return nullptr;
9913 }
9914 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
9915 {
9916 return nullptr;
9917 }
9918 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
9919 {
9920 return nullptr;
9921 }
9922 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
9923 {
9924 return nullptr;
9925 }
9926 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
9927 {
9928 return nullptr;
9929 }
9930 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
9931 {
9932 return nullptr;
9933 }
9934 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
9935 {
9936 return nullptr;
9937 }
9938 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
9939 {
9940 return nullptr;
9941 }
9942#endif
9943#ifdef VK_KHR_ray_tracing_pipeline
9944 if (!strcmp(name, "vkCmdTraceRaysKHR"))
9945 {
9946 return nullptr;
9947 }
9948 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
9949 {
9950 return nullptr;
9951 }
9952 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
9953 {
9954 return nullptr;
9955 }
9956 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
9957 {
9958 return nullptr;
9959 }
9960 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
9961 {
9962 return nullptr;
9963 }
9964 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
Lingfeng Yangded34672021-01-22 23:17:47 -08009965 {
9966 return nullptr;
9967 }
9968#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009969 return nullptr;
9970}
9971void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
9972 auto resources = ResourceTracker::get();
9973 bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
9974#ifdef VK_VERSION_1_0
9975 if (!strcmp(name, "vkCreateInstance"))
9976 {
9977 return (void*)entry_vkCreateInstance;
9978 }
9979 if (!strcmp(name, "vkDestroyInstance"))
9980 {
9981 return (void*)entry_vkDestroyInstance;
9982 }
9983 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
9984 {
9985 return (void*)entry_vkEnumeratePhysicalDevices;
9986 }
9987 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
9988 {
9989 return (void*)entry_vkGetPhysicalDeviceFeatures;
9990 }
9991 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
9992 {
9993 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
9994 }
9995 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
9996 {
9997 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
9998 }
9999 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
10000 {
10001 return (void*)entry_vkGetPhysicalDeviceProperties;
10002 }
10003 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
10004 {
10005 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
10006 }
10007 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
10008 {
10009 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
10010 }
10011 if (!strcmp(name, "vkGetInstanceProcAddr"))
10012 {
10013 return (void*)entry_vkGetInstanceProcAddr;
10014 }
10015 if (!strcmp(name, "vkGetDeviceProcAddr"))
10016 {
10017 return (void*)entry_vkGetDeviceProcAddr;
10018 }
10019 if (!strcmp(name, "vkCreateDevice"))
10020 {
10021 return (void*)entry_vkCreateDevice;
10022 }
10023 if (!strcmp(name, "vkDestroyDevice"))
10024 {
10025 return (void*)entry_vkDestroyDevice;
10026 }
10027 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
10028 {
10029 return (void*)entry_vkEnumerateInstanceExtensionProperties;
10030 }
10031 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
10032 {
10033 return (void*)entry_vkEnumerateDeviceExtensionProperties;
10034 }
10035 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
10036 {
10037 return (void*)entry_vkEnumerateInstanceLayerProperties;
10038 }
10039 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
10040 {
10041 return (void*)entry_vkEnumerateDeviceLayerProperties;
10042 }
10043 if (!strcmp(name, "vkGetDeviceQueue"))
10044 {
10045 return (void*)entry_vkGetDeviceQueue;
10046 }
10047 if (!strcmp(name, "vkQueueSubmit"))
10048 {
10049 return (void*)entry_vkQueueSubmit;
10050 }
10051 if (!strcmp(name, "vkQueueWaitIdle"))
10052 {
10053 return (void*)entry_vkQueueWaitIdle;
10054 }
10055 if (!strcmp(name, "vkDeviceWaitIdle"))
10056 {
10057 return (void*)entry_vkDeviceWaitIdle;
10058 }
10059 if (!strcmp(name, "vkAllocateMemory"))
10060 {
10061 return (void*)entry_vkAllocateMemory;
10062 }
10063 if (!strcmp(name, "vkFreeMemory"))
10064 {
10065 return (void*)entry_vkFreeMemory;
10066 }
10067 if (!strcmp(name, "vkMapMemory"))
10068 {
10069 return (void*)entry_vkMapMemory;
10070 }
10071 if (!strcmp(name, "vkUnmapMemory"))
10072 {
10073 return (void*)entry_vkUnmapMemory;
10074 }
10075 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
10076 {
10077 return (void*)entry_vkFlushMappedMemoryRanges;
10078 }
10079 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
10080 {
10081 return (void*)entry_vkInvalidateMappedMemoryRanges;
10082 }
10083 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
10084 {
10085 return (void*)entry_vkGetDeviceMemoryCommitment;
10086 }
10087 if (!strcmp(name, "vkBindBufferMemory"))
10088 {
10089 return (void*)entry_vkBindBufferMemory;
10090 }
10091 if (!strcmp(name, "vkBindImageMemory"))
10092 {
10093 return (void*)entry_vkBindImageMemory;
10094 }
10095 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
10096 {
10097 return (void*)entry_vkGetBufferMemoryRequirements;
10098 }
10099 if (!strcmp(name, "vkGetImageMemoryRequirements"))
10100 {
10101 return (void*)entry_vkGetImageMemoryRequirements;
10102 }
10103 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
10104 {
10105 return (void*)entry_vkGetImageSparseMemoryRequirements;
10106 }
10107 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
10108 {
10109 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
10110 }
10111 if (!strcmp(name, "vkQueueBindSparse"))
10112 {
10113 return (void*)entry_vkQueueBindSparse;
10114 }
10115 if (!strcmp(name, "vkCreateFence"))
10116 {
10117 return (void*)entry_vkCreateFence;
10118 }
10119 if (!strcmp(name, "vkDestroyFence"))
10120 {
10121 return (void*)entry_vkDestroyFence;
10122 }
10123 if (!strcmp(name, "vkResetFences"))
10124 {
10125 return (void*)entry_vkResetFences;
10126 }
10127 if (!strcmp(name, "vkGetFenceStatus"))
10128 {
10129 return (void*)entry_vkGetFenceStatus;
10130 }
10131 if (!strcmp(name, "vkWaitForFences"))
10132 {
10133 return (void*)entry_vkWaitForFences;
10134 }
10135 if (!strcmp(name, "vkCreateSemaphore"))
10136 {
10137 return (void*)entry_vkCreateSemaphore;
10138 }
10139 if (!strcmp(name, "vkDestroySemaphore"))
10140 {
10141 return (void*)entry_vkDestroySemaphore;
10142 }
10143 if (!strcmp(name, "vkCreateEvent"))
10144 {
10145 return (void*)entry_vkCreateEvent;
10146 }
10147 if (!strcmp(name, "vkDestroyEvent"))
10148 {
10149 return (void*)entry_vkDestroyEvent;
10150 }
10151 if (!strcmp(name, "vkGetEventStatus"))
10152 {
10153 return (void*)entry_vkGetEventStatus;
10154 }
10155 if (!strcmp(name, "vkSetEvent"))
10156 {
10157 return (void*)entry_vkSetEvent;
10158 }
10159 if (!strcmp(name, "vkResetEvent"))
10160 {
10161 return (void*)entry_vkResetEvent;
10162 }
10163 if (!strcmp(name, "vkCreateQueryPool"))
10164 {
10165 return (void*)entry_vkCreateQueryPool;
10166 }
10167 if (!strcmp(name, "vkDestroyQueryPool"))
10168 {
10169 return (void*)entry_vkDestroyQueryPool;
10170 }
10171 if (!strcmp(name, "vkGetQueryPoolResults"))
10172 {
10173 return (void*)entry_vkGetQueryPoolResults;
10174 }
10175 if (!strcmp(name, "vkCreateBuffer"))
10176 {
10177 return (void*)entry_vkCreateBuffer;
10178 }
10179 if (!strcmp(name, "vkDestroyBuffer"))
10180 {
10181 return (void*)entry_vkDestroyBuffer;
10182 }
10183 if (!strcmp(name, "vkCreateBufferView"))
10184 {
10185 return (void*)entry_vkCreateBufferView;
10186 }
10187 if (!strcmp(name, "vkDestroyBufferView"))
10188 {
10189 return (void*)entry_vkDestroyBufferView;
10190 }
10191 if (!strcmp(name, "vkCreateImage"))
10192 {
10193 return (void*)entry_vkCreateImage;
10194 }
10195 if (!strcmp(name, "vkDestroyImage"))
10196 {
10197 return (void*)entry_vkDestroyImage;
10198 }
10199 if (!strcmp(name, "vkGetImageSubresourceLayout"))
10200 {
10201 return (void*)entry_vkGetImageSubresourceLayout;
10202 }
10203 if (!strcmp(name, "vkCreateImageView"))
10204 {
10205 return (void*)entry_vkCreateImageView;
10206 }
10207 if (!strcmp(name, "vkDestroyImageView"))
10208 {
10209 return (void*)entry_vkDestroyImageView;
10210 }
10211 if (!strcmp(name, "vkCreateShaderModule"))
10212 {
10213 return (void*)entry_vkCreateShaderModule;
10214 }
10215 if (!strcmp(name, "vkDestroyShaderModule"))
10216 {
10217 return (void*)entry_vkDestroyShaderModule;
10218 }
10219 if (!strcmp(name, "vkCreatePipelineCache"))
10220 {
10221 return (void*)entry_vkCreatePipelineCache;
10222 }
10223 if (!strcmp(name, "vkDestroyPipelineCache"))
10224 {
10225 return (void*)entry_vkDestroyPipelineCache;
10226 }
10227 if (!strcmp(name, "vkGetPipelineCacheData"))
10228 {
10229 return (void*)entry_vkGetPipelineCacheData;
10230 }
10231 if (!strcmp(name, "vkMergePipelineCaches"))
10232 {
10233 return (void*)entry_vkMergePipelineCaches;
10234 }
10235 if (!strcmp(name, "vkCreateGraphicsPipelines"))
10236 {
10237 return (void*)entry_vkCreateGraphicsPipelines;
10238 }
10239 if (!strcmp(name, "vkCreateComputePipelines"))
10240 {
10241 return (void*)entry_vkCreateComputePipelines;
10242 }
10243 if (!strcmp(name, "vkDestroyPipeline"))
10244 {
10245 return (void*)entry_vkDestroyPipeline;
10246 }
10247 if (!strcmp(name, "vkCreatePipelineLayout"))
10248 {
10249 return (void*)entry_vkCreatePipelineLayout;
10250 }
10251 if (!strcmp(name, "vkDestroyPipelineLayout"))
10252 {
10253 return (void*)entry_vkDestroyPipelineLayout;
10254 }
10255 if (!strcmp(name, "vkCreateSampler"))
10256 {
10257 return (void*)entry_vkCreateSampler;
10258 }
10259 if (!strcmp(name, "vkDestroySampler"))
10260 {
10261 return (void*)entry_vkDestroySampler;
10262 }
10263 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
10264 {
10265 return (void*)entry_vkCreateDescriptorSetLayout;
10266 }
10267 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
10268 {
10269 return (void*)entry_vkDestroyDescriptorSetLayout;
10270 }
10271 if (!strcmp(name, "vkCreateDescriptorPool"))
10272 {
10273 return (void*)entry_vkCreateDescriptorPool;
10274 }
10275 if (!strcmp(name, "vkDestroyDescriptorPool"))
10276 {
10277 return (void*)entry_vkDestroyDescriptorPool;
10278 }
10279 if (!strcmp(name, "vkResetDescriptorPool"))
10280 {
10281 return (void*)entry_vkResetDescriptorPool;
10282 }
10283 if (!strcmp(name, "vkAllocateDescriptorSets"))
10284 {
10285 return (void*)entry_vkAllocateDescriptorSets;
10286 }
10287 if (!strcmp(name, "vkFreeDescriptorSets"))
10288 {
10289 return (void*)entry_vkFreeDescriptorSets;
10290 }
10291 if (!strcmp(name, "vkUpdateDescriptorSets"))
10292 {
10293 return (void*)entry_vkUpdateDescriptorSets;
10294 }
10295 if (!strcmp(name, "vkCreateFramebuffer"))
10296 {
10297 return (void*)entry_vkCreateFramebuffer;
10298 }
10299 if (!strcmp(name, "vkDestroyFramebuffer"))
10300 {
10301 return (void*)entry_vkDestroyFramebuffer;
10302 }
10303 if (!strcmp(name, "vkCreateRenderPass"))
10304 {
10305 return (void*)entry_vkCreateRenderPass;
10306 }
10307 if (!strcmp(name, "vkDestroyRenderPass"))
10308 {
10309 return (void*)entry_vkDestroyRenderPass;
10310 }
10311 if (!strcmp(name, "vkGetRenderAreaGranularity"))
10312 {
10313 return (void*)entry_vkGetRenderAreaGranularity;
10314 }
10315 if (!strcmp(name, "vkCreateCommandPool"))
10316 {
10317 return (void*)entry_vkCreateCommandPool;
10318 }
10319 if (!strcmp(name, "vkDestroyCommandPool"))
10320 {
10321 return (void*)entry_vkDestroyCommandPool;
10322 }
10323 if (!strcmp(name, "vkResetCommandPool"))
10324 {
10325 return (void*)entry_vkResetCommandPool;
10326 }
10327 if (!strcmp(name, "vkAllocateCommandBuffers"))
10328 {
10329 return (void*)entry_vkAllocateCommandBuffers;
10330 }
10331 if (!strcmp(name, "vkFreeCommandBuffers"))
10332 {
10333 return (void*)entry_vkFreeCommandBuffers;
10334 }
10335 if (!strcmp(name, "vkBeginCommandBuffer"))
10336 {
10337 return (void*)entry_vkBeginCommandBuffer;
10338 }
10339 if (!strcmp(name, "vkEndCommandBuffer"))
10340 {
10341 return (void*)entry_vkEndCommandBuffer;
10342 }
10343 if (!strcmp(name, "vkResetCommandBuffer"))
10344 {
10345 return (void*)entry_vkResetCommandBuffer;
10346 }
10347 if (!strcmp(name, "vkCmdBindPipeline"))
10348 {
10349 return (void*)entry_vkCmdBindPipeline;
10350 }
10351 if (!strcmp(name, "vkCmdSetViewport"))
10352 {
10353 return (void*)entry_vkCmdSetViewport;
10354 }
10355 if (!strcmp(name, "vkCmdSetScissor"))
10356 {
10357 return (void*)entry_vkCmdSetScissor;
10358 }
10359 if (!strcmp(name, "vkCmdSetLineWidth"))
10360 {
10361 return (void*)entry_vkCmdSetLineWidth;
10362 }
10363 if (!strcmp(name, "vkCmdSetDepthBias"))
10364 {
10365 return (void*)entry_vkCmdSetDepthBias;
10366 }
10367 if (!strcmp(name, "vkCmdSetBlendConstants"))
10368 {
10369 return (void*)entry_vkCmdSetBlendConstants;
10370 }
10371 if (!strcmp(name, "vkCmdSetDepthBounds"))
10372 {
10373 return (void*)entry_vkCmdSetDepthBounds;
10374 }
10375 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
10376 {
10377 return (void*)entry_vkCmdSetStencilCompareMask;
10378 }
10379 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
10380 {
10381 return (void*)entry_vkCmdSetStencilWriteMask;
10382 }
10383 if (!strcmp(name, "vkCmdSetStencilReference"))
10384 {
10385 return (void*)entry_vkCmdSetStencilReference;
10386 }
10387 if (!strcmp(name, "vkCmdBindDescriptorSets"))
10388 {
10389 return (void*)entry_vkCmdBindDescriptorSets;
10390 }
10391 if (!strcmp(name, "vkCmdBindIndexBuffer"))
10392 {
10393 return (void*)entry_vkCmdBindIndexBuffer;
10394 }
10395 if (!strcmp(name, "vkCmdBindVertexBuffers"))
10396 {
10397 return (void*)entry_vkCmdBindVertexBuffers;
10398 }
10399 if (!strcmp(name, "vkCmdDraw"))
10400 {
10401 return (void*)entry_vkCmdDraw;
10402 }
10403 if (!strcmp(name, "vkCmdDrawIndexed"))
10404 {
10405 return (void*)entry_vkCmdDrawIndexed;
10406 }
10407 if (!strcmp(name, "vkCmdDrawIndirect"))
10408 {
10409 return (void*)entry_vkCmdDrawIndirect;
10410 }
10411 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
10412 {
10413 return (void*)entry_vkCmdDrawIndexedIndirect;
10414 }
10415 if (!strcmp(name, "vkCmdDispatch"))
10416 {
10417 return (void*)entry_vkCmdDispatch;
10418 }
10419 if (!strcmp(name, "vkCmdDispatchIndirect"))
10420 {
10421 return (void*)entry_vkCmdDispatchIndirect;
10422 }
10423 if (!strcmp(name, "vkCmdCopyBuffer"))
10424 {
10425 return (void*)entry_vkCmdCopyBuffer;
10426 }
10427 if (!strcmp(name, "vkCmdCopyImage"))
10428 {
10429 return (void*)entry_vkCmdCopyImage;
10430 }
10431 if (!strcmp(name, "vkCmdBlitImage"))
10432 {
10433 return (void*)entry_vkCmdBlitImage;
10434 }
10435 if (!strcmp(name, "vkCmdCopyBufferToImage"))
10436 {
10437 return (void*)entry_vkCmdCopyBufferToImage;
10438 }
10439 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
10440 {
10441 return (void*)entry_vkCmdCopyImageToBuffer;
10442 }
10443 if (!strcmp(name, "vkCmdUpdateBuffer"))
10444 {
10445 return (void*)entry_vkCmdUpdateBuffer;
10446 }
10447 if (!strcmp(name, "vkCmdFillBuffer"))
10448 {
10449 return (void*)entry_vkCmdFillBuffer;
10450 }
10451 if (!strcmp(name, "vkCmdClearColorImage"))
10452 {
10453 return (void*)entry_vkCmdClearColorImage;
10454 }
10455 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
10456 {
10457 return (void*)entry_vkCmdClearDepthStencilImage;
10458 }
10459 if (!strcmp(name, "vkCmdClearAttachments"))
10460 {
10461 return (void*)entry_vkCmdClearAttachments;
10462 }
10463 if (!strcmp(name, "vkCmdResolveImage"))
10464 {
10465 return (void*)entry_vkCmdResolveImage;
10466 }
10467 if (!strcmp(name, "vkCmdSetEvent"))
10468 {
10469 return (void*)entry_vkCmdSetEvent;
10470 }
10471 if (!strcmp(name, "vkCmdResetEvent"))
10472 {
10473 return (void*)entry_vkCmdResetEvent;
10474 }
10475 if (!strcmp(name, "vkCmdWaitEvents"))
10476 {
10477 return (void*)entry_vkCmdWaitEvents;
10478 }
10479 if (!strcmp(name, "vkCmdPipelineBarrier"))
10480 {
10481 return (void*)entry_vkCmdPipelineBarrier;
10482 }
10483 if (!strcmp(name, "vkCmdBeginQuery"))
10484 {
10485 return (void*)entry_vkCmdBeginQuery;
10486 }
10487 if (!strcmp(name, "vkCmdEndQuery"))
10488 {
10489 return (void*)entry_vkCmdEndQuery;
10490 }
10491 if (!strcmp(name, "vkCmdResetQueryPool"))
10492 {
10493 return (void*)entry_vkCmdResetQueryPool;
10494 }
10495 if (!strcmp(name, "vkCmdWriteTimestamp"))
10496 {
10497 return (void*)entry_vkCmdWriteTimestamp;
10498 }
10499 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
10500 {
10501 return (void*)entry_vkCmdCopyQueryPoolResults;
10502 }
10503 if (!strcmp(name, "vkCmdPushConstants"))
10504 {
10505 return (void*)entry_vkCmdPushConstants;
10506 }
10507 if (!strcmp(name, "vkCmdBeginRenderPass"))
10508 {
10509 return (void*)entry_vkCmdBeginRenderPass;
10510 }
10511 if (!strcmp(name, "vkCmdNextSubpass"))
10512 {
10513 return (void*)entry_vkCmdNextSubpass;
10514 }
10515 if (!strcmp(name, "vkCmdEndRenderPass"))
10516 {
10517 return (void*)entry_vkCmdEndRenderPass;
10518 }
10519 if (!strcmp(name, "vkCmdExecuteCommands"))
10520 {
10521 return (void*)entry_vkCmdExecuteCommands;
10522 }
10523#endif
10524#ifdef VK_VERSION_1_1
10525 if (!strcmp(name, "vkEnumerateInstanceVersion"))
10526 {
10527 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
10528 }
10529 if (!strcmp(name, "vkBindBufferMemory2"))
10530 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010531 return (void*)dynCheck_entry_vkBindBufferMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010532 }
10533 if (!strcmp(name, "vkBindImageMemory2"))
10534 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010535 return (void*)dynCheck_entry_vkBindImageMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010536 }
10537 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
10538 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010539 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010540 }
10541 if (!strcmp(name, "vkCmdSetDeviceMask"))
10542 {
10543 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
10544 }
10545 if (!strcmp(name, "vkCmdDispatchBase"))
10546 {
10547 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
10548 }
10549 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
10550 {
10551 return nullptr;
10552 }
10553 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
10554 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010555 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010556 }
10557 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
10558 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010559 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010560 }
10561 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
10562 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010563 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010564 }
10565 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
10566 {
10567 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
10568 }
10569 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
10570 {
10571 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
10572 }
10573 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
10574 {
10575 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
10576 }
10577 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
10578 {
10579 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
10580 }
10581 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
10582 {
10583 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
10584 }
10585 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
10586 {
10587 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
10588 }
10589 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
10590 {
10591 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
10592 }
10593 if (!strcmp(name, "vkTrimCommandPool"))
10594 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010595 return (void*)dynCheck_entry_vkTrimCommandPool;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010596 }
10597 if (!strcmp(name, "vkGetDeviceQueue2"))
10598 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010599 return (void*)dynCheck_entry_vkGetDeviceQueue2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010600 }
10601 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
10602 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010603 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010604 }
10605 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
10606 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010607 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010608 }
10609 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
10610 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010611 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010612 }
10613 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
10614 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010615 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010616 }
10617 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
10618 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010619 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010620 }
10621 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
10622 {
10623 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
10624 }
10625 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
10626 {
10627 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
10628 }
10629 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
10630 {
10631 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
10632 }
10633 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
10634 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010635 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010636 }
10637#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010638#ifdef VK_VERSION_1_2
10639 if (!strcmp(name, "vkCmdDrawIndirectCount"))
10640 {
10641 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10642 return hasExt ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
10643 }
10644 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
10645 {
10646 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10647 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
10648 }
10649 if (!strcmp(name, "vkCreateRenderPass2"))
10650 {
10651 return (void*)dynCheck_entry_vkCreateRenderPass2;
10652 }
10653 if (!strcmp(name, "vkCmdBeginRenderPass2"))
10654 {
10655 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10656 return hasExt ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
10657 }
10658 if (!strcmp(name, "vkCmdNextSubpass2"))
10659 {
10660 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10661 return hasExt ? (void*)entry_vkCmdNextSubpass2 : nullptr;
10662 }
10663 if (!strcmp(name, "vkCmdEndRenderPass2"))
10664 {
10665 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10666 return hasExt ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
10667 }
10668 if (!strcmp(name, "vkResetQueryPool"))
10669 {
10670 return (void*)dynCheck_entry_vkResetQueryPool;
10671 }
10672 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
10673 {
10674 return (void*)dynCheck_entry_vkGetSemaphoreCounterValue;
10675 }
10676 if (!strcmp(name, "vkWaitSemaphores"))
10677 {
10678 return (void*)dynCheck_entry_vkWaitSemaphores;
10679 }
10680 if (!strcmp(name, "vkSignalSemaphore"))
10681 {
10682 return (void*)dynCheck_entry_vkSignalSemaphore;
10683 }
10684 if (!strcmp(name, "vkGetBufferDeviceAddress"))
10685 {
10686 return (void*)dynCheck_entry_vkGetBufferDeviceAddress;
10687 }
10688 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
10689 {
10690 return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddress;
10691 }
10692 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
10693 {
10694 return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress;
10695 }
10696#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010697#ifdef VK_KHR_surface
10698 if (!strcmp(name, "vkDestroySurfaceKHR"))
10699 {
10700 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10701 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
10702 }
10703 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
10704 {
10705 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10706 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
10707 }
10708 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
10709 {
10710 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10711 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
10712 }
10713 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
10714 {
10715 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10716 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
10717 }
10718 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
10719 {
10720 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10721 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
10722 }
10723#endif
10724#ifdef VK_KHR_swapchain
10725 if (!strcmp(name, "vkCreateSwapchainKHR"))
10726 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010727 return (void*)dynCheck_entry_vkCreateSwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010728 }
10729 if (!strcmp(name, "vkDestroySwapchainKHR"))
10730 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010731 return (void*)dynCheck_entry_vkDestroySwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010732 }
10733 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
10734 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010735 return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010736 }
10737 if (!strcmp(name, "vkAcquireNextImageKHR"))
10738 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010739 return (void*)dynCheck_entry_vkAcquireNextImageKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010740 }
10741 if (!strcmp(name, "vkQueuePresentKHR"))
10742 {
10743 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
10744 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
10745 }
10746 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
10747 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010748 return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010749 }
10750 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
10751 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010752 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010753 }
10754 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
10755 {
10756 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
10757 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
10758 }
10759 if (!strcmp(name, "vkAcquireNextImage2KHR"))
10760 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010761 return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010762 }
10763#endif
10764#ifdef VK_KHR_display
10765 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
10766 {
10767 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10768 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
10769 }
10770 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
10771 {
10772 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10773 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
10774 }
10775 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
10776 {
10777 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10778 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
10779 }
10780 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
10781 {
10782 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10783 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
10784 }
10785 if (!strcmp(name, "vkCreateDisplayModeKHR"))
10786 {
10787 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10788 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
10789 }
10790 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
10791 {
10792 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10793 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
10794 }
10795 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
10796 {
10797 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10798 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
10799 }
10800#endif
10801#ifdef VK_KHR_display_swapchain
10802 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
10803 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010804 return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010805 }
10806#endif
10807#ifdef VK_KHR_xlib_surface
10808 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
10809 {
10810 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
10811 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
10812 }
10813 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
10814 {
10815 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
10816 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
10817 }
10818#endif
10819#ifdef VK_KHR_xcb_surface
10820 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
10821 {
10822 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
10823 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
10824 }
10825 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
10826 {
10827 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
10828 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
10829 }
10830#endif
10831#ifdef VK_KHR_wayland_surface
10832 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
10833 {
10834 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
10835 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
10836 }
10837 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
10838 {
10839 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
10840 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
10841 }
10842#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010843#ifdef VK_KHR_android_surface
10844 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
10845 {
10846 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
10847 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
10848 }
10849#endif
10850#ifdef VK_KHR_win32_surface
10851 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
10852 {
10853 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
10854 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
10855 }
10856 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
10857 {
10858 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
10859 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
10860 }
10861#endif
10862#ifdef VK_KHR_get_physical_device_properties2
10863 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
10864 {
10865 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10866 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
10867 }
10868 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
10869 {
10870 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10871 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
10872 }
10873 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
10874 {
10875 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10876 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
10877 }
10878 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
10879 {
10880 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10881 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
10882 }
10883 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
10884 {
10885 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10886 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
10887 }
10888 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
10889 {
10890 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10891 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
10892 }
10893 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
10894 {
10895 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10896 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
10897 }
10898#endif
10899#ifdef VK_KHR_device_group
10900 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
10901 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010902 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010903 }
10904 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
10905 {
10906 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
10907 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
10908 }
10909 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
10910 {
10911 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
10912 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
10913 }
10914#endif
10915#ifdef VK_KHR_maintenance1
10916 if (!strcmp(name, "vkTrimCommandPoolKHR"))
10917 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010918 return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010919 }
10920#endif
10921#ifdef VK_KHR_device_group_creation
10922 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
10923 {
10924 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
10925 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
10926 }
10927#endif
10928#ifdef VK_KHR_external_memory_capabilities
10929 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
10930 {
10931 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
10932 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
10933 }
10934#endif
10935#ifdef VK_KHR_external_memory_win32
10936 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
10937 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010938 return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010939 }
10940 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
10941 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010942 return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010943 }
10944#endif
10945#ifdef VK_KHR_external_memory_fd
10946 if (!strcmp(name, "vkGetMemoryFdKHR"))
10947 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010948 return (void*)dynCheck_entry_vkGetMemoryFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010949 }
10950 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
10951 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010952 return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010953 }
10954#endif
10955#ifdef VK_KHR_external_semaphore_capabilities
10956 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
10957 {
10958 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
10959 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
10960 }
10961#endif
10962#ifdef VK_KHR_external_semaphore_win32
10963 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
10964 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010965 return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010966 }
10967 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
10968 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010969 return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010970 }
10971#endif
10972#ifdef VK_KHR_external_semaphore_fd
10973 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
10974 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010975 return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010976 }
10977 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
10978 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010979 return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010980 }
10981#endif
10982#ifdef VK_KHR_push_descriptor
10983 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
10984 {
10985 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
10986 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
10987 }
10988 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
10989 {
10990 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
10991 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
10992 }
10993#endif
10994#ifdef VK_KHR_descriptor_update_template
10995 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
10996 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010997 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010998 }
10999 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
11000 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011001 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011002 }
11003 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
11004 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011005 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011006 }
11007#endif
11008#ifdef VK_KHR_create_renderpass2
11009 if (!strcmp(name, "vkCreateRenderPass2KHR"))
11010 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011011 return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011012 }
11013 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
11014 {
11015 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
11016 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
11017 }
11018 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
11019 {
11020 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
11021 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
11022 }
11023 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
11024 {
11025 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
11026 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
11027 }
11028#endif
11029#ifdef VK_KHR_shared_presentable_image
11030 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
11031 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011032 return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011033 }
11034#endif
11035#ifdef VK_KHR_external_fence_capabilities
11036 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
11037 {
11038 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
11039 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
11040 }
11041#endif
11042#ifdef VK_KHR_external_fence_win32
11043 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
11044 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011045 return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011046 }
11047 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
11048 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011049 return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011050 }
11051#endif
11052#ifdef VK_KHR_external_fence_fd
11053 if (!strcmp(name, "vkImportFenceFdKHR"))
11054 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011055 return (void*)dynCheck_entry_vkImportFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011056 }
11057 if (!strcmp(name, "vkGetFenceFdKHR"))
11058 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011059 return (void*)dynCheck_entry_vkGetFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011060 }
11061#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011062#ifdef VK_KHR_performance_query
11063 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
11064 {
11065 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
11066 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
11067 }
11068 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
11069 {
11070 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
11071 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
11072 }
11073 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
11074 {
11075 return (void*)dynCheck_entry_vkAcquireProfilingLockKHR;
11076 }
11077 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
11078 {
11079 return (void*)dynCheck_entry_vkReleaseProfilingLockKHR;
11080 }
11081#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011082#ifdef VK_KHR_get_surface_capabilities2
11083 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
11084 {
11085 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
11086 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
11087 }
11088 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
11089 {
11090 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
11091 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
11092 }
11093#endif
11094#ifdef VK_KHR_get_display_properties2
11095 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
11096 {
11097 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11098 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
11099 }
11100 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
11101 {
11102 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11103 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
11104 }
11105 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
11106 {
11107 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11108 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
11109 }
11110 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
11111 {
11112 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11113 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
11114 }
11115#endif
11116#ifdef VK_KHR_get_memory_requirements2
11117 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
11118 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011119 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011120 }
11121 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
11122 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011123 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011124 }
11125 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
11126 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011127 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011128 }
11129#endif
11130#ifdef VK_KHR_sampler_ycbcr_conversion
11131 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
11132 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011133 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011134 }
11135 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
11136 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011137 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011138 }
11139#endif
11140#ifdef VK_KHR_bind_memory2
11141 if (!strcmp(name, "vkBindBufferMemory2KHR"))
11142 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011143 return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011144 }
11145 if (!strcmp(name, "vkBindImageMemory2KHR"))
11146 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011147 return (void*)dynCheck_entry_vkBindImageMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011148 }
11149#endif
11150#ifdef VK_KHR_maintenance3
11151 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
11152 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011153 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011154 }
11155#endif
11156#ifdef VK_KHR_draw_indirect_count
11157 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
11158 {
11159 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
11160 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
11161 }
11162 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
11163 {
11164 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
11165 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
11166 }
11167#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011168#ifdef VK_KHR_timeline_semaphore
11169 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
11170 {
11171 return (void*)dynCheck_entry_vkGetSemaphoreCounterValueKHR;
11172 }
11173 if (!strcmp(name, "vkWaitSemaphoresKHR"))
11174 {
11175 return (void*)dynCheck_entry_vkWaitSemaphoresKHR;
11176 }
11177 if (!strcmp(name, "vkSignalSemaphoreKHR"))
11178 {
11179 return (void*)dynCheck_entry_vkSignalSemaphoreKHR;
11180 }
11181#endif
11182#ifdef VK_KHR_fragment_shading_rate
11183 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
11184 {
11185 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_fragment_shading_rate");
11186 return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
11187 }
11188 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
11189 {
11190 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_fragment_shading_rate");
11191 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateKHR : nullptr;
11192 }
11193#endif
11194#ifdef VK_KHR_buffer_device_address
11195 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
11196 {
11197 return (void*)dynCheck_entry_vkGetBufferDeviceAddressKHR;
11198 }
11199 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
11200 {
11201 return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR;
11202 }
11203 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
11204 {
11205 return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR;
11206 }
11207#endif
11208#ifdef VK_KHR_deferred_host_operations
11209 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
11210 {
11211 return (void*)dynCheck_entry_vkCreateDeferredOperationKHR;
11212 }
11213 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
11214 {
11215 return (void*)dynCheck_entry_vkDestroyDeferredOperationKHR;
11216 }
11217 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
11218 {
11219 return (void*)dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR;
11220 }
11221 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
11222 {
11223 return (void*)dynCheck_entry_vkGetDeferredOperationResultKHR;
11224 }
11225 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
11226 {
11227 return (void*)dynCheck_entry_vkDeferredOperationJoinKHR;
11228 }
11229#endif
11230#ifdef VK_KHR_pipeline_executable_properties
11231 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
11232 {
11233 return (void*)dynCheck_entry_vkGetPipelineExecutablePropertiesKHR;
11234 }
11235 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
11236 {
11237 return (void*)dynCheck_entry_vkGetPipelineExecutableStatisticsKHR;
11238 }
11239 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
11240 {
11241 return (void*)dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR;
11242 }
11243#endif
11244#ifdef VK_KHR_copy_commands2
11245 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
11246 {
11247 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11248 return hasExt ? (void*)entry_vkCmdCopyBuffer2KHR : nullptr;
11249 }
11250 if (!strcmp(name, "vkCmdCopyImage2KHR"))
11251 {
11252 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11253 return hasExt ? (void*)entry_vkCmdCopyImage2KHR : nullptr;
11254 }
11255 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
11256 {
11257 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11258 return hasExt ? (void*)entry_vkCmdCopyBufferToImage2KHR : nullptr;
11259 }
11260 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
11261 {
11262 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11263 return hasExt ? (void*)entry_vkCmdCopyImageToBuffer2KHR : nullptr;
11264 }
11265 if (!strcmp(name, "vkCmdBlitImage2KHR"))
11266 {
11267 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11268 return hasExt ? (void*)entry_vkCmdBlitImage2KHR : nullptr;
11269 }
11270 if (!strcmp(name, "vkCmdResolveImage2KHR"))
11271 {
11272 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11273 return hasExt ? (void*)entry_vkCmdResolveImage2KHR : nullptr;
11274 }
11275#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011276#ifdef VK_ANDROID_native_buffer
11277 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
11278 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011279 return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011280 }
11281 if (!strcmp(name, "vkAcquireImageANDROID"))
11282 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011283 return (void*)dynCheck_entry_vkAcquireImageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011284 }
11285 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
11286 {
11287 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
11288 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
11289 }
11290#endif
11291#ifdef VK_EXT_debug_report
11292 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
11293 {
11294 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
11295 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
11296 }
11297 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
11298 {
11299 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
11300 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
11301 }
11302 if (!strcmp(name, "vkDebugReportMessageEXT"))
11303 {
11304 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
11305 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
11306 }
11307#endif
11308#ifdef VK_EXT_debug_marker
11309 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
11310 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011311 return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011312 }
11313 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
11314 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011315 return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011316 }
11317 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
11318 {
11319 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
11320 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
11321 }
11322 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
11323 {
11324 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
11325 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
11326 }
11327 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
11328 {
11329 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
11330 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
11331 }
11332#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011333#ifdef VK_EXT_transform_feedback
11334 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
11335 {
11336 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11337 return hasExt ? (void*)entry_vkCmdBindTransformFeedbackBuffersEXT : nullptr;
11338 }
11339 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
11340 {
11341 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11342 return hasExt ? (void*)entry_vkCmdBeginTransformFeedbackEXT : nullptr;
11343 }
11344 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
11345 {
11346 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11347 return hasExt ? (void*)entry_vkCmdEndTransformFeedbackEXT : nullptr;
11348 }
11349 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
11350 {
11351 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11352 return hasExt ? (void*)entry_vkCmdBeginQueryIndexedEXT : nullptr;
11353 }
11354 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
11355 {
11356 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11357 return hasExt ? (void*)entry_vkCmdEndQueryIndexedEXT : nullptr;
11358 }
11359 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
11360 {
11361 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11362 return hasExt ? (void*)entry_vkCmdDrawIndirectByteCountEXT : nullptr;
11363 }
11364#endif
11365#ifdef VK_NVX_image_view_handle
11366 if (!strcmp(name, "vkGetImageViewHandleNVX"))
11367 {
11368 return (void*)dynCheck_entry_vkGetImageViewHandleNVX;
11369 }
11370 if (!strcmp(name, "vkGetImageViewAddressNVX"))
11371 {
11372 return (void*)dynCheck_entry_vkGetImageViewAddressNVX;
11373 }
11374#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011375#ifdef VK_AMD_draw_indirect_count
11376 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
11377 {
11378 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
11379 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
11380 }
11381 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
11382 {
11383 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
11384 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
11385 }
11386#endif
11387#ifdef VK_AMD_shader_info
11388 if (!strcmp(name, "vkGetShaderInfoAMD"))
11389 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011390 return (void*)dynCheck_entry_vkGetShaderInfoAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011391 }
11392#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011393#ifdef VK_GGP_stream_descriptor_surface
11394 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
11395 {
11396 bool hasExt = resources->hasInstanceExtension(instance, "VK_GGP_stream_descriptor_surface");
11397 return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
11398 }
11399#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011400#ifdef VK_NV_external_memory_capabilities
11401 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
11402 {
11403 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
11404 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
11405 }
11406#endif
11407#ifdef VK_NV_external_memory_win32
11408 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
11409 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011410 return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011411 }
11412#endif
11413#ifdef VK_NN_vi_surface
11414 if (!strcmp(name, "vkCreateViSurfaceNN"))
11415 {
11416 bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
11417 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
11418 }
11419#endif
11420#ifdef VK_EXT_conditional_rendering
11421 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
11422 {
11423 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
11424 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
11425 }
11426 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
11427 {
11428 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
11429 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
11430 }
11431#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011432#ifdef VK_NV_clip_space_w_scaling
11433 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
11434 {
11435 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling");
11436 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
11437 }
11438#endif
11439#ifdef VK_EXT_direct_mode_display
11440 if (!strcmp(name, "vkReleaseDisplayEXT"))
11441 {
11442 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
11443 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
11444 }
11445#endif
11446#ifdef VK_EXT_acquire_xlib_display
11447 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
11448 {
11449 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
11450 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
11451 }
11452 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
11453 {
11454 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
11455 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
11456 }
11457#endif
11458#ifdef VK_EXT_display_surface_counter
11459 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
11460 {
11461 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
11462 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
11463 }
11464#endif
11465#ifdef VK_EXT_display_control
11466 if (!strcmp(name, "vkDisplayPowerControlEXT"))
11467 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011468 return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011469 }
11470 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
11471 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011472 return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011473 }
11474 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
11475 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011476 return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011477 }
11478 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
11479 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011480 return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011481 }
11482#endif
11483#ifdef VK_GOOGLE_display_timing
11484 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
11485 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011486 return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011487 }
11488 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
11489 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011490 return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011491 }
11492#endif
11493#ifdef VK_EXT_discard_rectangles
11494 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
11495 {
11496 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles");
11497 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
11498 }
11499#endif
11500#ifdef VK_EXT_hdr_metadata
11501 if (!strcmp(name, "vkSetHdrMetadataEXT"))
11502 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011503 return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011504 }
11505#endif
11506#ifdef VK_MVK_ios_surface
11507 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
11508 {
11509 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
11510 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
11511 }
11512#endif
11513#ifdef VK_MVK_macos_surface
11514 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
11515 {
11516 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
11517 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
11518 }
11519#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011520#ifdef VK_MVK_moltenvk
11521 if (!strcmp(name, "vkGetMTLDeviceMVK"))
11522 {
11523 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11524 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
11525 }
11526 if (!strcmp(name, "vkSetMTLTextureMVK"))
11527 {
11528 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11529 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
11530 }
11531 if (!strcmp(name, "vkGetMTLTextureMVK"))
11532 {
11533 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11534 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
11535 }
11536 if (!strcmp(name, "vkGetMTLBufferMVK"))
11537 {
11538 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11539 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
11540 }
11541 if (!strcmp(name, "vkUseIOSurfaceMVK"))
11542 {
11543 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11544 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
11545 }
11546 if (!strcmp(name, "vkGetIOSurfaceMVK"))
11547 {
11548 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11549 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
11550 }
11551#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011552#ifdef VK_EXT_debug_utils
11553 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
11554 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011555 return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011556 }
11557 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
11558 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011559 return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011560 }
11561 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
11562 {
11563 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11564 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
11565 }
11566 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
11567 {
11568 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11569 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
11570 }
11571 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
11572 {
11573 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11574 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
11575 }
11576 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
11577 {
11578 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11579 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
11580 }
11581 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
11582 {
11583 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11584 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
11585 }
11586 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
11587 {
11588 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11589 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
11590 }
11591 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
11592 {
11593 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11594 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
11595 }
11596 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
11597 {
11598 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11599 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
11600 }
11601 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
11602 {
11603 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11604 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
11605 }
11606#endif
11607#ifdef VK_ANDROID_external_memory_android_hardware_buffer
11608 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
11609 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011610 return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011611 }
11612 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
11613 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011614 return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011615 }
11616#endif
11617#ifdef VK_EXT_sample_locations
11618 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
11619 {
11620 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
11621 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
11622 }
11623 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
11624 {
11625 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
11626 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
11627 }
11628#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011629#ifdef VK_EXT_image_drm_format_modifier
11630 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
11631 {
11632 return (void*)dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT;
11633 }
11634#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011635#ifdef VK_EXT_validation_cache
11636 if (!strcmp(name, "vkCreateValidationCacheEXT"))
11637 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011638 return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011639 }
11640 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
11641 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011642 return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011643 }
11644 if (!strcmp(name, "vkMergeValidationCachesEXT"))
11645 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011646 return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011647 }
11648 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
11649 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011650 return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011651 }
11652#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011653#ifdef VK_NV_shading_rate_image
11654 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
11655 {
11656 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
11657 return hasExt ? (void*)entry_vkCmdBindShadingRateImageNV : nullptr;
11658 }
11659 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
11660 {
11661 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
11662 return hasExt ? (void*)entry_vkCmdSetViewportShadingRatePaletteNV : nullptr;
11663 }
11664 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
11665 {
11666 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
11667 return hasExt ? (void*)entry_vkCmdSetCoarseSampleOrderNV : nullptr;
11668 }
11669#endif
11670#ifdef VK_NV_ray_tracing
11671 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
11672 {
11673 return (void*)dynCheck_entry_vkCreateAccelerationStructureNV;
11674 }
11675 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
11676 {
11677 return (void*)dynCheck_entry_vkDestroyAccelerationStructureNV;
11678 }
11679 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
11680 {
11681 return (void*)dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV;
11682 }
11683 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
11684 {
11685 return (void*)dynCheck_entry_vkBindAccelerationStructureMemoryNV;
11686 }
11687 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
11688 {
11689 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11690 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructureNV : nullptr;
11691 }
11692 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
11693 {
11694 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11695 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureNV : nullptr;
11696 }
11697 if (!strcmp(name, "vkCmdTraceRaysNV"))
11698 {
11699 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11700 return hasExt ? (void*)entry_vkCmdTraceRaysNV : nullptr;
11701 }
11702 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
11703 {
11704 return (void*)dynCheck_entry_vkCreateRayTracingPipelinesNV;
11705 }
11706 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
11707 {
11708 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR;
11709 }
11710 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
11711 {
11712 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV;
11713 }
11714 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
11715 {
11716 return (void*)dynCheck_entry_vkGetAccelerationStructureHandleNV;
11717 }
11718 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
11719 {
11720 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11721 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesNV : nullptr;
11722 }
11723 if (!strcmp(name, "vkCompileDeferredNV"))
11724 {
11725 return (void*)dynCheck_entry_vkCompileDeferredNV;
11726 }
11727#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011728#ifdef VK_EXT_external_memory_host
11729 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
11730 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011731 return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011732 }
11733#endif
11734#ifdef VK_AMD_buffer_marker
11735 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
11736 {
11737 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker");
11738 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
11739 }
11740#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011741#ifdef VK_EXT_calibrated_timestamps
11742 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
11743 {
11744 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_calibrated_timestamps");
11745 return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
11746 }
11747 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
11748 {
11749 return (void*)dynCheck_entry_vkGetCalibratedTimestampsEXT;
11750 }
11751#endif
11752#ifdef VK_NV_mesh_shader
11753 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
11754 {
11755 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
11756 return hasExt ? (void*)entry_vkCmdDrawMeshTasksNV : nullptr;
11757 }
11758 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
11759 {
11760 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
11761 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectNV : nullptr;
11762 }
11763 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
11764 {
11765 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
11766 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountNV : nullptr;
11767 }
11768#endif
11769#ifdef VK_NV_scissor_exclusive
11770 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
11771 {
11772 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_scissor_exclusive");
11773 return hasExt ? (void*)entry_vkCmdSetExclusiveScissorNV : nullptr;
11774 }
11775#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011776#ifdef VK_NV_device_diagnostic_checkpoints
11777 if (!strcmp(name, "vkCmdSetCheckpointNV"))
11778 {
11779 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
11780 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
11781 }
11782 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
11783 {
11784 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
11785 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
11786 }
11787#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011788#ifdef VK_INTEL_performance_query
11789 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011790 {
Yilong Lia8d45f12021-02-07 02:30:21 -080011791 return (void*)dynCheck_entry_vkInitializePerformanceApiINTEL;
11792 }
11793 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
11794 {
11795 return (void*)dynCheck_entry_vkUninitializePerformanceApiINTEL;
11796 }
11797 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
11798 {
11799 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11800 return hasExt ? (void*)entry_vkCmdSetPerformanceMarkerINTEL : nullptr;
11801 }
11802 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
11803 {
11804 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11805 return hasExt ? (void*)entry_vkCmdSetPerformanceStreamMarkerINTEL : nullptr;
11806 }
11807 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
11808 {
11809 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11810 return hasExt ? (void*)entry_vkCmdSetPerformanceOverrideINTEL : nullptr;
11811 }
11812 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
11813 {
11814 return (void*)dynCheck_entry_vkAcquirePerformanceConfigurationINTEL;
11815 }
11816 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
11817 {
11818 return (void*)dynCheck_entry_vkReleasePerformanceConfigurationINTEL;
11819 }
11820 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
11821 {
11822 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11823 return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
11824 }
11825 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
11826 {
11827 return (void*)dynCheck_entry_vkGetPerformanceParameterINTEL;
11828 }
11829#endif
11830#ifdef VK_AMD_display_native_hdr
11831 if (!strcmp(name, "vkSetLocalDimmingAMD"))
11832 {
11833 return (void*)dynCheck_entry_vkSetLocalDimmingAMD;
11834 }
11835#endif
11836#ifdef VK_FUCHSIA_imagepipe_surface
11837 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
11838 {
11839 bool hasExt = resources->hasInstanceExtension(instance, "VK_FUCHSIA_imagepipe_surface");
11840 return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
11841 }
11842#endif
11843#ifdef VK_EXT_metal_surface
11844 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
11845 {
11846 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_metal_surface");
11847 return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011848 }
11849#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080011850#ifdef VK_GOOGLE_color_buffer
11851 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
11852 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011853 return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080011854 }
11855 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
11856 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011857 return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080011858 }
11859#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011860#ifdef VK_EXT_buffer_device_address
11861 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
11862 {
11863 return (void*)dynCheck_entry_vkGetBufferDeviceAddressEXT;
11864 }
11865#endif
11866#ifdef VK_EXT_tooling_info
11867 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
11868 {
11869 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_tooling_info");
11870 return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
11871 }
11872#endif
11873#ifdef VK_NV_cooperative_matrix
11874 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
11875 {
11876 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_cooperative_matrix");
11877 return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
11878 }
11879#endif
11880#ifdef VK_NV_coverage_reduction_mode
11881 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
11882 {
11883 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_coverage_reduction_mode");
11884 return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
11885 }
11886#endif
11887#ifdef VK_EXT_full_screen_exclusive
11888 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
11889 {
11890 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_full_screen_exclusive");
11891 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
11892 }
11893 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
11894 {
11895 return (void*)dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT;
11896 }
11897 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
11898 {
11899 return (void*)dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT;
11900 }
11901 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
11902 {
11903 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT;
11904 }
11905#endif
11906#ifdef VK_EXT_headless_surface
11907 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
11908 {
11909 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_headless_surface");
11910 return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
11911 }
11912#endif
11913#ifdef VK_EXT_line_rasterization
11914 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
11915 {
11916 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_line_rasterization");
11917 return hasExt ? (void*)entry_vkCmdSetLineStippleEXT : nullptr;
11918 }
11919#endif
11920#ifdef VK_EXT_host_query_reset
11921 if (!strcmp(name, "vkResetQueryPoolEXT"))
11922 {
11923 return (void*)dynCheck_entry_vkResetQueryPoolEXT;
11924 }
11925#endif
11926#ifdef VK_EXT_extended_dynamic_state
11927 if (!strcmp(name, "vkCmdSetCullModeEXT"))
11928 {
11929 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11930 return hasExt ? (void*)entry_vkCmdSetCullModeEXT : nullptr;
11931 }
11932 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
11933 {
11934 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11935 return hasExt ? (void*)entry_vkCmdSetFrontFaceEXT : nullptr;
11936 }
11937 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
11938 {
11939 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11940 return hasExt ? (void*)entry_vkCmdSetPrimitiveTopologyEXT : nullptr;
11941 }
11942 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
11943 {
11944 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11945 return hasExt ? (void*)entry_vkCmdSetViewportWithCountEXT : nullptr;
11946 }
11947 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
11948 {
11949 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11950 return hasExt ? (void*)entry_vkCmdSetScissorWithCountEXT : nullptr;
11951 }
11952 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
11953 {
11954 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11955 return hasExt ? (void*)entry_vkCmdBindVertexBuffers2EXT : nullptr;
11956 }
11957 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
11958 {
11959 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11960 return hasExt ? (void*)entry_vkCmdSetDepthTestEnableEXT : nullptr;
11961 }
11962 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
11963 {
11964 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11965 return hasExt ? (void*)entry_vkCmdSetDepthWriteEnableEXT : nullptr;
11966 }
11967 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
11968 {
11969 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11970 return hasExt ? (void*)entry_vkCmdSetDepthCompareOpEXT : nullptr;
11971 }
11972 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
11973 {
11974 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11975 return hasExt ? (void*)entry_vkCmdSetDepthBoundsTestEnableEXT : nullptr;
11976 }
11977 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
11978 {
11979 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11980 return hasExt ? (void*)entry_vkCmdSetStencilTestEnableEXT : nullptr;
11981 }
11982 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
11983 {
11984 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11985 return hasExt ? (void*)entry_vkCmdSetStencilOpEXT : nullptr;
11986 }
11987#endif
11988#ifdef VK_NV_device_generated_commands
11989 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
11990 {
11991 return (void*)dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV;
11992 }
11993 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
11994 {
11995 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
11996 return hasExt ? (void*)entry_vkCmdPreprocessGeneratedCommandsNV : nullptr;
11997 }
11998 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
11999 {
12000 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
12001 return hasExt ? (void*)entry_vkCmdExecuteGeneratedCommandsNV : nullptr;
12002 }
12003 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
12004 {
12005 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
12006 return hasExt ? (void*)entry_vkCmdBindPipelineShaderGroupNV : nullptr;
12007 }
12008 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
12009 {
12010 return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNV;
12011 }
12012 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
12013 {
12014 return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNV;
12015 }
12016#endif
12017#ifdef VK_EXT_private_data
12018 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
12019 {
12020 return (void*)dynCheck_entry_vkCreatePrivateDataSlotEXT;
12021 }
12022 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
12023 {
12024 return (void*)dynCheck_entry_vkDestroyPrivateDataSlotEXT;
12025 }
12026 if (!strcmp(name, "vkSetPrivateDataEXT"))
12027 {
12028 return (void*)dynCheck_entry_vkSetPrivateDataEXT;
12029 }
12030 if (!strcmp(name, "vkGetPrivateDataEXT"))
12031 {
12032 return (void*)dynCheck_entry_vkGetPrivateDataEXT;
12033 }
12034#endif
12035#ifdef VK_NV_fragment_shading_rate_enums
12036 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
12037 {
12038 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_fragment_shading_rate_enums");
12039 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateEnumNV : nullptr;
12040 }
12041#endif
12042#ifdef VK_EXT_directfb_surface
12043 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
12044 {
12045 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
12046 return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
12047 }
12048 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
12049 {
12050 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
12051 return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
12052 }
12053#endif
Yilong Li71c43c52021-02-10 02:50:43 -080012054#ifdef VK_GOOGLE_gfxstream
Yilong Lia8d45f12021-02-07 02:30:21 -080012055 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
12056 {
12057 return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
12058 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070012059 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
12060 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012061 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070012062 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012063 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
12064 {
Yilong Li71c43c52021-02-10 02:50:43 -080012065 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012066 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
12067 }
12068 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
12069 {
Yilong Li71c43c52021-02-10 02:50:43 -080012070 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012071 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
12072 }
12073 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
12074 {
Yilong Li71c43c52021-02-10 02:50:43 -080012075 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012076 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
12077 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070012078 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
12079 {
Yilong Li71c43c52021-02-10 02:50:43 -080012080 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yang39a276e2019-06-17 13:27:22 -070012081 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
12082 }
Lingfeng Yang87f11962019-06-27 16:28:53 +000012083 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
12084 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012085 return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +000012086 }
12087 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
12088 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012089 return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +000012090 }
Lingfeng Yang4c542412020-02-04 18:18:32 -080012091 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
12092 {
12093 return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE;
12094 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070012095 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
12096 {
12097 return (void*)dynCheck_entry_vkFreeMemorySyncGOOGLE;
12098 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012099 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
12100 {
Yilong Li71c43c52021-02-10 02:50:43 -080012101 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012102 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
12103 }
12104 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
12105 {
Yilong Li71c43c52021-02-10 02:50:43 -080012106 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012107 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
12108 }
12109 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
12110 {
Yilong Li71c43c52021-02-10 02:50:43 -080012111 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012112 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
12113 }
12114 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
12115 {
Yilong Li71c43c52021-02-10 02:50:43 -080012116 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012117 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
12118 }
Yilong Lia48b0102020-09-15 15:08:28 -070012119 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
12120 {
12121 return (void*)dynCheck_entry_vkGetLinearImageLayoutGOOGLE;
12122 }
Lingfeng Yangded34672021-01-22 23:17:47 -080012123 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
12124 {
Yilong Li71c43c52021-02-10 02:50:43 -080012125 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangded34672021-01-22 23:17:47 -080012126 return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
12127 }
12128#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012129#ifdef VK_KHR_acceleration_structure
12130 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
12131 {
12132 return (void*)dynCheck_entry_vkCreateAccelerationStructureKHR;
12133 }
12134 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
12135 {
12136 return (void*)dynCheck_entry_vkDestroyAccelerationStructureKHR;
12137 }
12138 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
12139 {
12140 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12141 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresKHR : nullptr;
12142 }
12143 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
12144 {
12145 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12146 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresIndirectKHR : nullptr;
12147 }
12148 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
12149 {
12150 return (void*)dynCheck_entry_vkBuildAccelerationStructuresKHR;
12151 }
12152 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
12153 {
12154 return (void*)dynCheck_entry_vkCopyAccelerationStructureKHR;
12155 }
12156 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
12157 {
12158 return (void*)dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR;
12159 }
12160 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
12161 {
12162 return (void*)dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR;
12163 }
12164 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
12165 {
12166 return (void*)dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR;
12167 }
12168 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
12169 {
12170 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12171 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureKHR : nullptr;
12172 }
12173 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
12174 {
12175 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12176 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureToMemoryKHR : nullptr;
12177 }
12178 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
12179 {
12180 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12181 return hasExt ? (void*)entry_vkCmdCopyMemoryToAccelerationStructureKHR : nullptr;
12182 }
12183 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
12184 {
12185 return (void*)dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR;
12186 }
12187 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
12188 {
12189 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12190 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesKHR : nullptr;
12191 }
12192 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
12193 {
12194 return (void*)dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR;
12195 }
12196 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
12197 {
12198 return (void*)dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR;
12199 }
12200#endif
12201#ifdef VK_KHR_ray_tracing_pipeline
12202 if (!strcmp(name, "vkCmdTraceRaysKHR"))
12203 {
12204 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
12205 return hasExt ? (void*)entry_vkCmdTraceRaysKHR : nullptr;
12206 }
12207 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
12208 {
12209 return (void*)dynCheck_entry_vkCreateRayTracingPipelinesKHR;
12210 }
12211 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
12212 {
12213 return (void*)dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR;
12214 }
12215 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
12216 {
12217 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
12218 return hasExt ? (void*)entry_vkCmdTraceRaysIndirectKHR : nullptr;
12219 }
12220 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
12221 {
12222 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR;
12223 }
12224 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
12225 {
12226 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
12227 return hasExt ? (void*)entry_vkCmdSetRayTracingPipelineStackSizeKHR : nullptr;
12228 }
12229#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012230 return nullptr;
12231}
12232void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
12233 auto resources = ResourceTracker::get();
12234 bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
12235#ifdef VK_VERSION_1_0
12236 if (!strcmp(name, "vkCreateInstance"))
12237 {
12238 return (void*)entry_vkCreateInstance;
12239 }
12240 if (!strcmp(name, "vkDestroyInstance"))
12241 {
12242 return (void*)entry_vkDestroyInstance;
12243 }
12244 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
12245 {
12246 return (void*)entry_vkEnumeratePhysicalDevices;
12247 }
12248 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
12249 {
12250 return (void*)entry_vkGetPhysicalDeviceFeatures;
12251 }
12252 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
12253 {
12254 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
12255 }
12256 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
12257 {
12258 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
12259 }
12260 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
12261 {
12262 return (void*)entry_vkGetPhysicalDeviceProperties;
12263 }
12264 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
12265 {
12266 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
12267 }
12268 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
12269 {
12270 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
12271 }
12272 if (!strcmp(name, "vkGetInstanceProcAddr"))
12273 {
12274 return (void*)entry_vkGetInstanceProcAddr;
12275 }
12276 if (!strcmp(name, "vkGetDeviceProcAddr"))
12277 {
12278 return (void*)entry_vkGetDeviceProcAddr;
12279 }
12280 if (!strcmp(name, "vkCreateDevice"))
12281 {
12282 return (void*)entry_vkCreateDevice;
12283 }
12284 if (!strcmp(name, "vkDestroyDevice"))
12285 {
12286 return (void*)entry_vkDestroyDevice;
12287 }
12288 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
12289 {
12290 return (void*)entry_vkEnumerateInstanceExtensionProperties;
12291 }
12292 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
12293 {
12294 return (void*)entry_vkEnumerateDeviceExtensionProperties;
12295 }
12296 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
12297 {
12298 return (void*)entry_vkEnumerateInstanceLayerProperties;
12299 }
12300 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
12301 {
12302 return (void*)entry_vkEnumerateDeviceLayerProperties;
12303 }
12304 if (!strcmp(name, "vkGetDeviceQueue"))
12305 {
12306 return (void*)entry_vkGetDeviceQueue;
12307 }
12308 if (!strcmp(name, "vkQueueSubmit"))
12309 {
12310 return (void*)entry_vkQueueSubmit;
12311 }
12312 if (!strcmp(name, "vkQueueWaitIdle"))
12313 {
12314 return (void*)entry_vkQueueWaitIdle;
12315 }
12316 if (!strcmp(name, "vkDeviceWaitIdle"))
12317 {
12318 return (void*)entry_vkDeviceWaitIdle;
12319 }
12320 if (!strcmp(name, "vkAllocateMemory"))
12321 {
12322 return (void*)entry_vkAllocateMemory;
12323 }
12324 if (!strcmp(name, "vkFreeMemory"))
12325 {
12326 return (void*)entry_vkFreeMemory;
12327 }
12328 if (!strcmp(name, "vkMapMemory"))
12329 {
12330 return (void*)entry_vkMapMemory;
12331 }
12332 if (!strcmp(name, "vkUnmapMemory"))
12333 {
12334 return (void*)entry_vkUnmapMemory;
12335 }
12336 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
12337 {
12338 return (void*)entry_vkFlushMappedMemoryRanges;
12339 }
12340 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
12341 {
12342 return (void*)entry_vkInvalidateMappedMemoryRanges;
12343 }
12344 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
12345 {
12346 return (void*)entry_vkGetDeviceMemoryCommitment;
12347 }
12348 if (!strcmp(name, "vkBindBufferMemory"))
12349 {
12350 return (void*)entry_vkBindBufferMemory;
12351 }
12352 if (!strcmp(name, "vkBindImageMemory"))
12353 {
12354 return (void*)entry_vkBindImageMemory;
12355 }
12356 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
12357 {
12358 return (void*)entry_vkGetBufferMemoryRequirements;
12359 }
12360 if (!strcmp(name, "vkGetImageMemoryRequirements"))
12361 {
12362 return (void*)entry_vkGetImageMemoryRequirements;
12363 }
12364 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
12365 {
12366 return (void*)entry_vkGetImageSparseMemoryRequirements;
12367 }
12368 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
12369 {
12370 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
12371 }
12372 if (!strcmp(name, "vkQueueBindSparse"))
12373 {
12374 return (void*)entry_vkQueueBindSparse;
12375 }
12376 if (!strcmp(name, "vkCreateFence"))
12377 {
12378 return (void*)entry_vkCreateFence;
12379 }
12380 if (!strcmp(name, "vkDestroyFence"))
12381 {
12382 return (void*)entry_vkDestroyFence;
12383 }
12384 if (!strcmp(name, "vkResetFences"))
12385 {
12386 return (void*)entry_vkResetFences;
12387 }
12388 if (!strcmp(name, "vkGetFenceStatus"))
12389 {
12390 return (void*)entry_vkGetFenceStatus;
12391 }
12392 if (!strcmp(name, "vkWaitForFences"))
12393 {
12394 return (void*)entry_vkWaitForFences;
12395 }
12396 if (!strcmp(name, "vkCreateSemaphore"))
12397 {
12398 return (void*)entry_vkCreateSemaphore;
12399 }
12400 if (!strcmp(name, "vkDestroySemaphore"))
12401 {
12402 return (void*)entry_vkDestroySemaphore;
12403 }
12404 if (!strcmp(name, "vkCreateEvent"))
12405 {
12406 return (void*)entry_vkCreateEvent;
12407 }
12408 if (!strcmp(name, "vkDestroyEvent"))
12409 {
12410 return (void*)entry_vkDestroyEvent;
12411 }
12412 if (!strcmp(name, "vkGetEventStatus"))
12413 {
12414 return (void*)entry_vkGetEventStatus;
12415 }
12416 if (!strcmp(name, "vkSetEvent"))
12417 {
12418 return (void*)entry_vkSetEvent;
12419 }
12420 if (!strcmp(name, "vkResetEvent"))
12421 {
12422 return (void*)entry_vkResetEvent;
12423 }
12424 if (!strcmp(name, "vkCreateQueryPool"))
12425 {
12426 return (void*)entry_vkCreateQueryPool;
12427 }
12428 if (!strcmp(name, "vkDestroyQueryPool"))
12429 {
12430 return (void*)entry_vkDestroyQueryPool;
12431 }
12432 if (!strcmp(name, "vkGetQueryPoolResults"))
12433 {
12434 return (void*)entry_vkGetQueryPoolResults;
12435 }
12436 if (!strcmp(name, "vkCreateBuffer"))
12437 {
12438 return (void*)entry_vkCreateBuffer;
12439 }
12440 if (!strcmp(name, "vkDestroyBuffer"))
12441 {
12442 return (void*)entry_vkDestroyBuffer;
12443 }
12444 if (!strcmp(name, "vkCreateBufferView"))
12445 {
12446 return (void*)entry_vkCreateBufferView;
12447 }
12448 if (!strcmp(name, "vkDestroyBufferView"))
12449 {
12450 return (void*)entry_vkDestroyBufferView;
12451 }
12452 if (!strcmp(name, "vkCreateImage"))
12453 {
12454 return (void*)entry_vkCreateImage;
12455 }
12456 if (!strcmp(name, "vkDestroyImage"))
12457 {
12458 return (void*)entry_vkDestroyImage;
12459 }
12460 if (!strcmp(name, "vkGetImageSubresourceLayout"))
12461 {
12462 return (void*)entry_vkGetImageSubresourceLayout;
12463 }
12464 if (!strcmp(name, "vkCreateImageView"))
12465 {
12466 return (void*)entry_vkCreateImageView;
12467 }
12468 if (!strcmp(name, "vkDestroyImageView"))
12469 {
12470 return (void*)entry_vkDestroyImageView;
12471 }
12472 if (!strcmp(name, "vkCreateShaderModule"))
12473 {
12474 return (void*)entry_vkCreateShaderModule;
12475 }
12476 if (!strcmp(name, "vkDestroyShaderModule"))
12477 {
12478 return (void*)entry_vkDestroyShaderModule;
12479 }
12480 if (!strcmp(name, "vkCreatePipelineCache"))
12481 {
12482 return (void*)entry_vkCreatePipelineCache;
12483 }
12484 if (!strcmp(name, "vkDestroyPipelineCache"))
12485 {
12486 return (void*)entry_vkDestroyPipelineCache;
12487 }
12488 if (!strcmp(name, "vkGetPipelineCacheData"))
12489 {
12490 return (void*)entry_vkGetPipelineCacheData;
12491 }
12492 if (!strcmp(name, "vkMergePipelineCaches"))
12493 {
12494 return (void*)entry_vkMergePipelineCaches;
12495 }
12496 if (!strcmp(name, "vkCreateGraphicsPipelines"))
12497 {
12498 return (void*)entry_vkCreateGraphicsPipelines;
12499 }
12500 if (!strcmp(name, "vkCreateComputePipelines"))
12501 {
12502 return (void*)entry_vkCreateComputePipelines;
12503 }
12504 if (!strcmp(name, "vkDestroyPipeline"))
12505 {
12506 return (void*)entry_vkDestroyPipeline;
12507 }
12508 if (!strcmp(name, "vkCreatePipelineLayout"))
12509 {
12510 return (void*)entry_vkCreatePipelineLayout;
12511 }
12512 if (!strcmp(name, "vkDestroyPipelineLayout"))
12513 {
12514 return (void*)entry_vkDestroyPipelineLayout;
12515 }
12516 if (!strcmp(name, "vkCreateSampler"))
12517 {
12518 return (void*)entry_vkCreateSampler;
12519 }
12520 if (!strcmp(name, "vkDestroySampler"))
12521 {
12522 return (void*)entry_vkDestroySampler;
12523 }
12524 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
12525 {
12526 return (void*)entry_vkCreateDescriptorSetLayout;
12527 }
12528 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
12529 {
12530 return (void*)entry_vkDestroyDescriptorSetLayout;
12531 }
12532 if (!strcmp(name, "vkCreateDescriptorPool"))
12533 {
12534 return (void*)entry_vkCreateDescriptorPool;
12535 }
12536 if (!strcmp(name, "vkDestroyDescriptorPool"))
12537 {
12538 return (void*)entry_vkDestroyDescriptorPool;
12539 }
12540 if (!strcmp(name, "vkResetDescriptorPool"))
12541 {
12542 return (void*)entry_vkResetDescriptorPool;
12543 }
12544 if (!strcmp(name, "vkAllocateDescriptorSets"))
12545 {
12546 return (void*)entry_vkAllocateDescriptorSets;
12547 }
12548 if (!strcmp(name, "vkFreeDescriptorSets"))
12549 {
12550 return (void*)entry_vkFreeDescriptorSets;
12551 }
12552 if (!strcmp(name, "vkUpdateDescriptorSets"))
12553 {
12554 return (void*)entry_vkUpdateDescriptorSets;
12555 }
12556 if (!strcmp(name, "vkCreateFramebuffer"))
12557 {
12558 return (void*)entry_vkCreateFramebuffer;
12559 }
12560 if (!strcmp(name, "vkDestroyFramebuffer"))
12561 {
12562 return (void*)entry_vkDestroyFramebuffer;
12563 }
12564 if (!strcmp(name, "vkCreateRenderPass"))
12565 {
12566 return (void*)entry_vkCreateRenderPass;
12567 }
12568 if (!strcmp(name, "vkDestroyRenderPass"))
12569 {
12570 return (void*)entry_vkDestroyRenderPass;
12571 }
12572 if (!strcmp(name, "vkGetRenderAreaGranularity"))
12573 {
12574 return (void*)entry_vkGetRenderAreaGranularity;
12575 }
12576 if (!strcmp(name, "vkCreateCommandPool"))
12577 {
12578 return (void*)entry_vkCreateCommandPool;
12579 }
12580 if (!strcmp(name, "vkDestroyCommandPool"))
12581 {
12582 return (void*)entry_vkDestroyCommandPool;
12583 }
12584 if (!strcmp(name, "vkResetCommandPool"))
12585 {
12586 return (void*)entry_vkResetCommandPool;
12587 }
12588 if (!strcmp(name, "vkAllocateCommandBuffers"))
12589 {
12590 return (void*)entry_vkAllocateCommandBuffers;
12591 }
12592 if (!strcmp(name, "vkFreeCommandBuffers"))
12593 {
12594 return (void*)entry_vkFreeCommandBuffers;
12595 }
12596 if (!strcmp(name, "vkBeginCommandBuffer"))
12597 {
12598 return (void*)entry_vkBeginCommandBuffer;
12599 }
12600 if (!strcmp(name, "vkEndCommandBuffer"))
12601 {
12602 return (void*)entry_vkEndCommandBuffer;
12603 }
12604 if (!strcmp(name, "vkResetCommandBuffer"))
12605 {
12606 return (void*)entry_vkResetCommandBuffer;
12607 }
12608 if (!strcmp(name, "vkCmdBindPipeline"))
12609 {
12610 return (void*)entry_vkCmdBindPipeline;
12611 }
12612 if (!strcmp(name, "vkCmdSetViewport"))
12613 {
12614 return (void*)entry_vkCmdSetViewport;
12615 }
12616 if (!strcmp(name, "vkCmdSetScissor"))
12617 {
12618 return (void*)entry_vkCmdSetScissor;
12619 }
12620 if (!strcmp(name, "vkCmdSetLineWidth"))
12621 {
12622 return (void*)entry_vkCmdSetLineWidth;
12623 }
12624 if (!strcmp(name, "vkCmdSetDepthBias"))
12625 {
12626 return (void*)entry_vkCmdSetDepthBias;
12627 }
12628 if (!strcmp(name, "vkCmdSetBlendConstants"))
12629 {
12630 return (void*)entry_vkCmdSetBlendConstants;
12631 }
12632 if (!strcmp(name, "vkCmdSetDepthBounds"))
12633 {
12634 return (void*)entry_vkCmdSetDepthBounds;
12635 }
12636 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
12637 {
12638 return (void*)entry_vkCmdSetStencilCompareMask;
12639 }
12640 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
12641 {
12642 return (void*)entry_vkCmdSetStencilWriteMask;
12643 }
12644 if (!strcmp(name, "vkCmdSetStencilReference"))
12645 {
12646 return (void*)entry_vkCmdSetStencilReference;
12647 }
12648 if (!strcmp(name, "vkCmdBindDescriptorSets"))
12649 {
12650 return (void*)entry_vkCmdBindDescriptorSets;
12651 }
12652 if (!strcmp(name, "vkCmdBindIndexBuffer"))
12653 {
12654 return (void*)entry_vkCmdBindIndexBuffer;
12655 }
12656 if (!strcmp(name, "vkCmdBindVertexBuffers"))
12657 {
12658 return (void*)entry_vkCmdBindVertexBuffers;
12659 }
12660 if (!strcmp(name, "vkCmdDraw"))
12661 {
12662 return (void*)entry_vkCmdDraw;
12663 }
12664 if (!strcmp(name, "vkCmdDrawIndexed"))
12665 {
12666 return (void*)entry_vkCmdDrawIndexed;
12667 }
12668 if (!strcmp(name, "vkCmdDrawIndirect"))
12669 {
12670 return (void*)entry_vkCmdDrawIndirect;
12671 }
12672 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
12673 {
12674 return (void*)entry_vkCmdDrawIndexedIndirect;
12675 }
12676 if (!strcmp(name, "vkCmdDispatch"))
12677 {
12678 return (void*)entry_vkCmdDispatch;
12679 }
12680 if (!strcmp(name, "vkCmdDispatchIndirect"))
12681 {
12682 return (void*)entry_vkCmdDispatchIndirect;
12683 }
12684 if (!strcmp(name, "vkCmdCopyBuffer"))
12685 {
12686 return (void*)entry_vkCmdCopyBuffer;
12687 }
12688 if (!strcmp(name, "vkCmdCopyImage"))
12689 {
12690 return (void*)entry_vkCmdCopyImage;
12691 }
12692 if (!strcmp(name, "vkCmdBlitImage"))
12693 {
12694 return (void*)entry_vkCmdBlitImage;
12695 }
12696 if (!strcmp(name, "vkCmdCopyBufferToImage"))
12697 {
12698 return (void*)entry_vkCmdCopyBufferToImage;
12699 }
12700 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
12701 {
12702 return (void*)entry_vkCmdCopyImageToBuffer;
12703 }
12704 if (!strcmp(name, "vkCmdUpdateBuffer"))
12705 {
12706 return (void*)entry_vkCmdUpdateBuffer;
12707 }
12708 if (!strcmp(name, "vkCmdFillBuffer"))
12709 {
12710 return (void*)entry_vkCmdFillBuffer;
12711 }
12712 if (!strcmp(name, "vkCmdClearColorImage"))
12713 {
12714 return (void*)entry_vkCmdClearColorImage;
12715 }
12716 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
12717 {
12718 return (void*)entry_vkCmdClearDepthStencilImage;
12719 }
12720 if (!strcmp(name, "vkCmdClearAttachments"))
12721 {
12722 return (void*)entry_vkCmdClearAttachments;
12723 }
12724 if (!strcmp(name, "vkCmdResolveImage"))
12725 {
12726 return (void*)entry_vkCmdResolveImage;
12727 }
12728 if (!strcmp(name, "vkCmdSetEvent"))
12729 {
12730 return (void*)entry_vkCmdSetEvent;
12731 }
12732 if (!strcmp(name, "vkCmdResetEvent"))
12733 {
12734 return (void*)entry_vkCmdResetEvent;
12735 }
12736 if (!strcmp(name, "vkCmdWaitEvents"))
12737 {
12738 return (void*)entry_vkCmdWaitEvents;
12739 }
12740 if (!strcmp(name, "vkCmdPipelineBarrier"))
12741 {
12742 return (void*)entry_vkCmdPipelineBarrier;
12743 }
12744 if (!strcmp(name, "vkCmdBeginQuery"))
12745 {
12746 return (void*)entry_vkCmdBeginQuery;
12747 }
12748 if (!strcmp(name, "vkCmdEndQuery"))
12749 {
12750 return (void*)entry_vkCmdEndQuery;
12751 }
12752 if (!strcmp(name, "vkCmdResetQueryPool"))
12753 {
12754 return (void*)entry_vkCmdResetQueryPool;
12755 }
12756 if (!strcmp(name, "vkCmdWriteTimestamp"))
12757 {
12758 return (void*)entry_vkCmdWriteTimestamp;
12759 }
12760 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
12761 {
12762 return (void*)entry_vkCmdCopyQueryPoolResults;
12763 }
12764 if (!strcmp(name, "vkCmdPushConstants"))
12765 {
12766 return (void*)entry_vkCmdPushConstants;
12767 }
12768 if (!strcmp(name, "vkCmdBeginRenderPass"))
12769 {
12770 return (void*)entry_vkCmdBeginRenderPass;
12771 }
12772 if (!strcmp(name, "vkCmdNextSubpass"))
12773 {
12774 return (void*)entry_vkCmdNextSubpass;
12775 }
12776 if (!strcmp(name, "vkCmdEndRenderPass"))
12777 {
12778 return (void*)entry_vkCmdEndRenderPass;
12779 }
12780 if (!strcmp(name, "vkCmdExecuteCommands"))
12781 {
12782 return (void*)entry_vkCmdExecuteCommands;
12783 }
12784#endif
12785#ifdef VK_VERSION_1_1
12786 if (!strcmp(name, "vkEnumerateInstanceVersion"))
12787 {
12788 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
12789 }
12790 if (!strcmp(name, "vkBindBufferMemory2"))
12791 {
12792 return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
12793 }
12794 if (!strcmp(name, "vkBindImageMemory2"))
12795 {
12796 return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
12797 }
12798 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
12799 {
12800 return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
12801 }
12802 if (!strcmp(name, "vkCmdSetDeviceMask"))
12803 {
12804 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
12805 }
12806 if (!strcmp(name, "vkCmdDispatchBase"))
12807 {
12808 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
12809 }
12810 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
12811 {
12812 return nullptr;
12813 }
12814 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
12815 {
12816 return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
12817 }
12818 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
12819 {
12820 return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
12821 }
12822 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
12823 {
12824 return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
12825 }
12826 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
12827 {
12828 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
12829 }
12830 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
12831 {
12832 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
12833 }
12834 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
12835 {
12836 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
12837 }
12838 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
12839 {
12840 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
12841 }
12842 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
12843 {
12844 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
12845 }
12846 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
12847 {
12848 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
12849 }
12850 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
12851 {
12852 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
12853 }
12854 if (!strcmp(name, "vkTrimCommandPool"))
12855 {
12856 return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
12857 }
12858 if (!strcmp(name, "vkGetDeviceQueue2"))
12859 {
12860 return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
12861 }
12862 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
12863 {
12864 return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
12865 }
12866 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
12867 {
12868 return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
12869 }
12870 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
12871 {
12872 return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
12873 }
12874 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
12875 {
12876 return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
12877 }
12878 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
12879 {
12880 return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
12881 }
12882 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
12883 {
12884 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
12885 }
12886 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
12887 {
12888 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
12889 }
12890 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
12891 {
12892 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
12893 }
12894 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
12895 {
12896 return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
12897 }
12898#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012899#ifdef VK_VERSION_1_2
12900 if (!strcmp(name, "vkCmdDrawIndirectCount"))
12901 {
12902 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12903 return hasExt ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
12904 }
12905 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
12906 {
12907 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12908 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
12909 }
12910 if (!strcmp(name, "vkCreateRenderPass2"))
12911 {
12912 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12913 return hasExt ? (void*)entry_vkCreateRenderPass2 : nullptr;
12914 }
12915 if (!strcmp(name, "vkCmdBeginRenderPass2"))
12916 {
12917 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12918 return hasExt ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
12919 }
12920 if (!strcmp(name, "vkCmdNextSubpass2"))
12921 {
12922 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12923 return hasExt ? (void*)entry_vkCmdNextSubpass2 : nullptr;
12924 }
12925 if (!strcmp(name, "vkCmdEndRenderPass2"))
12926 {
12927 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12928 return hasExt ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
12929 }
12930 if (!strcmp(name, "vkResetQueryPool"))
12931 {
12932 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12933 return hasExt ? (void*)entry_vkResetQueryPool : nullptr;
12934 }
12935 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
12936 {
12937 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12938 return hasExt ? (void*)entry_vkGetSemaphoreCounterValue : nullptr;
12939 }
12940 if (!strcmp(name, "vkWaitSemaphores"))
12941 {
12942 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12943 return hasExt ? (void*)entry_vkWaitSemaphores : nullptr;
12944 }
12945 if (!strcmp(name, "vkSignalSemaphore"))
12946 {
12947 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12948 return hasExt ? (void*)entry_vkSignalSemaphore : nullptr;
12949 }
12950 if (!strcmp(name, "vkGetBufferDeviceAddress"))
12951 {
12952 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12953 return hasExt ? (void*)entry_vkGetBufferDeviceAddress : nullptr;
12954 }
12955 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
12956 {
12957 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12958 return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddress : nullptr;
12959 }
12960 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
12961 {
12962 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12963 return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddress : nullptr;
12964 }
12965#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012966#ifdef VK_KHR_surface
12967 if (!strcmp(name, "vkDestroySurfaceKHR"))
12968 {
12969 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
12970 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
12971 }
12972 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
12973 {
12974 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
12975 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
12976 }
12977 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
12978 {
12979 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
12980 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
12981 }
12982 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
12983 {
12984 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
12985 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
12986 }
12987 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
12988 {
12989 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
12990 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
12991 }
12992#endif
12993#ifdef VK_KHR_swapchain
12994 if (!strcmp(name, "vkCreateSwapchainKHR"))
12995 {
12996 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
12997 return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
12998 }
12999 if (!strcmp(name, "vkDestroySwapchainKHR"))
13000 {
13001 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13002 return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
13003 }
13004 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
13005 {
13006 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13007 return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
13008 }
13009 if (!strcmp(name, "vkAcquireNextImageKHR"))
13010 {
13011 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13012 return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
13013 }
13014 if (!strcmp(name, "vkQueuePresentKHR"))
13015 {
13016 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13017 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
13018 }
13019 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
13020 {
13021 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13022 return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
13023 }
13024 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
13025 {
13026 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13027 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
13028 }
13029 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
13030 {
13031 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13032 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
13033 }
13034 if (!strcmp(name, "vkAcquireNextImage2KHR"))
13035 {
13036 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13037 return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
13038 }
13039#endif
13040#ifdef VK_KHR_display
13041 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
13042 {
13043 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13044 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
13045 }
13046 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
13047 {
13048 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13049 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
13050 }
13051 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
13052 {
13053 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13054 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
13055 }
13056 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
13057 {
13058 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13059 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
13060 }
13061 if (!strcmp(name, "vkCreateDisplayModeKHR"))
13062 {
13063 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13064 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
13065 }
13066 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
13067 {
13068 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13069 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
13070 }
13071 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
13072 {
13073 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13074 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
13075 }
13076#endif
13077#ifdef VK_KHR_display_swapchain
13078 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
13079 {
13080 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
13081 return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
13082 }
13083#endif
13084#ifdef VK_KHR_xlib_surface
13085 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
13086 {
13087 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
13088 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
13089 }
13090 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
13091 {
13092 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
13093 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
13094 }
13095#endif
13096#ifdef VK_KHR_xcb_surface
13097 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
13098 {
13099 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
13100 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
13101 }
13102 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
13103 {
13104 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
13105 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
13106 }
13107#endif
13108#ifdef VK_KHR_wayland_surface
13109 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
13110 {
13111 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
13112 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
13113 }
13114 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
13115 {
13116 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
13117 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
13118 }
13119#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013120#ifdef VK_KHR_android_surface
13121 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
13122 {
13123 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
13124 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
13125 }
13126#endif
13127#ifdef VK_KHR_win32_surface
13128 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
13129 {
13130 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
13131 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
13132 }
13133 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
13134 {
13135 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
13136 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
13137 }
13138#endif
13139#ifdef VK_KHR_get_physical_device_properties2
13140 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
13141 {
13142 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13143 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
13144 }
13145 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
13146 {
13147 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13148 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
13149 }
13150 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
13151 {
13152 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13153 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
13154 }
13155 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
13156 {
13157 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13158 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
13159 }
13160 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
13161 {
13162 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13163 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
13164 }
13165 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
13166 {
13167 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13168 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
13169 }
13170 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
13171 {
13172 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13173 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
13174 }
13175#endif
13176#ifdef VK_KHR_device_group
13177 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
13178 {
13179 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
13180 return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
13181 }
13182 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
13183 {
13184 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
13185 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
13186 }
13187 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
13188 {
13189 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
13190 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
13191 }
13192#endif
13193#ifdef VK_KHR_maintenance1
13194 if (!strcmp(name, "vkTrimCommandPoolKHR"))
13195 {
13196 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
13197 return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
13198 }
13199#endif
13200#ifdef VK_KHR_device_group_creation
13201 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
13202 {
13203 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
13204 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
13205 }
13206#endif
13207#ifdef VK_KHR_external_memory_capabilities
13208 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
13209 {
13210 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
13211 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
13212 }
13213#endif
13214#ifdef VK_KHR_external_memory_win32
13215 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
13216 {
13217 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
13218 return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
13219 }
13220 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
13221 {
13222 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
13223 return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
13224 }
13225#endif
13226#ifdef VK_KHR_external_memory_fd
13227 if (!strcmp(name, "vkGetMemoryFdKHR"))
13228 {
13229 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
13230 return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
13231 }
13232 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
13233 {
13234 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
13235 return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
13236 }
13237#endif
13238#ifdef VK_KHR_external_semaphore_capabilities
13239 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
13240 {
13241 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
13242 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
13243 }
13244#endif
13245#ifdef VK_KHR_external_semaphore_win32
13246 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
13247 {
13248 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
13249 return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
13250 }
13251 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
13252 {
13253 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
13254 return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
13255 }
13256#endif
13257#ifdef VK_KHR_external_semaphore_fd
13258 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
13259 {
13260 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
13261 return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
13262 }
13263 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
13264 {
13265 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
13266 return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
13267 }
13268#endif
13269#ifdef VK_KHR_push_descriptor
13270 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
13271 {
13272 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
13273 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
13274 }
13275 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
13276 {
13277 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
13278 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
13279 }
13280#endif
13281#ifdef VK_KHR_descriptor_update_template
13282 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
13283 {
13284 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
13285 return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
13286 }
13287 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
13288 {
13289 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
13290 return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
13291 }
13292 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
13293 {
13294 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
13295 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
13296 }
13297#endif
13298#ifdef VK_KHR_create_renderpass2
13299 if (!strcmp(name, "vkCreateRenderPass2KHR"))
13300 {
13301 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13302 return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
13303 }
13304 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
13305 {
13306 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13307 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
13308 }
13309 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
13310 {
13311 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13312 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
13313 }
13314 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
13315 {
13316 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13317 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
13318 }
13319#endif
13320#ifdef VK_KHR_shared_presentable_image
13321 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
13322 {
13323 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
13324 return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
13325 }
13326#endif
13327#ifdef VK_KHR_external_fence_capabilities
13328 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
13329 {
13330 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
13331 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
13332 }
13333#endif
13334#ifdef VK_KHR_external_fence_win32
13335 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
13336 {
13337 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
13338 return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
13339 }
13340 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
13341 {
13342 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
13343 return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
13344 }
13345#endif
13346#ifdef VK_KHR_external_fence_fd
13347 if (!strcmp(name, "vkImportFenceFdKHR"))
13348 {
13349 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
13350 return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
13351 }
13352 if (!strcmp(name, "vkGetFenceFdKHR"))
13353 {
13354 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
13355 return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
13356 }
13357#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013358#ifdef VK_KHR_performance_query
13359 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
13360 {
13361 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13362 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
13363 }
13364 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
13365 {
13366 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13367 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
13368 }
13369 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
13370 {
13371 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13372 return hasExt ? (void*)entry_vkAcquireProfilingLockKHR : nullptr;
13373 }
13374 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
13375 {
13376 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13377 return hasExt ? (void*)entry_vkReleaseProfilingLockKHR : nullptr;
13378 }
13379#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013380#ifdef VK_KHR_get_surface_capabilities2
13381 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
13382 {
13383 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
13384 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
13385 }
13386 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
13387 {
13388 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
13389 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
13390 }
13391#endif
13392#ifdef VK_KHR_get_display_properties2
13393 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
13394 {
13395 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13396 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
13397 }
13398 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
13399 {
13400 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13401 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
13402 }
13403 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
13404 {
13405 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13406 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
13407 }
13408 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
13409 {
13410 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13411 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
13412 }
13413#endif
13414#ifdef VK_KHR_get_memory_requirements2
13415 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
13416 {
13417 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
13418 return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
13419 }
13420 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
13421 {
13422 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
13423 return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
13424 }
13425 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
13426 {
13427 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
13428 return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
13429 }
13430#endif
13431#ifdef VK_KHR_sampler_ycbcr_conversion
13432 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
13433 {
13434 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
13435 return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
13436 }
13437 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
13438 {
13439 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
13440 return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
13441 }
13442#endif
13443#ifdef VK_KHR_bind_memory2
13444 if (!strcmp(name, "vkBindBufferMemory2KHR"))
13445 {
13446 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
13447 return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
13448 }
13449 if (!strcmp(name, "vkBindImageMemory2KHR"))
13450 {
13451 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
13452 return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
13453 }
13454#endif
13455#ifdef VK_KHR_maintenance3
13456 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
13457 {
13458 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
13459 return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
13460 }
13461#endif
13462#ifdef VK_KHR_draw_indirect_count
13463 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
13464 {
13465 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
13466 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
13467 }
13468 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
13469 {
13470 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
13471 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
13472 }
13473#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013474#ifdef VK_KHR_timeline_semaphore
13475 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
13476 {
13477 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
13478 return hasExt ? (void*)entry_vkGetSemaphoreCounterValueKHR : nullptr;
13479 }
13480 if (!strcmp(name, "vkWaitSemaphoresKHR"))
13481 {
13482 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
13483 return hasExt ? (void*)entry_vkWaitSemaphoresKHR : nullptr;
13484 }
13485 if (!strcmp(name, "vkSignalSemaphoreKHR"))
13486 {
13487 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
13488 return hasExt ? (void*)entry_vkSignalSemaphoreKHR : nullptr;
13489 }
13490#endif
13491#ifdef VK_KHR_fragment_shading_rate
13492 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
13493 {
13494 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
13495 return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
13496 }
13497 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
13498 {
13499 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
13500 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateKHR : nullptr;
13501 }
13502#endif
13503#ifdef VK_KHR_buffer_device_address
13504 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
13505 {
13506 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
13507 return hasExt ? (void*)entry_vkGetBufferDeviceAddressKHR : nullptr;
13508 }
13509 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
13510 {
13511 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
13512 return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddressKHR : nullptr;
13513 }
13514 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
13515 {
13516 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
13517 return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR : nullptr;
13518 }
13519#endif
13520#ifdef VK_KHR_deferred_host_operations
13521 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
13522 {
13523 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13524 return hasExt ? (void*)entry_vkCreateDeferredOperationKHR : nullptr;
13525 }
13526 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
13527 {
13528 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13529 return hasExt ? (void*)entry_vkDestroyDeferredOperationKHR : nullptr;
13530 }
13531 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
13532 {
13533 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13534 return hasExt ? (void*)entry_vkGetDeferredOperationMaxConcurrencyKHR : nullptr;
13535 }
13536 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
13537 {
13538 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13539 return hasExt ? (void*)entry_vkGetDeferredOperationResultKHR : nullptr;
13540 }
13541 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
13542 {
13543 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13544 return hasExt ? (void*)entry_vkDeferredOperationJoinKHR : nullptr;
13545 }
13546#endif
13547#ifdef VK_KHR_pipeline_executable_properties
13548 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
13549 {
13550 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
13551 return hasExt ? (void*)entry_vkGetPipelineExecutablePropertiesKHR : nullptr;
13552 }
13553 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
13554 {
13555 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
13556 return hasExt ? (void*)entry_vkGetPipelineExecutableStatisticsKHR : nullptr;
13557 }
13558 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
13559 {
13560 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
13561 return hasExt ? (void*)entry_vkGetPipelineExecutableInternalRepresentationsKHR : nullptr;
13562 }
13563#endif
13564#ifdef VK_KHR_copy_commands2
13565 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
13566 {
13567 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13568 return hasExt ? (void*)entry_vkCmdCopyBuffer2KHR : nullptr;
13569 }
13570 if (!strcmp(name, "vkCmdCopyImage2KHR"))
13571 {
13572 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13573 return hasExt ? (void*)entry_vkCmdCopyImage2KHR : nullptr;
13574 }
13575 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
13576 {
13577 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13578 return hasExt ? (void*)entry_vkCmdCopyBufferToImage2KHR : nullptr;
13579 }
13580 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
13581 {
13582 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13583 return hasExt ? (void*)entry_vkCmdCopyImageToBuffer2KHR : nullptr;
13584 }
13585 if (!strcmp(name, "vkCmdBlitImage2KHR"))
13586 {
13587 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13588 return hasExt ? (void*)entry_vkCmdBlitImage2KHR : nullptr;
13589 }
13590 if (!strcmp(name, "vkCmdResolveImage2KHR"))
13591 {
13592 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13593 return hasExt ? (void*)entry_vkCmdResolveImage2KHR : nullptr;
13594 }
13595#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013596#ifdef VK_ANDROID_native_buffer
13597 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
13598 {
13599 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
13600 return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
13601 }
13602 if (!strcmp(name, "vkAcquireImageANDROID"))
13603 {
13604 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
13605 return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
13606 }
13607 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
13608 {
13609 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
13610 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
13611 }
13612#endif
13613#ifdef VK_EXT_debug_report
13614 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
13615 {
13616 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
13617 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
13618 }
13619 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
13620 {
13621 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
13622 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
13623 }
13624 if (!strcmp(name, "vkDebugReportMessageEXT"))
13625 {
13626 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
13627 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
13628 }
13629#endif
13630#ifdef VK_EXT_debug_marker
13631 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
13632 {
13633 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13634 return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
13635 }
13636 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
13637 {
13638 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13639 return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
13640 }
13641 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
13642 {
13643 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13644 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
13645 }
13646 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
13647 {
13648 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13649 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
13650 }
13651 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
13652 {
13653 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13654 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
13655 }
13656#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013657#ifdef VK_EXT_transform_feedback
13658 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
13659 {
13660 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13661 return hasExt ? (void*)entry_vkCmdBindTransformFeedbackBuffersEXT : nullptr;
13662 }
13663 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
13664 {
13665 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13666 return hasExt ? (void*)entry_vkCmdBeginTransformFeedbackEXT : nullptr;
13667 }
13668 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
13669 {
13670 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13671 return hasExt ? (void*)entry_vkCmdEndTransformFeedbackEXT : nullptr;
13672 }
13673 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
13674 {
13675 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13676 return hasExt ? (void*)entry_vkCmdBeginQueryIndexedEXT : nullptr;
13677 }
13678 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
13679 {
13680 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13681 return hasExt ? (void*)entry_vkCmdEndQueryIndexedEXT : nullptr;
13682 }
13683 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
13684 {
13685 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13686 return hasExt ? (void*)entry_vkCmdDrawIndirectByteCountEXT : nullptr;
13687 }
13688#endif
13689#ifdef VK_NVX_image_view_handle
13690 if (!strcmp(name, "vkGetImageViewHandleNVX"))
13691 {
13692 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
13693 return hasExt ? (void*)entry_vkGetImageViewHandleNVX : nullptr;
13694 }
13695 if (!strcmp(name, "vkGetImageViewAddressNVX"))
13696 {
13697 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
13698 return hasExt ? (void*)entry_vkGetImageViewAddressNVX : nullptr;
13699 }
13700#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013701#ifdef VK_AMD_draw_indirect_count
13702 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
13703 {
13704 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
13705 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
13706 }
13707 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
13708 {
13709 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
13710 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
13711 }
13712#endif
13713#ifdef VK_AMD_shader_info
13714 if (!strcmp(name, "vkGetShaderInfoAMD"))
13715 {
13716 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
13717 return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
13718 }
13719#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013720#ifdef VK_GGP_stream_descriptor_surface
13721 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
13722 {
13723 bool hasExt = resources->hasDeviceExtension(device, "VK_GGP_stream_descriptor_surface");
13724 return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
13725 }
13726#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013727#ifdef VK_NV_external_memory_capabilities
13728 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
13729 {
13730 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
13731 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
13732 }
13733#endif
13734#ifdef VK_NV_external_memory_win32
13735 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
13736 {
13737 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
13738 return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
13739 }
13740#endif
13741#ifdef VK_NN_vi_surface
13742 if (!strcmp(name, "vkCreateViSurfaceNN"))
13743 {
13744 bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
13745 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
13746 }
13747#endif
13748#ifdef VK_EXT_conditional_rendering
13749 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
13750 {
13751 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
13752 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
13753 }
13754 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
13755 {
13756 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
13757 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
13758 }
13759#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013760#ifdef VK_NV_clip_space_w_scaling
13761 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
13762 {
13763 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
13764 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
13765 }
13766#endif
13767#ifdef VK_EXT_direct_mode_display
13768 if (!strcmp(name, "vkReleaseDisplayEXT"))
13769 {
13770 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
13771 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
13772 }
13773#endif
13774#ifdef VK_EXT_acquire_xlib_display
13775 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
13776 {
13777 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
13778 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
13779 }
13780 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
13781 {
13782 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
13783 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
13784 }
13785#endif
13786#ifdef VK_EXT_display_surface_counter
13787 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
13788 {
13789 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
13790 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
13791 }
13792#endif
13793#ifdef VK_EXT_display_control
13794 if (!strcmp(name, "vkDisplayPowerControlEXT"))
13795 {
13796 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13797 return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
13798 }
13799 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
13800 {
13801 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13802 return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
13803 }
13804 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
13805 {
13806 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13807 return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
13808 }
13809 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
13810 {
13811 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13812 return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
13813 }
13814#endif
13815#ifdef VK_GOOGLE_display_timing
13816 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
13817 {
13818 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
13819 return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
13820 }
13821 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
13822 {
13823 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
13824 return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
13825 }
13826#endif
13827#ifdef VK_EXT_discard_rectangles
13828 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
13829 {
13830 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
13831 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
13832 }
13833#endif
13834#ifdef VK_EXT_hdr_metadata
13835 if (!strcmp(name, "vkSetHdrMetadataEXT"))
13836 {
13837 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
13838 return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
13839 }
13840#endif
13841#ifdef VK_MVK_ios_surface
13842 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
13843 {
13844 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
13845 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
13846 }
13847#endif
13848#ifdef VK_MVK_macos_surface
13849 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
13850 {
13851 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
13852 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
13853 }
13854#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013855#ifdef VK_MVK_moltenvk
13856 if (!strcmp(name, "vkGetMTLDeviceMVK"))
13857 {
13858 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13859 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
13860 }
13861 if (!strcmp(name, "vkSetMTLTextureMVK"))
13862 {
13863 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13864 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
13865 }
13866 if (!strcmp(name, "vkGetMTLTextureMVK"))
13867 {
13868 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13869 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
13870 }
13871 if (!strcmp(name, "vkGetMTLBufferMVK"))
13872 {
13873 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13874 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
13875 }
13876 if (!strcmp(name, "vkUseIOSurfaceMVK"))
13877 {
13878 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13879 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
13880 }
13881 if (!strcmp(name, "vkGetIOSurfaceMVK"))
13882 {
13883 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13884 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
13885 }
13886#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013887#ifdef VK_EXT_debug_utils
13888 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
13889 {
13890 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13891 return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
13892 }
13893 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
13894 {
13895 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13896 return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
13897 }
13898 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
13899 {
13900 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13901 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
13902 }
13903 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
13904 {
13905 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13906 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
13907 }
13908 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
13909 {
13910 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13911 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
13912 }
13913 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
13914 {
13915 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13916 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
13917 }
13918 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
13919 {
13920 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13921 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
13922 }
13923 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
13924 {
13925 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13926 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
13927 }
13928 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
13929 {
13930 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13931 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
13932 }
13933 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
13934 {
13935 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13936 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
13937 }
13938 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
13939 {
13940 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13941 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
13942 }
13943#endif
13944#ifdef VK_ANDROID_external_memory_android_hardware_buffer
13945 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
13946 {
13947 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
13948 return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
13949 }
13950 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
13951 {
13952 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
13953 return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
13954 }
13955#endif
13956#ifdef VK_EXT_sample_locations
13957 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
13958 {
13959 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
13960 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
13961 }
13962 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
13963 {
13964 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
13965 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
13966 }
13967#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013968#ifdef VK_EXT_image_drm_format_modifier
13969 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
13970 {
13971 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier");
13972 return hasExt ? (void*)entry_vkGetImageDrmFormatModifierPropertiesEXT : nullptr;
13973 }
13974#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013975#ifdef VK_EXT_validation_cache
13976 if (!strcmp(name, "vkCreateValidationCacheEXT"))
13977 {
13978 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
13979 return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
13980 }
13981 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
13982 {
13983 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
13984 return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
13985 }
13986 if (!strcmp(name, "vkMergeValidationCachesEXT"))
13987 {
13988 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
13989 return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
13990 }
13991 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
13992 {
13993 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
13994 return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
13995 }
13996#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013997#ifdef VK_NV_shading_rate_image
13998 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
13999 {
14000 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
14001 return hasExt ? (void*)entry_vkCmdBindShadingRateImageNV : nullptr;
14002 }
14003 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
14004 {
14005 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
14006 return hasExt ? (void*)entry_vkCmdSetViewportShadingRatePaletteNV : nullptr;
14007 }
14008 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
14009 {
14010 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
14011 return hasExt ? (void*)entry_vkCmdSetCoarseSampleOrderNV : nullptr;
14012 }
14013#endif
14014#ifdef VK_NV_ray_tracing
14015 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
14016 {
14017 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14018 return hasExt ? (void*)entry_vkCreateAccelerationStructureNV : nullptr;
14019 }
14020 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
14021 {
14022 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14023 return hasExt ? (void*)entry_vkDestroyAccelerationStructureNV : nullptr;
14024 }
14025 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
14026 {
14027 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14028 return hasExt ? (void*)entry_vkGetAccelerationStructureMemoryRequirementsNV : nullptr;
14029 }
14030 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
14031 {
14032 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14033 return hasExt ? (void*)entry_vkBindAccelerationStructureMemoryNV : nullptr;
14034 }
14035 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
14036 {
14037 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14038 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructureNV : nullptr;
14039 }
14040 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
14041 {
14042 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14043 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureNV : nullptr;
14044 }
14045 if (!strcmp(name, "vkCmdTraceRaysNV"))
14046 {
14047 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14048 return hasExt ? (void*)entry_vkCmdTraceRaysNV : nullptr;
14049 }
14050 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
14051 {
14052 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14053 return hasExt ? (void*)entry_vkCreateRayTracingPipelinesNV : nullptr;
14054 }
14055 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
14056 {
14057 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14058 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesKHR : nullptr;
14059 }
14060 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
14061 {
14062 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14063 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesNV : nullptr;
14064 }
14065 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
14066 {
14067 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14068 return hasExt ? (void*)entry_vkGetAccelerationStructureHandleNV : nullptr;
14069 }
14070 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
14071 {
14072 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14073 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesNV : nullptr;
14074 }
14075 if (!strcmp(name, "vkCompileDeferredNV"))
14076 {
14077 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14078 return hasExt ? (void*)entry_vkCompileDeferredNV : nullptr;
14079 }
14080#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014081#ifdef VK_EXT_external_memory_host
14082 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
14083 {
14084 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
14085 return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
14086 }
14087#endif
14088#ifdef VK_AMD_buffer_marker
14089 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
14090 {
14091 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
14092 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
14093 }
14094#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014095#ifdef VK_EXT_calibrated_timestamps
14096 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
14097 {
14098 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
14099 return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
14100 }
14101 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
14102 {
14103 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
14104 return hasExt ? (void*)entry_vkGetCalibratedTimestampsEXT : nullptr;
14105 }
14106#endif
14107#ifdef VK_NV_mesh_shader
14108 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
14109 {
14110 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
14111 return hasExt ? (void*)entry_vkCmdDrawMeshTasksNV : nullptr;
14112 }
14113 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
14114 {
14115 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
14116 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectNV : nullptr;
14117 }
14118 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
14119 {
14120 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
14121 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountNV : nullptr;
14122 }
14123#endif
14124#ifdef VK_NV_scissor_exclusive
14125 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
14126 {
14127 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_scissor_exclusive");
14128 return hasExt ? (void*)entry_vkCmdSetExclusiveScissorNV : nullptr;
14129 }
14130#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014131#ifdef VK_NV_device_diagnostic_checkpoints
14132 if (!strcmp(name, "vkCmdSetCheckpointNV"))
14133 {
14134 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
14135 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
14136 }
14137 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
14138 {
14139 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
14140 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
14141 }
14142#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014143#ifdef VK_INTEL_performance_query
14144 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014145 {
Yilong Lia8d45f12021-02-07 02:30:21 -080014146 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14147 return hasExt ? (void*)entry_vkInitializePerformanceApiINTEL : nullptr;
14148 }
14149 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
14150 {
14151 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14152 return hasExt ? (void*)entry_vkUninitializePerformanceApiINTEL : nullptr;
14153 }
14154 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
14155 {
14156 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14157 return hasExt ? (void*)entry_vkCmdSetPerformanceMarkerINTEL : nullptr;
14158 }
14159 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
14160 {
14161 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14162 return hasExt ? (void*)entry_vkCmdSetPerformanceStreamMarkerINTEL : nullptr;
14163 }
14164 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
14165 {
14166 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14167 return hasExt ? (void*)entry_vkCmdSetPerformanceOverrideINTEL : nullptr;
14168 }
14169 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
14170 {
14171 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14172 return hasExt ? (void*)entry_vkAcquirePerformanceConfigurationINTEL : nullptr;
14173 }
14174 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
14175 {
14176 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14177 return hasExt ? (void*)entry_vkReleasePerformanceConfigurationINTEL : nullptr;
14178 }
14179 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
14180 {
14181 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14182 return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
14183 }
14184 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
14185 {
14186 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14187 return hasExt ? (void*)entry_vkGetPerformanceParameterINTEL : nullptr;
14188 }
14189#endif
14190#ifdef VK_AMD_display_native_hdr
14191 if (!strcmp(name, "vkSetLocalDimmingAMD"))
14192 {
14193 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr");
14194 return hasExt ? (void*)entry_vkSetLocalDimmingAMD : nullptr;
14195 }
14196#endif
14197#ifdef VK_FUCHSIA_imagepipe_surface
14198 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
14199 {
14200 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_imagepipe_surface");
14201 return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
14202 }
14203#endif
14204#ifdef VK_EXT_metal_surface
14205 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
14206 {
14207 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_metal_surface");
14208 return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080014209 }
14210#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080014211#ifdef VK_GOOGLE_color_buffer
14212 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
14213 {
14214 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
14215 return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
14216 }
14217 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
14218 {
14219 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
14220 return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
14221 }
14222#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014223#ifdef VK_EXT_buffer_device_address
14224 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
14225 {
14226 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address");
14227 return hasExt ? (void*)entry_vkGetBufferDeviceAddressEXT : nullptr;
14228 }
14229#endif
14230#ifdef VK_EXT_tooling_info
14231 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
14232 {
14233 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_tooling_info");
14234 return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
14235 }
14236#endif
14237#ifdef VK_NV_cooperative_matrix
14238 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
14239 {
14240 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_cooperative_matrix");
14241 return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
14242 }
14243#endif
14244#ifdef VK_NV_coverage_reduction_mode
14245 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
14246 {
14247 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_coverage_reduction_mode");
14248 return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
14249 }
14250#endif
14251#ifdef VK_EXT_full_screen_exclusive
14252 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
14253 {
14254 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14255 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
14256 }
14257 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
14258 {
14259 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14260 return hasExt ? (void*)entry_vkAcquireFullScreenExclusiveModeEXT : nullptr;
14261 }
14262 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
14263 {
14264 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14265 return hasExt ? (void*)entry_vkReleaseFullScreenExclusiveModeEXT : nullptr;
14266 }
14267 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
14268 {
14269 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14270 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModes2EXT : nullptr;
14271 }
14272#endif
14273#ifdef VK_EXT_headless_surface
14274 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
14275 {
14276 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_headless_surface");
14277 return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
14278 }
14279#endif
14280#ifdef VK_EXT_line_rasterization
14281 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
14282 {
14283 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_line_rasterization");
14284 return hasExt ? (void*)entry_vkCmdSetLineStippleEXT : nullptr;
14285 }
14286#endif
14287#ifdef VK_EXT_host_query_reset
14288 if (!strcmp(name, "vkResetQueryPoolEXT"))
14289 {
14290 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_host_query_reset");
14291 return hasExt ? (void*)entry_vkResetQueryPoolEXT : nullptr;
14292 }
14293#endif
14294#ifdef VK_EXT_extended_dynamic_state
14295 if (!strcmp(name, "vkCmdSetCullModeEXT"))
14296 {
14297 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14298 return hasExt ? (void*)entry_vkCmdSetCullModeEXT : nullptr;
14299 }
14300 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
14301 {
14302 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14303 return hasExt ? (void*)entry_vkCmdSetFrontFaceEXT : nullptr;
14304 }
14305 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
14306 {
14307 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14308 return hasExt ? (void*)entry_vkCmdSetPrimitiveTopologyEXT : nullptr;
14309 }
14310 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
14311 {
14312 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14313 return hasExt ? (void*)entry_vkCmdSetViewportWithCountEXT : nullptr;
14314 }
14315 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
14316 {
14317 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14318 return hasExt ? (void*)entry_vkCmdSetScissorWithCountEXT : nullptr;
14319 }
14320 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
14321 {
14322 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14323 return hasExt ? (void*)entry_vkCmdBindVertexBuffers2EXT : nullptr;
14324 }
14325 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
14326 {
14327 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14328 return hasExt ? (void*)entry_vkCmdSetDepthTestEnableEXT : nullptr;
14329 }
14330 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
14331 {
14332 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14333 return hasExt ? (void*)entry_vkCmdSetDepthWriteEnableEXT : nullptr;
14334 }
14335 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
14336 {
14337 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14338 return hasExt ? (void*)entry_vkCmdSetDepthCompareOpEXT : nullptr;
14339 }
14340 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
14341 {
14342 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14343 return hasExt ? (void*)entry_vkCmdSetDepthBoundsTestEnableEXT : nullptr;
14344 }
14345 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
14346 {
14347 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14348 return hasExt ? (void*)entry_vkCmdSetStencilTestEnableEXT : nullptr;
14349 }
14350 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
14351 {
14352 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14353 return hasExt ? (void*)entry_vkCmdSetStencilOpEXT : nullptr;
14354 }
14355#endif
14356#ifdef VK_NV_device_generated_commands
14357 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
14358 {
14359 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14360 return hasExt ? (void*)entry_vkGetGeneratedCommandsMemoryRequirementsNV : nullptr;
14361 }
14362 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
14363 {
14364 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14365 return hasExt ? (void*)entry_vkCmdPreprocessGeneratedCommandsNV : nullptr;
14366 }
14367 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
14368 {
14369 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14370 return hasExt ? (void*)entry_vkCmdExecuteGeneratedCommandsNV : nullptr;
14371 }
14372 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
14373 {
14374 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14375 return hasExt ? (void*)entry_vkCmdBindPipelineShaderGroupNV : nullptr;
14376 }
14377 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
14378 {
14379 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14380 return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNV : nullptr;
14381 }
14382 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
14383 {
14384 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14385 return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNV : nullptr;
14386 }
14387#endif
14388#ifdef VK_EXT_private_data
14389 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
14390 {
14391 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14392 return hasExt ? (void*)entry_vkCreatePrivateDataSlotEXT : nullptr;
14393 }
14394 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
14395 {
14396 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14397 return hasExt ? (void*)entry_vkDestroyPrivateDataSlotEXT : nullptr;
14398 }
14399 if (!strcmp(name, "vkSetPrivateDataEXT"))
14400 {
14401 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14402 return hasExt ? (void*)entry_vkSetPrivateDataEXT : nullptr;
14403 }
14404 if (!strcmp(name, "vkGetPrivateDataEXT"))
14405 {
14406 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14407 return hasExt ? (void*)entry_vkGetPrivateDataEXT : nullptr;
14408 }
14409#endif
14410#ifdef VK_NV_fragment_shading_rate_enums
14411 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
14412 {
14413 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_fragment_shading_rate_enums");
14414 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateEnumNV : nullptr;
14415 }
14416#endif
14417#ifdef VK_EXT_directfb_surface
14418 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
14419 {
14420 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
14421 return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
14422 }
14423 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
14424 {
14425 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
14426 return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
14427 }
14428#endif
Yilong Li71c43c52021-02-10 02:50:43 -080014429#ifdef VK_GOOGLE_gfxstream
Yilong Lia8d45f12021-02-07 02:30:21 -080014430 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
14431 {
Yilong Li71c43c52021-02-10 02:50:43 -080014432 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Yilong Lia8d45f12021-02-07 02:30:21 -080014433 return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
14434 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070014435 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
14436 {
Yilong Li71c43c52021-02-10 02:50:43 -080014437 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070014438 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
14439 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014440 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
14441 {
Yilong Li71c43c52021-02-10 02:50:43 -080014442 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014443 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
14444 }
14445 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
14446 {
Yilong Li71c43c52021-02-10 02:50:43 -080014447 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014448 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
14449 }
14450 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
14451 {
Yilong Li71c43c52021-02-10 02:50:43 -080014452 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014453 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
14454 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070014455 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
14456 {
Yilong Li71c43c52021-02-10 02:50:43 -080014457 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang39a276e2019-06-17 13:27:22 -070014458 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
14459 }
Lingfeng Yang87f11962019-06-27 16:28:53 +000014460 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
14461 {
Yilong Li71c43c52021-02-10 02:50:43 -080014462 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang87f11962019-06-27 16:28:53 +000014463 return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
14464 }
14465 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
14466 {
Yilong Li71c43c52021-02-10 02:50:43 -080014467 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang87f11962019-06-27 16:28:53 +000014468 return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
14469 }
Lingfeng Yang4c542412020-02-04 18:18:32 -080014470 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
14471 {
Yilong Li71c43c52021-02-10 02:50:43 -080014472 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang4c542412020-02-04 18:18:32 -080014473 return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
14474 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070014475 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
14476 {
Yilong Li71c43c52021-02-10 02:50:43 -080014477 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070014478 return hasExt ? (void*)entry_vkFreeMemorySyncGOOGLE : nullptr;
14479 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014480 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
14481 {
Yilong Li71c43c52021-02-10 02:50:43 -080014482 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014483 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
14484 }
14485 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
14486 {
Yilong Li71c43c52021-02-10 02:50:43 -080014487 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014488 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
14489 }
14490 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
14491 {
Yilong Li71c43c52021-02-10 02:50:43 -080014492 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014493 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
14494 }
14495 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
14496 {
Yilong Li71c43c52021-02-10 02:50:43 -080014497 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014498 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
14499 }
Yilong Lia48b0102020-09-15 15:08:28 -070014500 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
14501 {
Yilong Li71c43c52021-02-10 02:50:43 -080014502 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Yilong Lia48b0102020-09-15 15:08:28 -070014503 return hasExt ? (void*)entry_vkGetLinearImageLayoutGOOGLE : nullptr;
14504 }
Lingfeng Yangded34672021-01-22 23:17:47 -080014505 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
14506 {
Yilong Li71c43c52021-02-10 02:50:43 -080014507 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangded34672021-01-22 23:17:47 -080014508 return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
14509 }
14510#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014511#ifdef VK_KHR_acceleration_structure
14512 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
14513 {
14514 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14515 return hasExt ? (void*)entry_vkCreateAccelerationStructureKHR : nullptr;
14516 }
14517 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
14518 {
14519 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14520 return hasExt ? (void*)entry_vkDestroyAccelerationStructureKHR : nullptr;
14521 }
14522 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
14523 {
14524 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14525 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresKHR : nullptr;
14526 }
14527 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
14528 {
14529 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14530 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresIndirectKHR : nullptr;
14531 }
14532 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
14533 {
14534 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14535 return hasExt ? (void*)entry_vkBuildAccelerationStructuresKHR : nullptr;
14536 }
14537 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
14538 {
14539 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14540 return hasExt ? (void*)entry_vkCopyAccelerationStructureKHR : nullptr;
14541 }
14542 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
14543 {
14544 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14545 return hasExt ? (void*)entry_vkCopyAccelerationStructureToMemoryKHR : nullptr;
14546 }
14547 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
14548 {
14549 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14550 return hasExt ? (void*)entry_vkCopyMemoryToAccelerationStructureKHR : nullptr;
14551 }
14552 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
14553 {
14554 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14555 return hasExt ? (void*)entry_vkWriteAccelerationStructuresPropertiesKHR : nullptr;
14556 }
14557 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
14558 {
14559 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14560 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureKHR : nullptr;
14561 }
14562 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
14563 {
14564 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14565 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureToMemoryKHR : nullptr;
14566 }
14567 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
14568 {
14569 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14570 return hasExt ? (void*)entry_vkCmdCopyMemoryToAccelerationStructureKHR : nullptr;
14571 }
14572 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
14573 {
14574 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14575 return hasExt ? (void*)entry_vkGetAccelerationStructureDeviceAddressKHR : nullptr;
14576 }
14577 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
14578 {
14579 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14580 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesKHR : nullptr;
14581 }
14582 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
14583 {
14584 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14585 return hasExt ? (void*)entry_vkGetDeviceAccelerationStructureCompatibilityKHR : nullptr;
14586 }
14587 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
14588 {
14589 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14590 return hasExt ? (void*)entry_vkGetAccelerationStructureBuildSizesKHR : nullptr;
14591 }
14592#endif
14593#ifdef VK_KHR_ray_tracing_pipeline
14594 if (!strcmp(name, "vkCmdTraceRaysKHR"))
14595 {
14596 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14597 return hasExt ? (void*)entry_vkCmdTraceRaysKHR : nullptr;
14598 }
14599 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
14600 {
14601 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14602 return hasExt ? (void*)entry_vkCreateRayTracingPipelinesKHR : nullptr;
14603 }
14604 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
14605 {
14606 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14607 return hasExt ? (void*)entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR : nullptr;
14608 }
14609 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
14610 {
14611 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14612 return hasExt ? (void*)entry_vkCmdTraceRaysIndirectKHR : nullptr;
14613 }
14614 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
14615 {
14616 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14617 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupStackSizeKHR : nullptr;
14618 }
14619 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
14620 {
14621 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14622 return hasExt ? (void*)entry_vkCmdSetRayTracingPipelineStackSizeKHR : nullptr;
14623 }
14624#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080014625 return nullptr;
14626}
14627
14628} // namespace goldfish_vk