blob: 29f23f28ce260c8688c06c30a4b3031d2a8dad30 [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
7122#ifdef VK_GOOGLE_address_space
7123static 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();
7140 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_address_space"))
7141 {
7142 sOnInvalidDynamicallyCheckedCall("vkMapMemoryIntoAddressSpaceGOOGLE", "VK_GOOGLE_address_space");
7143 }
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}
7150#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07007151#ifdef VK_GOOGLE_sized_descriptor_update_template
7152static void entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
7153 VkDevice device,
7154 VkDescriptorSet descriptorSet,
7155 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
7156 uint32_t imageInfoCount,
7157 uint32_t bufferInfoCount,
7158 uint32_t bufferViewCount,
7159 const uint32_t* pImageInfoEntryIndices,
7160 const uint32_t* pBufferInfoEntryIndices,
7161 const uint32_t* pBufferViewEntryIndices,
7162 const VkDescriptorImageInfo* pImageInfos,
7163 const VkDescriptorBufferInfo* pBufferInfos,
7164 const VkBufferView* pBufferViews)
7165{
7166 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007167 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007168 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07007169}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007170static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
7171 VkDevice device,
7172 VkDescriptorSet descriptorSet,
7173 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
7174 uint32_t imageInfoCount,
7175 uint32_t bufferInfoCount,
7176 uint32_t bufferViewCount,
7177 const uint32_t* pImageInfoEntryIndices,
7178 const uint32_t* pBufferInfoEntryIndices,
7179 const uint32_t* pBufferViewEntryIndices,
7180 const VkDescriptorImageInfo* pImageInfos,
7181 const VkDescriptorBufferInfo* pBufferInfos,
7182 const VkBufferView* pBufferViews)
7183{
7184 auto resources = ResourceTracker::get();
7185 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template"))
7186 {
7187 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateSizedGOOGLE", "VK_GOOGLE_sized_descriptor_update_template");
7188 }
7189 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007190 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007191 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007192}
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07007193#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007194#ifdef VK_GOOGLE_async_command_buffers
7195static void entry_vkBeginCommandBufferAsyncGOOGLE(
7196 VkCommandBuffer commandBuffer,
7197 const VkCommandBufferBeginInfo* pBeginInfo)
7198{
7199 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007200 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007201 vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007202}
7203static void entry_vkEndCommandBufferAsyncGOOGLE(
7204 VkCommandBuffer commandBuffer)
7205{
7206 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007207 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007208 vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007209}
7210static void entry_vkResetCommandBufferAsyncGOOGLE(
7211 VkCommandBuffer commandBuffer,
7212 VkCommandBufferResetFlags flags)
7213{
7214 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007215 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007216 vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007217}
Lingfeng Yang39a276e2019-06-17 13:27:22 -07007218static void entry_vkCommandBufferHostSyncGOOGLE(
7219 VkCommandBuffer commandBuffer,
7220 uint32_t needHostSync,
7221 uint32_t sequenceNumber)
7222{
7223 AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007224 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007225 vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber, true /* do lock */);
Lingfeng Yang39a276e2019-06-17 13:27:22 -07007226}
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007227#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00007228#ifdef VK_GOOGLE_create_resources_with_requirements
7229static VkResult entry_vkCreateImageWithRequirementsGOOGLE(
7230 VkDevice device,
7231 const VkImageCreateInfo* pCreateInfo,
7232 const VkAllocationCallbacks* pAllocator,
7233 VkImage* pImage,
7234 VkMemoryRequirements* pMemoryRequirements)
7235{
7236 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007237 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang87f11962019-06-27 16:28:53 +00007238 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007239 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
Lingfeng Yang87f11962019-06-27 16:28:53 +00007240 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
7241}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007242static VkResult dynCheck_entry_vkCreateImageWithRequirementsGOOGLE(
7243 VkDevice device,
7244 const VkImageCreateInfo* pCreateInfo,
7245 const VkAllocationCallbacks* pAllocator,
7246 VkImage* pImage,
7247 VkMemoryRequirements* pMemoryRequirements)
7248{
7249 auto resources = ResourceTracker::get();
7250 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements"))
7251 {
7252 sOnInvalidDynamicallyCheckedCall("vkCreateImageWithRequirementsGOOGLE", "VK_GOOGLE_create_resources_with_requirements");
7253 }
7254 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007255 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007256 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007257 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007258 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
7259}
Lingfeng Yang87f11962019-06-27 16:28:53 +00007260static VkResult entry_vkCreateBufferWithRequirementsGOOGLE(
7261 VkDevice device,
7262 const VkBufferCreateInfo* pCreateInfo,
7263 const VkAllocationCallbacks* pAllocator,
7264 VkBuffer* pBuffer,
7265 VkMemoryRequirements* pMemoryRequirements)
7266{
7267 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007268 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang87f11962019-06-27 16:28:53 +00007269 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007270 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
Lingfeng Yang87f11962019-06-27 16:28:53 +00007271 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
7272}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007273static VkResult dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE(
7274 VkDevice device,
7275 const VkBufferCreateInfo* pCreateInfo,
7276 const VkAllocationCallbacks* pAllocator,
7277 VkBuffer* pBuffer,
7278 VkMemoryRequirements* pMemoryRequirements)
7279{
7280 auto resources = ResourceTracker::get();
7281 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements"))
7282 {
7283 sOnInvalidDynamicallyCheckedCall("vkCreateBufferWithRequirementsGOOGLE", "VK_GOOGLE_create_resources_with_requirements");
7284 }
7285 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007286 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007287 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007288 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007289 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
7290}
Lingfeng Yang87f11962019-06-27 16:28:53 +00007291#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08007292#ifdef VK_GOOGLE_address_space_info
7293static VkResult entry_vkGetMemoryHostAddressInfoGOOGLE(
7294 VkDevice device,
7295 VkDeviceMemory memory,
7296 uint64_t* pAddress,
7297 uint64_t* pSize,
7298 uint64_t* pHostmemId)
7299{
7300 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007301 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4c542412020-02-04 18:18:32 -08007302 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007303 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
Lingfeng Yang4c542412020-02-04 18:18:32 -08007304 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
7305}
7306static VkResult dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE(
7307 VkDevice device,
7308 VkDeviceMemory memory,
7309 uint64_t* pAddress,
7310 uint64_t* pSize,
7311 uint64_t* pHostmemId)
7312{
7313 auto resources = ResourceTracker::get();
7314 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_address_space_info"))
7315 {
7316 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostAddressInfoGOOGLE", "VK_GOOGLE_address_space_info");
7317 }
7318 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007319 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4c542412020-02-04 18:18:32 -08007320 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007321 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
Lingfeng Yang4c542412020-02-04 18:18:32 -08007322 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
7323}
7324#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007325#ifdef VK_GOOGLE_free_memory_sync
7326static VkResult entry_vkFreeMemorySyncGOOGLE(
7327 VkDevice device,
7328 VkDeviceMemory memory,
7329 const VkAllocationCallbacks* pAllocator)
7330{
7331 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007332 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007333 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007334 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007335 return vkFreeMemorySyncGOOGLE_VkResult_return;
7336}
7337static VkResult dynCheck_entry_vkFreeMemorySyncGOOGLE(
7338 VkDevice device,
7339 VkDeviceMemory memory,
7340 const VkAllocationCallbacks* pAllocator)
7341{
7342 auto resources = ResourceTracker::get();
7343 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_free_memory_sync"))
7344 {
7345 sOnInvalidDynamicallyCheckedCall("vkFreeMemorySyncGOOGLE", "VK_GOOGLE_free_memory_sync");
7346 }
7347 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007348 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007349 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007350 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007351 return vkFreeMemorySyncGOOGLE_VkResult_return;
7352}
7353#endif
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007354#ifdef VK_GOOGLE_async_queue_submit
7355static void entry_vkQueueHostSyncGOOGLE(
7356 VkQueue queue,
7357 uint32_t needHostSync,
7358 uint32_t sequenceNumber)
7359{
7360 AEMU_SCOPED_TRACE("vkQueueHostSyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007361 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007362 vkEnc->vkQueueHostSyncGOOGLE(queue, needHostSync, sequenceNumber, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007363}
7364static void entry_vkQueueSubmitAsyncGOOGLE(
7365 VkQueue queue,
7366 uint32_t submitCount,
7367 const VkSubmitInfo* pSubmits,
7368 VkFence fence)
7369{
7370 AEMU_SCOPED_TRACE("vkQueueSubmitAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007371 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007372 vkEnc->vkQueueSubmitAsyncGOOGLE(queue, submitCount, pSubmits, fence, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007373}
7374static void entry_vkQueueWaitIdleAsyncGOOGLE(
7375 VkQueue queue)
7376{
7377 AEMU_SCOPED_TRACE("vkQueueWaitIdleAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007378 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007379 vkEnc->vkQueueWaitIdleAsyncGOOGLE(queue, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007380}
7381static void entry_vkQueueBindSparseAsyncGOOGLE(
7382 VkQueue queue,
7383 uint32_t bindInfoCount,
7384 const VkBindSparseInfo* pBindInfo,
7385 VkFence fence)
7386{
7387 AEMU_SCOPED_TRACE("vkQueueBindSparseAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007388 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007389 vkEnc->vkQueueBindSparseAsyncGOOGLE(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007390}
7391#endif
Yilong Lia48b0102020-09-15 15:08:28 -07007392#ifdef VK_GOOGLE_linear_image_layout
7393static void entry_vkGetLinearImageLayoutGOOGLE(
7394 VkDevice device,
7395 VkFormat format,
7396 VkDeviceSize* pOffset,
7397 VkDeviceSize* pRowPitchAlignment)
7398{
7399 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007400 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007401 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
Yilong Lia48b0102020-09-15 15:08:28 -07007402}
7403static void dynCheck_entry_vkGetLinearImageLayoutGOOGLE(
7404 VkDevice device,
7405 VkFormat format,
7406 VkDeviceSize* pOffset,
7407 VkDeviceSize* pRowPitchAlignment)
7408{
7409 auto resources = ResourceTracker::get();
7410 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_linear_image_layout"))
7411 {
7412 sOnInvalidDynamicallyCheckedCall("vkGetLinearImageLayoutGOOGLE", "VK_GOOGLE_linear_image_layout");
7413 }
7414 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007415 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007416 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
Yilong Lia48b0102020-09-15 15:08:28 -07007417}
7418#endif
Lingfeng Yangded34672021-01-22 23:17:47 -08007419#ifdef VK_GOOGLE_queue_submit_with_commands
7420static void entry_vkQueueFlushCommandsGOOGLE(
7421 VkQueue queue,
7422 VkCommandBuffer commandBuffer,
7423 VkDeviceSize dataSize,
7424 const void* pData)
7425{
7426 AEMU_SCOPED_TRACE("vkQueueFlushCommandsGOOGLE");
7427 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
7428 vkEnc->vkQueueFlushCommandsGOOGLE(queue, commandBuffer, dataSize, pData, true /* do lock */);
7429}
7430#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007431#ifdef VK_KHR_acceleration_structure
7432static VkResult entry_vkCreateAccelerationStructureKHR(
7433 VkDevice device,
7434 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
7435 const VkAllocationCallbacks* pAllocator,
7436 VkAccelerationStructureKHR* pAccelerationStructure)
7437{
7438 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
7439 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7440 VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
7441 vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
7442 return vkCreateAccelerationStructureKHR_VkResult_return;
7443}
7444static VkResult dynCheck_entry_vkCreateAccelerationStructureKHR(
7445 VkDevice device,
7446 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
7447 const VkAllocationCallbacks* pAllocator,
7448 VkAccelerationStructureKHR* pAccelerationStructure)
7449{
7450 auto resources = ResourceTracker::get();
7451 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7452 {
7453 sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7454 }
7455 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
7456 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7457 VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
7458 vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
7459 return vkCreateAccelerationStructureKHR_VkResult_return;
7460}
7461static void entry_vkDestroyAccelerationStructureKHR(
7462 VkDevice device,
7463 VkAccelerationStructureKHR accelerationStructure,
7464 const VkAllocationCallbacks* pAllocator)
7465{
7466 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
7467 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7468 vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
7469}
7470static void dynCheck_entry_vkDestroyAccelerationStructureKHR(
7471 VkDevice device,
7472 VkAccelerationStructureKHR accelerationStructure,
7473 const VkAllocationCallbacks* pAllocator)
7474{
7475 auto resources = ResourceTracker::get();
7476 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7477 {
7478 sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7479 }
7480 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
7481 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7482 vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
7483}
7484static void entry_vkCmdBuildAccelerationStructuresKHR(
7485 VkCommandBuffer commandBuffer,
7486 uint32_t infoCount,
7487 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7488 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
7489{
7490 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresKHR");
7491 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7492 vkEnc->vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
7493}
7494static void entry_vkCmdBuildAccelerationStructuresIndirectKHR(
7495 VkCommandBuffer commandBuffer,
7496 uint32_t infoCount,
7497 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7498 const VkDeviceAddress* pIndirectDeviceAddresses,
7499 const uint32_t* pIndirectStrides,
7500 const uint32_t* const* ppMaxPrimitiveCounts)
7501{
7502 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresIndirectKHR");
7503 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7504 vkEnc->vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, true /* do lock */);
7505}
7506static VkResult entry_vkBuildAccelerationStructuresKHR(
7507 VkDevice device,
7508 VkDeferredOperationKHR deferredOperation,
7509 uint32_t infoCount,
7510 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7511 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
7512{
7513 AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
7514 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7515 VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
7516 vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
7517 return vkBuildAccelerationStructuresKHR_VkResult_return;
7518}
7519static VkResult dynCheck_entry_vkBuildAccelerationStructuresKHR(
7520 VkDevice device,
7521 VkDeferredOperationKHR deferredOperation,
7522 uint32_t infoCount,
7523 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7524 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
7525{
7526 auto resources = ResourceTracker::get();
7527 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7528 {
7529 sOnInvalidDynamicallyCheckedCall("vkBuildAccelerationStructuresKHR", "VK_KHR_acceleration_structure");
7530 }
7531 AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
7532 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7533 VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
7534 vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
7535 return vkBuildAccelerationStructuresKHR_VkResult_return;
7536}
7537static VkResult entry_vkCopyAccelerationStructureKHR(
7538 VkDevice device,
7539 VkDeferredOperationKHR deferredOperation,
7540 const VkCopyAccelerationStructureInfoKHR* pInfo)
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 dynCheck_entry_vkCopyAccelerationStructureKHR(
7549 VkDevice device,
7550 VkDeferredOperationKHR deferredOperation,
7551 const VkCopyAccelerationStructureInfoKHR* pInfo)
7552{
7553 auto resources = ResourceTracker::get();
7554 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7555 {
7556 sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7557 }
7558 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
7559 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7560 VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
7561 vkCopyAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7562 return vkCopyAccelerationStructureKHR_VkResult_return;
7563}
7564static VkResult entry_vkCopyAccelerationStructureToMemoryKHR(
7565 VkDevice device,
7566 VkDeferredOperationKHR deferredOperation,
7567 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
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 dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR(
7576 VkDevice device,
7577 VkDeferredOperationKHR deferredOperation,
7578 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
7579{
7580 auto resources = ResourceTracker::get();
7581 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7582 {
7583 sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureToMemoryKHR", "VK_KHR_acceleration_structure");
7584 }
7585 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
7586 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7587 VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
7588 vkCopyAccelerationStructureToMemoryKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, true /* do lock */);
7589 return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
7590}
7591static VkResult entry_vkCopyMemoryToAccelerationStructureKHR(
7592 VkDevice device,
7593 VkDeferredOperationKHR deferredOperation,
7594 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
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 dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR(
7603 VkDevice device,
7604 VkDeferredOperationKHR deferredOperation,
7605 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
7606{
7607 auto resources = ResourceTracker::get();
7608 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7609 {
7610 sOnInvalidDynamicallyCheckedCall("vkCopyMemoryToAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7611 }
7612 AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
7613 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7614 VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
7615 vkCopyMemoryToAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7616 return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
7617}
7618static VkResult entry_vkWriteAccelerationStructuresPropertiesKHR(
7619 VkDevice device,
7620 uint32_t accelerationStructureCount,
7621 const VkAccelerationStructureKHR* pAccelerationStructures,
7622 VkQueryType queryType,
7623 size_t dataSize,
7624 void* pData,
7625 size_t stride)
7626{
7627 AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
7628 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7629 VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
7630 vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
7631 return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
7632}
7633static VkResult dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR(
7634 VkDevice device,
7635 uint32_t accelerationStructureCount,
7636 const VkAccelerationStructureKHR* pAccelerationStructures,
7637 VkQueryType queryType,
7638 size_t dataSize,
7639 void* pData,
7640 size_t stride)
7641{
7642 auto resources = ResourceTracker::get();
7643 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7644 {
7645 sOnInvalidDynamicallyCheckedCall("vkWriteAccelerationStructuresPropertiesKHR", "VK_KHR_acceleration_structure");
7646 }
7647 AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
7648 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7649 VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
7650 vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
7651 return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
7652}
7653static void entry_vkCmdCopyAccelerationStructureKHR(
7654 VkCommandBuffer commandBuffer,
7655 const VkCopyAccelerationStructureInfoKHR* pInfo)
7656{
7657 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureKHR");
7658 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7659 vkEnc->vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
7660}
7661static void entry_vkCmdCopyAccelerationStructureToMemoryKHR(
7662 VkCommandBuffer commandBuffer,
7663 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
7664{
7665 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureToMemoryKHR");
7666 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7667 vkEnc->vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, true /* do lock */);
7668}
7669static void entry_vkCmdCopyMemoryToAccelerationStructureKHR(
7670 VkCommandBuffer commandBuffer,
7671 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
7672{
7673 AEMU_SCOPED_TRACE("vkCmdCopyMemoryToAccelerationStructureKHR");
7674 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7675 vkEnc->vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
7676}
7677static VkDeviceAddress entry_vkGetAccelerationStructureDeviceAddressKHR(
7678 VkDevice device,
7679 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
7680{
7681 AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
7682 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7683 VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
7684 vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
7685 return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
7686}
7687static VkDeviceAddress dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR(
7688 VkDevice device,
7689 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
7690{
7691 auto resources = ResourceTracker::get();
7692 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7693 {
7694 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureDeviceAddressKHR", "VK_KHR_acceleration_structure");
7695 }
7696 AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
7697 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7698 VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
7699 vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
7700 return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
7701}
7702static void entry_vkCmdWriteAccelerationStructuresPropertiesKHR(
7703 VkCommandBuffer commandBuffer,
7704 uint32_t accelerationStructureCount,
7705 const VkAccelerationStructureKHR* pAccelerationStructures,
7706 VkQueryType queryType,
7707 VkQueryPool queryPool,
7708 uint32_t firstQuery)
7709{
7710 AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesKHR");
7711 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7712 vkEnc->vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
7713}
7714static void entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
7715 VkDevice device,
7716 const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
7717 VkAccelerationStructureCompatibilityKHR* pCompatibility)
7718{
7719 AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
7720 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7721 vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
7722}
7723static void dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
7724 VkDevice device,
7725 const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
7726 VkAccelerationStructureCompatibilityKHR* pCompatibility)
7727{
7728 auto resources = ResourceTracker::get();
7729 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7730 {
7731 sOnInvalidDynamicallyCheckedCall("vkGetDeviceAccelerationStructureCompatibilityKHR", "VK_KHR_acceleration_structure");
7732 }
7733 AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
7734 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7735 vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
7736}
7737static void entry_vkGetAccelerationStructureBuildSizesKHR(
7738 VkDevice device,
7739 VkAccelerationStructureBuildTypeKHR buildType,
7740 const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
7741 const uint32_t* pMaxPrimitiveCounts,
7742 VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
7743{
7744 AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
7745 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7746 vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
7747}
7748static void dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR(
7749 VkDevice device,
7750 VkAccelerationStructureBuildTypeKHR buildType,
7751 const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
7752 const uint32_t* pMaxPrimitiveCounts,
7753 VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
7754{
7755 auto resources = ResourceTracker::get();
7756 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7757 {
7758 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureBuildSizesKHR", "VK_KHR_acceleration_structure");
7759 }
7760 AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
7761 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7762 vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
7763}
7764#endif
7765#ifdef VK_KHR_ray_tracing_pipeline
7766static void entry_vkCmdTraceRaysKHR(
7767 VkCommandBuffer commandBuffer,
7768 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
7769 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
7770 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
7771 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
7772 uint32_t width,
7773 uint32_t height,
7774 uint32_t depth)
7775{
7776 AEMU_SCOPED_TRACE("vkCmdTraceRaysKHR");
7777 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7778 vkEnc->vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, true /* do lock */);
7779}
7780static VkResult entry_vkCreateRayTracingPipelinesKHR(
7781 VkDevice device,
7782 VkDeferredOperationKHR deferredOperation,
7783 VkPipelineCache pipelineCache,
7784 uint32_t createInfoCount,
7785 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
7786 const VkAllocationCallbacks* pAllocator,
7787 VkPipeline* pPipelines)
7788{
7789 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
7790 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7791 VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
7792 vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
7793 return vkCreateRayTracingPipelinesKHR_VkResult_return;
7794}
7795static VkResult dynCheck_entry_vkCreateRayTracingPipelinesKHR(
7796 VkDevice device,
7797 VkDeferredOperationKHR deferredOperation,
7798 VkPipelineCache pipelineCache,
7799 uint32_t createInfoCount,
7800 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
7801 const VkAllocationCallbacks* pAllocator,
7802 VkPipeline* pPipelines)
7803{
7804 auto resources = ResourceTracker::get();
7805 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
7806 {
7807 sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesKHR", "VK_KHR_ray_tracing_pipeline");
7808 }
7809 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
7810 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7811 VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
7812 vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
7813 return vkCreateRayTracingPipelinesKHR_VkResult_return;
7814}
7815static VkResult entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
7816 VkDevice device,
7817 VkPipeline pipeline,
7818 uint32_t firstGroup,
7819 uint32_t groupCount,
7820 size_t dataSize,
7821 void* pData)
7822{
7823 AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
7824 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7825 VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
7826 vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
7827 return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
7828}
7829static VkResult dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
7830 VkDevice device,
7831 VkPipeline pipeline,
7832 uint32_t firstGroup,
7833 uint32_t groupCount,
7834 size_t dataSize,
7835 void* pData)
7836{
7837 auto resources = ResourceTracker::get();
7838 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
7839 {
7840 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR", "VK_KHR_ray_tracing_pipeline");
7841 }
7842 AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
7843 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7844 VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
7845 vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
7846 return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
7847}
7848static void entry_vkCmdTraceRaysIndirectKHR(
7849 VkCommandBuffer commandBuffer,
7850 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
7851 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
7852 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
7853 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
7854 VkDeviceAddress indirectDeviceAddress)
7855{
7856 AEMU_SCOPED_TRACE("vkCmdTraceRaysIndirectKHR");
7857 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7858 vkEnc->vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, true /* do lock */);
7859}
7860static VkDeviceSize entry_vkGetRayTracingShaderGroupStackSizeKHR(
7861 VkDevice device,
7862 VkPipeline pipeline,
7863 uint32_t group,
7864 VkShaderGroupShaderKHR groupShader)
7865{
7866 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
7867 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7868 VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
7869 vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
7870 return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
7871}
7872static VkDeviceSize dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR(
7873 VkDevice device,
7874 VkPipeline pipeline,
7875 uint32_t group,
7876 VkShaderGroupShaderKHR groupShader)
7877{
7878 auto resources = ResourceTracker::get();
7879 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
7880 {
7881 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupStackSizeKHR", "VK_KHR_ray_tracing_pipeline");
7882 }
7883 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
7884 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7885 VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
7886 vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
7887 return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
7888}
7889static void entry_vkCmdSetRayTracingPipelineStackSizeKHR(
7890 VkCommandBuffer commandBuffer,
7891 uint32_t pipelineStackSize)
7892{
7893 AEMU_SCOPED_TRACE("vkCmdSetRayTracingPipelineStackSizeKHR");
7894 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7895 vkEnc->vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, true /* do lock */);
7896}
7897#endif
7898#ifdef VK_KHR_ray_query
7899#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007900void* goldfish_vulkan_get_proc_address(const char* name){
7901#ifdef VK_VERSION_1_0
7902 if (!strcmp(name, "vkCreateInstance"))
7903 {
7904 return (void*)entry_vkCreateInstance;
7905 }
7906 if (!strcmp(name, "vkDestroyInstance"))
7907 {
7908 return (void*)entry_vkDestroyInstance;
7909 }
7910 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
7911 {
7912 return (void*)entry_vkEnumeratePhysicalDevices;
7913 }
7914 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
7915 {
7916 return (void*)entry_vkGetPhysicalDeviceFeatures;
7917 }
7918 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
7919 {
7920 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
7921 }
7922 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
7923 {
7924 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
7925 }
7926 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
7927 {
7928 return (void*)entry_vkGetPhysicalDeviceProperties;
7929 }
7930 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
7931 {
7932 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
7933 }
7934 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
7935 {
7936 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
7937 }
7938 if (!strcmp(name, "vkGetInstanceProcAddr"))
7939 {
7940 return (void*)entry_vkGetInstanceProcAddr;
7941 }
7942 if (!strcmp(name, "vkGetDeviceProcAddr"))
7943 {
7944 return (void*)entry_vkGetDeviceProcAddr;
7945 }
7946 if (!strcmp(name, "vkCreateDevice"))
7947 {
7948 return (void*)entry_vkCreateDevice;
7949 }
7950 if (!strcmp(name, "vkDestroyDevice"))
7951 {
7952 return (void*)entry_vkDestroyDevice;
7953 }
7954 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
7955 {
7956 return (void*)entry_vkEnumerateInstanceExtensionProperties;
7957 }
7958 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
7959 {
7960 return (void*)entry_vkEnumerateDeviceExtensionProperties;
7961 }
7962 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
7963 {
7964 return (void*)entry_vkEnumerateInstanceLayerProperties;
7965 }
7966 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
7967 {
7968 return (void*)entry_vkEnumerateDeviceLayerProperties;
7969 }
7970 if (!strcmp(name, "vkGetDeviceQueue"))
7971 {
7972 return (void*)entry_vkGetDeviceQueue;
7973 }
7974 if (!strcmp(name, "vkQueueSubmit"))
7975 {
7976 return (void*)entry_vkQueueSubmit;
7977 }
7978 if (!strcmp(name, "vkQueueWaitIdle"))
7979 {
7980 return (void*)entry_vkQueueWaitIdle;
7981 }
7982 if (!strcmp(name, "vkDeviceWaitIdle"))
7983 {
7984 return (void*)entry_vkDeviceWaitIdle;
7985 }
7986 if (!strcmp(name, "vkAllocateMemory"))
7987 {
7988 return (void*)entry_vkAllocateMemory;
7989 }
7990 if (!strcmp(name, "vkFreeMemory"))
7991 {
7992 return (void*)entry_vkFreeMemory;
7993 }
7994 if (!strcmp(name, "vkMapMemory"))
7995 {
7996 return (void*)entry_vkMapMemory;
7997 }
7998 if (!strcmp(name, "vkUnmapMemory"))
7999 {
8000 return (void*)entry_vkUnmapMemory;
8001 }
8002 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
8003 {
8004 return (void*)entry_vkFlushMappedMemoryRanges;
8005 }
8006 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
8007 {
8008 return (void*)entry_vkInvalidateMappedMemoryRanges;
8009 }
8010 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
8011 {
8012 return (void*)entry_vkGetDeviceMemoryCommitment;
8013 }
8014 if (!strcmp(name, "vkBindBufferMemory"))
8015 {
8016 return (void*)entry_vkBindBufferMemory;
8017 }
8018 if (!strcmp(name, "vkBindImageMemory"))
8019 {
8020 return (void*)entry_vkBindImageMemory;
8021 }
8022 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
8023 {
8024 return (void*)entry_vkGetBufferMemoryRequirements;
8025 }
8026 if (!strcmp(name, "vkGetImageMemoryRequirements"))
8027 {
8028 return (void*)entry_vkGetImageMemoryRequirements;
8029 }
8030 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
8031 {
8032 return (void*)entry_vkGetImageSparseMemoryRequirements;
8033 }
8034 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
8035 {
8036 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
8037 }
8038 if (!strcmp(name, "vkQueueBindSparse"))
8039 {
8040 return (void*)entry_vkQueueBindSparse;
8041 }
8042 if (!strcmp(name, "vkCreateFence"))
8043 {
8044 return (void*)entry_vkCreateFence;
8045 }
8046 if (!strcmp(name, "vkDestroyFence"))
8047 {
8048 return (void*)entry_vkDestroyFence;
8049 }
8050 if (!strcmp(name, "vkResetFences"))
8051 {
8052 return (void*)entry_vkResetFences;
8053 }
8054 if (!strcmp(name, "vkGetFenceStatus"))
8055 {
8056 return (void*)entry_vkGetFenceStatus;
8057 }
8058 if (!strcmp(name, "vkWaitForFences"))
8059 {
8060 return (void*)entry_vkWaitForFences;
8061 }
8062 if (!strcmp(name, "vkCreateSemaphore"))
8063 {
8064 return (void*)entry_vkCreateSemaphore;
8065 }
8066 if (!strcmp(name, "vkDestroySemaphore"))
8067 {
8068 return (void*)entry_vkDestroySemaphore;
8069 }
8070 if (!strcmp(name, "vkCreateEvent"))
8071 {
8072 return (void*)entry_vkCreateEvent;
8073 }
8074 if (!strcmp(name, "vkDestroyEvent"))
8075 {
8076 return (void*)entry_vkDestroyEvent;
8077 }
8078 if (!strcmp(name, "vkGetEventStatus"))
8079 {
8080 return (void*)entry_vkGetEventStatus;
8081 }
8082 if (!strcmp(name, "vkSetEvent"))
8083 {
8084 return (void*)entry_vkSetEvent;
8085 }
8086 if (!strcmp(name, "vkResetEvent"))
8087 {
8088 return (void*)entry_vkResetEvent;
8089 }
8090 if (!strcmp(name, "vkCreateQueryPool"))
8091 {
8092 return (void*)entry_vkCreateQueryPool;
8093 }
8094 if (!strcmp(name, "vkDestroyQueryPool"))
8095 {
8096 return (void*)entry_vkDestroyQueryPool;
8097 }
8098 if (!strcmp(name, "vkGetQueryPoolResults"))
8099 {
8100 return (void*)entry_vkGetQueryPoolResults;
8101 }
8102 if (!strcmp(name, "vkCreateBuffer"))
8103 {
8104 return (void*)entry_vkCreateBuffer;
8105 }
8106 if (!strcmp(name, "vkDestroyBuffer"))
8107 {
8108 return (void*)entry_vkDestroyBuffer;
8109 }
8110 if (!strcmp(name, "vkCreateBufferView"))
8111 {
8112 return (void*)entry_vkCreateBufferView;
8113 }
8114 if (!strcmp(name, "vkDestroyBufferView"))
8115 {
8116 return (void*)entry_vkDestroyBufferView;
8117 }
8118 if (!strcmp(name, "vkCreateImage"))
8119 {
8120 return (void*)entry_vkCreateImage;
8121 }
8122 if (!strcmp(name, "vkDestroyImage"))
8123 {
8124 return (void*)entry_vkDestroyImage;
8125 }
8126 if (!strcmp(name, "vkGetImageSubresourceLayout"))
8127 {
8128 return (void*)entry_vkGetImageSubresourceLayout;
8129 }
8130 if (!strcmp(name, "vkCreateImageView"))
8131 {
8132 return (void*)entry_vkCreateImageView;
8133 }
8134 if (!strcmp(name, "vkDestroyImageView"))
8135 {
8136 return (void*)entry_vkDestroyImageView;
8137 }
8138 if (!strcmp(name, "vkCreateShaderModule"))
8139 {
8140 return (void*)entry_vkCreateShaderModule;
8141 }
8142 if (!strcmp(name, "vkDestroyShaderModule"))
8143 {
8144 return (void*)entry_vkDestroyShaderModule;
8145 }
8146 if (!strcmp(name, "vkCreatePipelineCache"))
8147 {
8148 return (void*)entry_vkCreatePipelineCache;
8149 }
8150 if (!strcmp(name, "vkDestroyPipelineCache"))
8151 {
8152 return (void*)entry_vkDestroyPipelineCache;
8153 }
8154 if (!strcmp(name, "vkGetPipelineCacheData"))
8155 {
8156 return (void*)entry_vkGetPipelineCacheData;
8157 }
8158 if (!strcmp(name, "vkMergePipelineCaches"))
8159 {
8160 return (void*)entry_vkMergePipelineCaches;
8161 }
8162 if (!strcmp(name, "vkCreateGraphicsPipelines"))
8163 {
8164 return (void*)entry_vkCreateGraphicsPipelines;
8165 }
8166 if (!strcmp(name, "vkCreateComputePipelines"))
8167 {
8168 return (void*)entry_vkCreateComputePipelines;
8169 }
8170 if (!strcmp(name, "vkDestroyPipeline"))
8171 {
8172 return (void*)entry_vkDestroyPipeline;
8173 }
8174 if (!strcmp(name, "vkCreatePipelineLayout"))
8175 {
8176 return (void*)entry_vkCreatePipelineLayout;
8177 }
8178 if (!strcmp(name, "vkDestroyPipelineLayout"))
8179 {
8180 return (void*)entry_vkDestroyPipelineLayout;
8181 }
8182 if (!strcmp(name, "vkCreateSampler"))
8183 {
8184 return (void*)entry_vkCreateSampler;
8185 }
8186 if (!strcmp(name, "vkDestroySampler"))
8187 {
8188 return (void*)entry_vkDestroySampler;
8189 }
8190 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
8191 {
8192 return (void*)entry_vkCreateDescriptorSetLayout;
8193 }
8194 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
8195 {
8196 return (void*)entry_vkDestroyDescriptorSetLayout;
8197 }
8198 if (!strcmp(name, "vkCreateDescriptorPool"))
8199 {
8200 return (void*)entry_vkCreateDescriptorPool;
8201 }
8202 if (!strcmp(name, "vkDestroyDescriptorPool"))
8203 {
8204 return (void*)entry_vkDestroyDescriptorPool;
8205 }
8206 if (!strcmp(name, "vkResetDescriptorPool"))
8207 {
8208 return (void*)entry_vkResetDescriptorPool;
8209 }
8210 if (!strcmp(name, "vkAllocateDescriptorSets"))
8211 {
8212 return (void*)entry_vkAllocateDescriptorSets;
8213 }
8214 if (!strcmp(name, "vkFreeDescriptorSets"))
8215 {
8216 return (void*)entry_vkFreeDescriptorSets;
8217 }
8218 if (!strcmp(name, "vkUpdateDescriptorSets"))
8219 {
8220 return (void*)entry_vkUpdateDescriptorSets;
8221 }
8222 if (!strcmp(name, "vkCreateFramebuffer"))
8223 {
8224 return (void*)entry_vkCreateFramebuffer;
8225 }
8226 if (!strcmp(name, "vkDestroyFramebuffer"))
8227 {
8228 return (void*)entry_vkDestroyFramebuffer;
8229 }
8230 if (!strcmp(name, "vkCreateRenderPass"))
8231 {
8232 return (void*)entry_vkCreateRenderPass;
8233 }
8234 if (!strcmp(name, "vkDestroyRenderPass"))
8235 {
8236 return (void*)entry_vkDestroyRenderPass;
8237 }
8238 if (!strcmp(name, "vkGetRenderAreaGranularity"))
8239 {
8240 return (void*)entry_vkGetRenderAreaGranularity;
8241 }
8242 if (!strcmp(name, "vkCreateCommandPool"))
8243 {
8244 return (void*)entry_vkCreateCommandPool;
8245 }
8246 if (!strcmp(name, "vkDestroyCommandPool"))
8247 {
8248 return (void*)entry_vkDestroyCommandPool;
8249 }
8250 if (!strcmp(name, "vkResetCommandPool"))
8251 {
8252 return (void*)entry_vkResetCommandPool;
8253 }
8254 if (!strcmp(name, "vkAllocateCommandBuffers"))
8255 {
8256 return (void*)entry_vkAllocateCommandBuffers;
8257 }
8258 if (!strcmp(name, "vkFreeCommandBuffers"))
8259 {
8260 return (void*)entry_vkFreeCommandBuffers;
8261 }
8262 if (!strcmp(name, "vkBeginCommandBuffer"))
8263 {
8264 return (void*)entry_vkBeginCommandBuffer;
8265 }
8266 if (!strcmp(name, "vkEndCommandBuffer"))
8267 {
8268 return (void*)entry_vkEndCommandBuffer;
8269 }
8270 if (!strcmp(name, "vkResetCommandBuffer"))
8271 {
8272 return (void*)entry_vkResetCommandBuffer;
8273 }
8274 if (!strcmp(name, "vkCmdBindPipeline"))
8275 {
8276 return (void*)entry_vkCmdBindPipeline;
8277 }
8278 if (!strcmp(name, "vkCmdSetViewport"))
8279 {
8280 return (void*)entry_vkCmdSetViewport;
8281 }
8282 if (!strcmp(name, "vkCmdSetScissor"))
8283 {
8284 return (void*)entry_vkCmdSetScissor;
8285 }
8286 if (!strcmp(name, "vkCmdSetLineWidth"))
8287 {
8288 return (void*)entry_vkCmdSetLineWidth;
8289 }
8290 if (!strcmp(name, "vkCmdSetDepthBias"))
8291 {
8292 return (void*)entry_vkCmdSetDepthBias;
8293 }
8294 if (!strcmp(name, "vkCmdSetBlendConstants"))
8295 {
8296 return (void*)entry_vkCmdSetBlendConstants;
8297 }
8298 if (!strcmp(name, "vkCmdSetDepthBounds"))
8299 {
8300 return (void*)entry_vkCmdSetDepthBounds;
8301 }
8302 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
8303 {
8304 return (void*)entry_vkCmdSetStencilCompareMask;
8305 }
8306 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
8307 {
8308 return (void*)entry_vkCmdSetStencilWriteMask;
8309 }
8310 if (!strcmp(name, "vkCmdSetStencilReference"))
8311 {
8312 return (void*)entry_vkCmdSetStencilReference;
8313 }
8314 if (!strcmp(name, "vkCmdBindDescriptorSets"))
8315 {
8316 return (void*)entry_vkCmdBindDescriptorSets;
8317 }
8318 if (!strcmp(name, "vkCmdBindIndexBuffer"))
8319 {
8320 return (void*)entry_vkCmdBindIndexBuffer;
8321 }
8322 if (!strcmp(name, "vkCmdBindVertexBuffers"))
8323 {
8324 return (void*)entry_vkCmdBindVertexBuffers;
8325 }
8326 if (!strcmp(name, "vkCmdDraw"))
8327 {
8328 return (void*)entry_vkCmdDraw;
8329 }
8330 if (!strcmp(name, "vkCmdDrawIndexed"))
8331 {
8332 return (void*)entry_vkCmdDrawIndexed;
8333 }
8334 if (!strcmp(name, "vkCmdDrawIndirect"))
8335 {
8336 return (void*)entry_vkCmdDrawIndirect;
8337 }
8338 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
8339 {
8340 return (void*)entry_vkCmdDrawIndexedIndirect;
8341 }
8342 if (!strcmp(name, "vkCmdDispatch"))
8343 {
8344 return (void*)entry_vkCmdDispatch;
8345 }
8346 if (!strcmp(name, "vkCmdDispatchIndirect"))
8347 {
8348 return (void*)entry_vkCmdDispatchIndirect;
8349 }
8350 if (!strcmp(name, "vkCmdCopyBuffer"))
8351 {
8352 return (void*)entry_vkCmdCopyBuffer;
8353 }
8354 if (!strcmp(name, "vkCmdCopyImage"))
8355 {
8356 return (void*)entry_vkCmdCopyImage;
8357 }
8358 if (!strcmp(name, "vkCmdBlitImage"))
8359 {
8360 return (void*)entry_vkCmdBlitImage;
8361 }
8362 if (!strcmp(name, "vkCmdCopyBufferToImage"))
8363 {
8364 return (void*)entry_vkCmdCopyBufferToImage;
8365 }
8366 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
8367 {
8368 return (void*)entry_vkCmdCopyImageToBuffer;
8369 }
8370 if (!strcmp(name, "vkCmdUpdateBuffer"))
8371 {
8372 return (void*)entry_vkCmdUpdateBuffer;
8373 }
8374 if (!strcmp(name, "vkCmdFillBuffer"))
8375 {
8376 return (void*)entry_vkCmdFillBuffer;
8377 }
8378 if (!strcmp(name, "vkCmdClearColorImage"))
8379 {
8380 return (void*)entry_vkCmdClearColorImage;
8381 }
8382 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
8383 {
8384 return (void*)entry_vkCmdClearDepthStencilImage;
8385 }
8386 if (!strcmp(name, "vkCmdClearAttachments"))
8387 {
8388 return (void*)entry_vkCmdClearAttachments;
8389 }
8390 if (!strcmp(name, "vkCmdResolveImage"))
8391 {
8392 return (void*)entry_vkCmdResolveImage;
8393 }
8394 if (!strcmp(name, "vkCmdSetEvent"))
8395 {
8396 return (void*)entry_vkCmdSetEvent;
8397 }
8398 if (!strcmp(name, "vkCmdResetEvent"))
8399 {
8400 return (void*)entry_vkCmdResetEvent;
8401 }
8402 if (!strcmp(name, "vkCmdWaitEvents"))
8403 {
8404 return (void*)entry_vkCmdWaitEvents;
8405 }
8406 if (!strcmp(name, "vkCmdPipelineBarrier"))
8407 {
8408 return (void*)entry_vkCmdPipelineBarrier;
8409 }
8410 if (!strcmp(name, "vkCmdBeginQuery"))
8411 {
8412 return (void*)entry_vkCmdBeginQuery;
8413 }
8414 if (!strcmp(name, "vkCmdEndQuery"))
8415 {
8416 return (void*)entry_vkCmdEndQuery;
8417 }
8418 if (!strcmp(name, "vkCmdResetQueryPool"))
8419 {
8420 return (void*)entry_vkCmdResetQueryPool;
8421 }
8422 if (!strcmp(name, "vkCmdWriteTimestamp"))
8423 {
8424 return (void*)entry_vkCmdWriteTimestamp;
8425 }
8426 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
8427 {
8428 return (void*)entry_vkCmdCopyQueryPoolResults;
8429 }
8430 if (!strcmp(name, "vkCmdPushConstants"))
8431 {
8432 return (void*)entry_vkCmdPushConstants;
8433 }
8434 if (!strcmp(name, "vkCmdBeginRenderPass"))
8435 {
8436 return (void*)entry_vkCmdBeginRenderPass;
8437 }
8438 if (!strcmp(name, "vkCmdNextSubpass"))
8439 {
8440 return (void*)entry_vkCmdNextSubpass;
8441 }
8442 if (!strcmp(name, "vkCmdEndRenderPass"))
8443 {
8444 return (void*)entry_vkCmdEndRenderPass;
8445 }
8446 if (!strcmp(name, "vkCmdExecuteCommands"))
8447 {
8448 return (void*)entry_vkCmdExecuteCommands;
8449 }
8450#endif
8451#ifdef VK_VERSION_1_1
8452 if (!strcmp(name, "vkEnumerateInstanceVersion"))
8453 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008454 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008455 }
8456 if (!strcmp(name, "vkBindBufferMemory2"))
8457 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008458 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008459 }
8460 if (!strcmp(name, "vkBindImageMemory2"))
8461 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008462 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008463 }
8464 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
8465 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008466 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008467 }
8468 if (!strcmp(name, "vkCmdSetDeviceMask"))
8469 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008470 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008471 }
8472 if (!strcmp(name, "vkCmdDispatchBase"))
8473 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008474 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008475 }
8476 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
8477 {
Lingfeng Yang113689e2018-11-11 16:48:50 -08008478 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008479 }
8480 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
8481 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008482 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008483 }
8484 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
8485 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008486 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008487 }
8488 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
8489 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008490 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008491 }
8492 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
8493 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008494 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008495 }
8496 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
8497 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008498 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008499 }
8500 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
8501 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008502 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008503 }
8504 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
8505 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008506 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008507 }
8508 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
8509 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008510 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008511 }
8512 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
8513 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008514 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008515 }
8516 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
8517 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008518 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008519 }
8520 if (!strcmp(name, "vkTrimCommandPool"))
8521 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008522 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008523 }
8524 if (!strcmp(name, "vkGetDeviceQueue2"))
8525 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008526 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008527 }
8528 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
8529 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008530 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008531 }
8532 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
8533 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008534 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008535 }
8536 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
8537 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008538 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008539 }
8540 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
8541 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008542 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008543 }
8544 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
8545 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008546 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008547 }
8548 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
8549 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008550 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008551 }
8552 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
8553 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008554 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008555 }
8556 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
8557 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008558 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008559 }
8560 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
8561 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008562 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008563 }
8564#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008565#ifdef VK_VERSION_1_2
8566 if (!strcmp(name, "vkCmdDrawIndirectCount"))
8567 {
8568 return nullptr;
8569 }
8570 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
8571 {
8572 return nullptr;
8573 }
8574 if (!strcmp(name, "vkCreateRenderPass2"))
8575 {
8576 return nullptr;
8577 }
8578 if (!strcmp(name, "vkCmdBeginRenderPass2"))
8579 {
8580 return nullptr;
8581 }
8582 if (!strcmp(name, "vkCmdNextSubpass2"))
8583 {
8584 return nullptr;
8585 }
8586 if (!strcmp(name, "vkCmdEndRenderPass2"))
8587 {
8588 return nullptr;
8589 }
8590 if (!strcmp(name, "vkResetQueryPool"))
8591 {
8592 return nullptr;
8593 }
8594 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
8595 {
8596 return nullptr;
8597 }
8598 if (!strcmp(name, "vkWaitSemaphores"))
8599 {
8600 return nullptr;
8601 }
8602 if (!strcmp(name, "vkSignalSemaphore"))
8603 {
8604 return nullptr;
8605 }
8606 if (!strcmp(name, "vkGetBufferDeviceAddress"))
8607 {
8608 return nullptr;
8609 }
8610 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
8611 {
8612 return nullptr;
8613 }
8614 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
8615 {
8616 return nullptr;
8617 }
8618#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008619#ifdef VK_KHR_surface
8620 if (!strcmp(name, "vkDestroySurfaceKHR"))
8621 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008622 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008623 }
8624 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
8625 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008626 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008627 }
8628 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
8629 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008630 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008631 }
8632 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
8633 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008634 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008635 }
8636 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
8637 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008638 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008639 }
8640#endif
8641#ifdef VK_KHR_swapchain
8642 if (!strcmp(name, "vkCreateSwapchainKHR"))
8643 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008644 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008645 }
8646 if (!strcmp(name, "vkDestroySwapchainKHR"))
8647 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008648 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008649 }
8650 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
8651 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008652 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008653 }
8654 if (!strcmp(name, "vkAcquireNextImageKHR"))
8655 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008656 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008657 }
8658 if (!strcmp(name, "vkQueuePresentKHR"))
8659 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008660 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008661 }
8662 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
8663 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008664 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008665 }
8666 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
8667 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008668 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008669 }
8670 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
8671 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008672 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008673 }
8674 if (!strcmp(name, "vkAcquireNextImage2KHR"))
8675 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008676 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008677 }
8678#endif
8679#ifdef VK_KHR_display
8680 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
8681 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008682 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008683 }
8684 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
8685 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008686 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008687 }
8688 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
8689 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008690 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008691 }
8692 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
8693 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008694 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008695 }
8696 if (!strcmp(name, "vkCreateDisplayModeKHR"))
8697 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008698 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008699 }
8700 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
8701 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008702 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008703 }
8704 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
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_display_swapchain
8710 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
8711 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008712 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008713 }
8714#endif
8715#ifdef VK_KHR_xlib_surface
8716 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
8717 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008718 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008719 }
8720 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
8721 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008722 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008723 }
8724#endif
8725#ifdef VK_KHR_xcb_surface
8726 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
8727 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008728 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008729 }
8730 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
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_wayland_surface
8736 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
8737 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008738 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008739 }
8740 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
8741 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008742 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008743 }
8744#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008745#ifdef VK_KHR_android_surface
8746 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
8747 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008748 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008749 }
8750#endif
8751#ifdef VK_KHR_win32_surface
8752 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
8753 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008754 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008755 }
8756 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
8757 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008758 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008759 }
8760#endif
8761#ifdef VK_KHR_get_physical_device_properties2
8762 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
8763 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008764 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008765 }
8766 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
8767 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008768 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008769 }
8770 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
8771 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008772 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008773 }
8774 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
8775 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008776 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008777 }
8778 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
8779 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008780 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008781 }
8782 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
8783 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008784 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008785 }
8786 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
8787 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008788 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008789 }
8790#endif
8791#ifdef VK_KHR_device_group
8792 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
8793 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008794 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008795 }
8796 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
8797 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008798 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008799 }
8800 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
8801 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008802 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008803 }
8804#endif
8805#ifdef VK_KHR_maintenance1
8806 if (!strcmp(name, "vkTrimCommandPoolKHR"))
8807 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008808 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008809 }
8810#endif
8811#ifdef VK_KHR_device_group_creation
8812 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
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_capabilities
8818 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
8819 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008820 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008821 }
8822#endif
8823#ifdef VK_KHR_external_memory_win32
8824 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
8825 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008826 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008827 }
8828 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
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_memory_fd
8834 if (!strcmp(name, "vkGetMemoryFdKHR"))
8835 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008836 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008837 }
8838 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
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_capabilities
8844 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
8845 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008846 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008847 }
8848#endif
8849#ifdef VK_KHR_external_semaphore_win32
8850 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
8851 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008852 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008853 }
8854 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
8855 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008856 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008857 }
8858#endif
8859#ifdef VK_KHR_external_semaphore_fd
8860 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
8861 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008862 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008863 }
8864 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
8865 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008866 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008867 }
8868#endif
8869#ifdef VK_KHR_push_descriptor
8870 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
8871 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008872 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008873 }
8874 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
8875 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008876 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008877 }
8878#endif
8879#ifdef VK_KHR_descriptor_update_template
8880 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
8881 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008882 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008883 }
8884 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
8885 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008886 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008887 }
8888 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
8889 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008890 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008891 }
8892#endif
8893#ifdef VK_KHR_create_renderpass2
8894 if (!strcmp(name, "vkCreateRenderPass2KHR"))
8895 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008896 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008897 }
8898 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
8899 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008900 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008901 }
8902 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
8903 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008904 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008905 }
8906 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
8907 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008908 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008909 }
8910#endif
8911#ifdef VK_KHR_shared_presentable_image
8912 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
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_capabilities
8918 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
8919 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008920 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008921 }
8922#endif
8923#ifdef VK_KHR_external_fence_win32
8924 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
8925 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008926 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008927 }
8928 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
8929 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008930 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008931 }
8932#endif
8933#ifdef VK_KHR_external_fence_fd
8934 if (!strcmp(name, "vkImportFenceFdKHR"))
8935 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008936 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008937 }
8938 if (!strcmp(name, "vkGetFenceFdKHR"))
8939 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008940 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008941 }
8942#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008943#ifdef VK_KHR_performance_query
8944 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
8945 {
8946 return nullptr;
8947 }
8948 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
8949 {
8950 return nullptr;
8951 }
8952 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
8953 {
8954 return nullptr;
8955 }
8956 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
8957 {
8958 return nullptr;
8959 }
8960#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008961#ifdef VK_KHR_get_surface_capabilities2
8962 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
8963 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008964 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008965 }
8966 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
8967 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008968 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008969 }
8970#endif
8971#ifdef VK_KHR_get_display_properties2
8972 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
8973 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008974 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008975 }
8976 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
8977 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008978 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008979 }
8980 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
8981 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008982 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008983 }
8984 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
8985 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008986 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008987 }
8988#endif
8989#ifdef VK_KHR_get_memory_requirements2
8990 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
8991 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008992 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008993 }
8994 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
8995 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008996 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008997 }
8998 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
8999 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009000 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009001 }
9002#endif
9003#ifdef VK_KHR_sampler_ycbcr_conversion
9004 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
9005 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009006 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009007 }
9008 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
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_bind_memory2
9014 if (!strcmp(name, "vkBindBufferMemory2KHR"))
9015 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009016 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009017 }
9018 if (!strcmp(name, "vkBindImageMemory2KHR"))
9019 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009020 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009021 }
9022#endif
9023#ifdef VK_KHR_maintenance3
9024 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
9025 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009026 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009027 }
9028#endif
9029#ifdef VK_KHR_draw_indirect_count
9030 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
9031 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009032 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009033 }
9034 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
9035 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009036 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009037 }
9038#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009039#ifdef VK_KHR_timeline_semaphore
9040 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
9041 {
9042 return nullptr;
9043 }
9044 if (!strcmp(name, "vkWaitSemaphoresKHR"))
9045 {
9046 return nullptr;
9047 }
9048 if (!strcmp(name, "vkSignalSemaphoreKHR"))
9049 {
9050 return nullptr;
9051 }
9052#endif
9053#ifdef VK_KHR_fragment_shading_rate
9054 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
9055 {
9056 return nullptr;
9057 }
9058 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
9059 {
9060 return nullptr;
9061 }
9062#endif
9063#ifdef VK_KHR_buffer_device_address
9064 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
9065 {
9066 return nullptr;
9067 }
9068 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
9069 {
9070 return nullptr;
9071 }
9072 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
9073 {
9074 return nullptr;
9075 }
9076#endif
9077#ifdef VK_KHR_deferred_host_operations
9078 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
9079 {
9080 return nullptr;
9081 }
9082 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
9083 {
9084 return nullptr;
9085 }
9086 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
9087 {
9088 return nullptr;
9089 }
9090 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
9091 {
9092 return nullptr;
9093 }
9094 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
9095 {
9096 return nullptr;
9097 }
9098#endif
9099#ifdef VK_KHR_pipeline_executable_properties
9100 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
9101 {
9102 return nullptr;
9103 }
9104 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
9105 {
9106 return nullptr;
9107 }
9108 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
9109 {
9110 return nullptr;
9111 }
9112#endif
9113#ifdef VK_KHR_copy_commands2
9114 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
9115 {
9116 return nullptr;
9117 }
9118 if (!strcmp(name, "vkCmdCopyImage2KHR"))
9119 {
9120 return nullptr;
9121 }
9122 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
9123 {
9124 return nullptr;
9125 }
9126 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
9127 {
9128 return nullptr;
9129 }
9130 if (!strcmp(name, "vkCmdBlitImage2KHR"))
9131 {
9132 return nullptr;
9133 }
9134 if (!strcmp(name, "vkCmdResolveImage2KHR"))
9135 {
9136 return nullptr;
9137 }
9138#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08009139#ifdef VK_ANDROID_native_buffer
9140 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
9141 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009142 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08009143 }
9144 if (!strcmp(name, "vkAcquireImageANDROID"))
9145 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009146 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08009147 }
9148 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
9149 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009150 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08009151 }
9152#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009153#ifdef VK_EXT_debug_report
9154 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
9155 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009156 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009157 }
9158 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
9159 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009160 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009161 }
9162 if (!strcmp(name, "vkDebugReportMessageEXT"))
9163 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009164 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009165 }
9166#endif
9167#ifdef VK_EXT_debug_marker
9168 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
9169 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009170 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009171 }
9172 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
9173 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009174 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009175 }
9176 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
9177 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009178 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009179 }
9180 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
9181 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009182 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009183 }
9184 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
9185 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009186 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009187 }
9188#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009189#ifdef VK_EXT_transform_feedback
9190 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
9191 {
9192 return nullptr;
9193 }
9194 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
9195 {
9196 return nullptr;
9197 }
9198 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
9199 {
9200 return nullptr;
9201 }
9202 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
9203 {
9204 return nullptr;
9205 }
9206 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
9207 {
9208 return nullptr;
9209 }
9210 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
9211 {
9212 return nullptr;
9213 }
9214#endif
9215#ifdef VK_NVX_image_view_handle
9216 if (!strcmp(name, "vkGetImageViewHandleNVX"))
9217 {
9218 return nullptr;
9219 }
9220 if (!strcmp(name, "vkGetImageViewAddressNVX"))
9221 {
9222 return nullptr;
9223 }
9224#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009225#ifdef VK_AMD_draw_indirect_count
9226 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
9227 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009228 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009229 }
9230 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
9231 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009232 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009233 }
9234#endif
9235#ifdef VK_AMD_shader_info
9236 if (!strcmp(name, "vkGetShaderInfoAMD"))
9237 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009238 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009239 }
9240#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009241#ifdef VK_GGP_stream_descriptor_surface
9242 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
9243 {
9244 return nullptr;
9245 }
9246#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009247#ifdef VK_NV_external_memory_capabilities
9248 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
9249 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009250 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009251 }
9252#endif
9253#ifdef VK_NV_external_memory_win32
9254 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
9255 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009256 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009257 }
9258#endif
9259#ifdef VK_NN_vi_surface
9260 if (!strcmp(name, "vkCreateViSurfaceNN"))
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_conditional_rendering
9266 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
9267 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009268 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009269 }
9270 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
9271 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009272 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009273 }
9274#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009275#ifdef VK_NV_clip_space_w_scaling
9276 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
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_direct_mode_display
9282 if (!strcmp(name, "vkReleaseDisplayEXT"))
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_acquire_xlib_display
9288 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
9289 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009290 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009291 }
9292 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
9293 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009294 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009295 }
9296#endif
9297#ifdef VK_EXT_display_surface_counter
9298 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
9299 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009300 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009301 }
9302#endif
9303#ifdef VK_EXT_display_control
9304 if (!strcmp(name, "vkDisplayPowerControlEXT"))
9305 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009306 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009307 }
9308 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
9309 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009310 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009311 }
9312 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
9313 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009314 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009315 }
9316 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
9317 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009318 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009319 }
9320#endif
9321#ifdef VK_GOOGLE_display_timing
9322 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
9323 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009324 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009325 }
9326 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
9327 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009328 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009329 }
9330#endif
9331#ifdef VK_EXT_discard_rectangles
9332 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
9333 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009334 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009335 }
9336#endif
9337#ifdef VK_EXT_hdr_metadata
9338 if (!strcmp(name, "vkSetHdrMetadataEXT"))
9339 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009340 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009341 }
9342#endif
9343#ifdef VK_MVK_ios_surface
9344 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
9345 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009346 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009347 }
9348#endif
9349#ifdef VK_MVK_macos_surface
9350 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
9351 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009352 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009353 }
9354#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009355#ifdef VK_MVK_moltenvk
9356 if (!strcmp(name, "vkGetMTLDeviceMVK"))
9357 {
9358 return nullptr;
9359 }
9360 if (!strcmp(name, "vkSetMTLTextureMVK"))
9361 {
9362 return nullptr;
9363 }
9364 if (!strcmp(name, "vkGetMTLTextureMVK"))
9365 {
9366 return nullptr;
9367 }
9368 if (!strcmp(name, "vkGetMTLBufferMVK"))
9369 {
9370 return nullptr;
9371 }
9372 if (!strcmp(name, "vkUseIOSurfaceMVK"))
9373 {
9374 return nullptr;
9375 }
9376 if (!strcmp(name, "vkGetIOSurfaceMVK"))
9377 {
9378 return nullptr;
9379 }
9380#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009381#ifdef VK_EXT_debug_utils
9382 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
9383 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009384 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009385 }
9386 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
9387 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009388 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009389 }
9390 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
9391 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009392 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009393 }
9394 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
9395 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009396 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009397 }
9398 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
9399 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009400 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009401 }
9402 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
9403 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009404 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009405 }
9406 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
9407 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009408 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009409 }
9410 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
9411 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009412 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009413 }
9414 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
9415 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009416 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009417 }
9418 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
9419 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009420 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009421 }
9422 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
9423 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009424 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009425 }
9426#endif
9427#ifdef VK_ANDROID_external_memory_android_hardware_buffer
9428 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
9429 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009430 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009431 }
9432 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
9433 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009434 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009435 }
9436#endif
9437#ifdef VK_EXT_sample_locations
9438 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
9439 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009440 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009441 }
9442 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
9443 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009444 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009445 }
9446#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009447#ifdef VK_EXT_image_drm_format_modifier
9448 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
9449 {
9450 return nullptr;
9451 }
9452#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009453#ifdef VK_EXT_validation_cache
9454 if (!strcmp(name, "vkCreateValidationCacheEXT"))
9455 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009456 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009457 }
9458 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
9459 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009460 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009461 }
9462 if (!strcmp(name, "vkMergeValidationCachesEXT"))
9463 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009464 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009465 }
9466 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
9467 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009468 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009469 }
9470#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009471#ifdef VK_NV_shading_rate_image
9472 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
9473 {
9474 return nullptr;
9475 }
9476 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
9477 {
9478 return nullptr;
9479 }
9480 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
9481 {
9482 return nullptr;
9483 }
9484#endif
9485#ifdef VK_NV_ray_tracing
9486 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
9487 {
9488 return nullptr;
9489 }
9490 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
9491 {
9492 return nullptr;
9493 }
9494 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
9495 {
9496 return nullptr;
9497 }
9498 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
9499 {
9500 return nullptr;
9501 }
9502 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
9503 {
9504 return nullptr;
9505 }
9506 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
9507 {
9508 return nullptr;
9509 }
9510 if (!strcmp(name, "vkCmdTraceRaysNV"))
9511 {
9512 return nullptr;
9513 }
9514 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
9515 {
9516 return nullptr;
9517 }
9518 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
9519 {
9520 return nullptr;
9521 }
9522 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
9523 {
9524 return nullptr;
9525 }
9526 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
9527 {
9528 return nullptr;
9529 }
9530 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
9531 {
9532 return nullptr;
9533 }
9534 if (!strcmp(name, "vkCompileDeferredNV"))
9535 {
9536 return nullptr;
9537 }
9538#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009539#ifdef VK_EXT_external_memory_host
9540 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
9541 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009542 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009543 }
9544#endif
9545#ifdef VK_AMD_buffer_marker
9546 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
9547 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009548 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009549 }
9550#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009551#ifdef VK_EXT_calibrated_timestamps
9552 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
9553 {
9554 return nullptr;
9555 }
9556 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
9557 {
9558 return nullptr;
9559 }
9560#endif
9561#ifdef VK_NV_mesh_shader
9562 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
9563 {
9564 return nullptr;
9565 }
9566 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
9567 {
9568 return nullptr;
9569 }
9570 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
9571 {
9572 return nullptr;
9573 }
9574#endif
9575#ifdef VK_NV_scissor_exclusive
9576 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
9577 {
9578 return nullptr;
9579 }
9580#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009581#ifdef VK_NV_device_diagnostic_checkpoints
9582 if (!strcmp(name, "vkCmdSetCheckpointNV"))
9583 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009584 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009585 }
9586 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
9587 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009588 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009589 }
9590#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009591#ifdef VK_INTEL_performance_query
9592 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
9593 {
9594 return nullptr;
9595 }
9596 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
9597 {
9598 return nullptr;
9599 }
9600 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
9601 {
9602 return nullptr;
9603 }
9604 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
9605 {
9606 return nullptr;
9607 }
9608 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
9609 {
9610 return nullptr;
9611 }
9612 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
9613 {
9614 return nullptr;
9615 }
9616 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
9617 {
9618 return nullptr;
9619 }
9620 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
9621 {
9622 return nullptr;
9623 }
9624 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
9625 {
9626 return nullptr;
9627 }
9628#endif
9629#ifdef VK_AMD_display_native_hdr
9630 if (!strcmp(name, "vkSetLocalDimmingAMD"))
9631 {
9632 return nullptr;
9633 }
9634#endif
9635#ifdef VK_FUCHSIA_imagepipe_surface
9636 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
9637 {
9638 return nullptr;
9639 }
9640#endif
9641#ifdef VK_EXT_metal_surface
9642 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08009643 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009644 return nullptr;
9645 }
9646#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08009647#ifdef VK_GOOGLE_color_buffer
9648 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
9649 {
9650 return nullptr;
9651 }
9652 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
9653 {
9654 return nullptr;
9655 }
9656#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009657#ifdef VK_EXT_buffer_device_address
9658 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
9659 {
9660 return nullptr;
9661 }
9662#endif
9663#ifdef VK_EXT_tooling_info
9664 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
9665 {
9666 return nullptr;
9667 }
9668#endif
9669#ifdef VK_NV_cooperative_matrix
9670 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
9671 {
9672 return nullptr;
9673 }
9674#endif
9675#ifdef VK_NV_coverage_reduction_mode
9676 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
9677 {
9678 return nullptr;
9679 }
9680#endif
9681#ifdef VK_EXT_full_screen_exclusive
9682 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
9683 {
9684 return nullptr;
9685 }
9686 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
9687 {
9688 return nullptr;
9689 }
9690 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
9691 {
9692 return nullptr;
9693 }
9694 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
9695 {
9696 return nullptr;
9697 }
9698#endif
9699#ifdef VK_EXT_headless_surface
9700 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
9701 {
9702 return nullptr;
9703 }
9704#endif
9705#ifdef VK_EXT_line_rasterization
9706 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
9707 {
9708 return nullptr;
9709 }
9710#endif
9711#ifdef VK_EXT_host_query_reset
9712 if (!strcmp(name, "vkResetQueryPoolEXT"))
9713 {
9714 return nullptr;
9715 }
9716#endif
9717#ifdef VK_EXT_extended_dynamic_state
9718 if (!strcmp(name, "vkCmdSetCullModeEXT"))
9719 {
9720 return nullptr;
9721 }
9722 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
9723 {
9724 return nullptr;
9725 }
9726 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
9727 {
9728 return nullptr;
9729 }
9730 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
9731 {
9732 return nullptr;
9733 }
9734 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
9735 {
9736 return nullptr;
9737 }
9738 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
9739 {
9740 return nullptr;
9741 }
9742 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
9743 {
9744 return nullptr;
9745 }
9746 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
9747 {
9748 return nullptr;
9749 }
9750 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
9751 {
9752 return nullptr;
9753 }
9754 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
9755 {
9756 return nullptr;
9757 }
9758 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
9759 {
9760 return nullptr;
9761 }
9762 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
9763 {
9764 return nullptr;
9765 }
9766#endif
9767#ifdef VK_NV_device_generated_commands
9768 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
9769 {
9770 return nullptr;
9771 }
9772 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
9773 {
9774 return nullptr;
9775 }
9776 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
9777 {
9778 return nullptr;
9779 }
9780 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
9781 {
9782 return nullptr;
9783 }
9784 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
9785 {
9786 return nullptr;
9787 }
9788 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
9789 {
9790 return nullptr;
9791 }
9792#endif
9793#ifdef VK_EXT_private_data
9794 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
9795 {
9796 return nullptr;
9797 }
9798 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
9799 {
9800 return nullptr;
9801 }
9802 if (!strcmp(name, "vkSetPrivateDataEXT"))
9803 {
9804 return nullptr;
9805 }
9806 if (!strcmp(name, "vkGetPrivateDataEXT"))
9807 {
9808 return nullptr;
9809 }
9810#endif
9811#ifdef VK_NV_fragment_shading_rate_enums
9812 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
9813 {
9814 return nullptr;
9815 }
9816#endif
9817#ifdef VK_EXT_directfb_surface
9818 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
9819 {
9820 return nullptr;
9821 }
9822 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
9823 {
9824 return nullptr;
9825 }
9826#endif
9827#ifdef VK_GOOGLE_address_space
9828 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
9829 {
9830 return nullptr;
9831 }
9832#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07009833#ifdef VK_GOOGLE_sized_descriptor_update_template
9834 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
9835 {
9836 return nullptr;
9837 }
9838#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009839#ifdef VK_GOOGLE_async_command_buffers
9840 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
9841 {
9842 return nullptr;
9843 }
9844 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
9845 {
9846 return nullptr;
9847 }
9848 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
9849 {
9850 return nullptr;
9851 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07009852 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
9853 {
9854 return nullptr;
9855 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009856#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00009857#ifdef VK_GOOGLE_create_resources_with_requirements
9858 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
9859 {
9860 return nullptr;
9861 }
9862 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
9863 {
9864 return nullptr;
9865 }
9866#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08009867#ifdef VK_GOOGLE_address_space_info
9868 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
9869 {
9870 return nullptr;
9871 }
9872#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07009873#ifdef VK_GOOGLE_free_memory_sync
9874 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
9875 {
9876 return nullptr;
9877 }
9878#endif
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07009879#ifdef VK_GOOGLE_async_queue_submit
9880 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
9881 {
9882 return nullptr;
9883 }
9884 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
9885 {
9886 return nullptr;
9887 }
9888 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
9889 {
9890 return nullptr;
9891 }
9892 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
9893 {
9894 return nullptr;
9895 }
9896#endif
Yilong Lia48b0102020-09-15 15:08:28 -07009897#ifdef VK_GOOGLE_linear_image_layout
9898 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
9899 {
9900 return nullptr;
9901 }
9902#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009903#ifdef VK_GOOGLE_queue_submit_with_commands
9904 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
Lingfeng Yang2178dc72021-01-08 14:01:47 -08009905 {
9906 return nullptr;
9907 }
9908#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009909#ifdef VK_KHR_acceleration_structure
9910 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
9911 {
9912 return nullptr;
9913 }
9914 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
9915 {
9916 return nullptr;
9917 }
9918 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
9919 {
9920 return nullptr;
9921 }
9922 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
9923 {
9924 return nullptr;
9925 }
9926 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
9927 {
9928 return nullptr;
9929 }
9930 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
9931 {
9932 return nullptr;
9933 }
9934 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
9935 {
9936 return nullptr;
9937 }
9938 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
9939 {
9940 return nullptr;
9941 }
9942 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
9943 {
9944 return nullptr;
9945 }
9946 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
9947 {
9948 return nullptr;
9949 }
9950 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
9951 {
9952 return nullptr;
9953 }
9954 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
9955 {
9956 return nullptr;
9957 }
9958 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
9959 {
9960 return nullptr;
9961 }
9962 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
9963 {
9964 return nullptr;
9965 }
9966 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
9967 {
9968 return nullptr;
9969 }
9970 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
9971 {
9972 return nullptr;
9973 }
9974#endif
9975#ifdef VK_KHR_ray_tracing_pipeline
9976 if (!strcmp(name, "vkCmdTraceRaysKHR"))
9977 {
9978 return nullptr;
9979 }
9980 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
9981 {
9982 return nullptr;
9983 }
9984 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
9985 {
9986 return nullptr;
9987 }
9988 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
9989 {
9990 return nullptr;
9991 }
9992 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
9993 {
9994 return nullptr;
9995 }
9996 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
Lingfeng Yangded34672021-01-22 23:17:47 -08009997 {
9998 return nullptr;
9999 }
10000#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010001 return nullptr;
10002}
10003void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
10004 auto resources = ResourceTracker::get();
10005 bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
10006#ifdef VK_VERSION_1_0
10007 if (!strcmp(name, "vkCreateInstance"))
10008 {
10009 return (void*)entry_vkCreateInstance;
10010 }
10011 if (!strcmp(name, "vkDestroyInstance"))
10012 {
10013 return (void*)entry_vkDestroyInstance;
10014 }
10015 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
10016 {
10017 return (void*)entry_vkEnumeratePhysicalDevices;
10018 }
10019 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
10020 {
10021 return (void*)entry_vkGetPhysicalDeviceFeatures;
10022 }
10023 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
10024 {
10025 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
10026 }
10027 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
10028 {
10029 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
10030 }
10031 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
10032 {
10033 return (void*)entry_vkGetPhysicalDeviceProperties;
10034 }
10035 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
10036 {
10037 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
10038 }
10039 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
10040 {
10041 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
10042 }
10043 if (!strcmp(name, "vkGetInstanceProcAddr"))
10044 {
10045 return (void*)entry_vkGetInstanceProcAddr;
10046 }
10047 if (!strcmp(name, "vkGetDeviceProcAddr"))
10048 {
10049 return (void*)entry_vkGetDeviceProcAddr;
10050 }
10051 if (!strcmp(name, "vkCreateDevice"))
10052 {
10053 return (void*)entry_vkCreateDevice;
10054 }
10055 if (!strcmp(name, "vkDestroyDevice"))
10056 {
10057 return (void*)entry_vkDestroyDevice;
10058 }
10059 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
10060 {
10061 return (void*)entry_vkEnumerateInstanceExtensionProperties;
10062 }
10063 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
10064 {
10065 return (void*)entry_vkEnumerateDeviceExtensionProperties;
10066 }
10067 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
10068 {
10069 return (void*)entry_vkEnumerateInstanceLayerProperties;
10070 }
10071 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
10072 {
10073 return (void*)entry_vkEnumerateDeviceLayerProperties;
10074 }
10075 if (!strcmp(name, "vkGetDeviceQueue"))
10076 {
10077 return (void*)entry_vkGetDeviceQueue;
10078 }
10079 if (!strcmp(name, "vkQueueSubmit"))
10080 {
10081 return (void*)entry_vkQueueSubmit;
10082 }
10083 if (!strcmp(name, "vkQueueWaitIdle"))
10084 {
10085 return (void*)entry_vkQueueWaitIdle;
10086 }
10087 if (!strcmp(name, "vkDeviceWaitIdle"))
10088 {
10089 return (void*)entry_vkDeviceWaitIdle;
10090 }
10091 if (!strcmp(name, "vkAllocateMemory"))
10092 {
10093 return (void*)entry_vkAllocateMemory;
10094 }
10095 if (!strcmp(name, "vkFreeMemory"))
10096 {
10097 return (void*)entry_vkFreeMemory;
10098 }
10099 if (!strcmp(name, "vkMapMemory"))
10100 {
10101 return (void*)entry_vkMapMemory;
10102 }
10103 if (!strcmp(name, "vkUnmapMemory"))
10104 {
10105 return (void*)entry_vkUnmapMemory;
10106 }
10107 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
10108 {
10109 return (void*)entry_vkFlushMappedMemoryRanges;
10110 }
10111 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
10112 {
10113 return (void*)entry_vkInvalidateMappedMemoryRanges;
10114 }
10115 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
10116 {
10117 return (void*)entry_vkGetDeviceMemoryCommitment;
10118 }
10119 if (!strcmp(name, "vkBindBufferMemory"))
10120 {
10121 return (void*)entry_vkBindBufferMemory;
10122 }
10123 if (!strcmp(name, "vkBindImageMemory"))
10124 {
10125 return (void*)entry_vkBindImageMemory;
10126 }
10127 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
10128 {
10129 return (void*)entry_vkGetBufferMemoryRequirements;
10130 }
10131 if (!strcmp(name, "vkGetImageMemoryRequirements"))
10132 {
10133 return (void*)entry_vkGetImageMemoryRequirements;
10134 }
10135 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
10136 {
10137 return (void*)entry_vkGetImageSparseMemoryRequirements;
10138 }
10139 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
10140 {
10141 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
10142 }
10143 if (!strcmp(name, "vkQueueBindSparse"))
10144 {
10145 return (void*)entry_vkQueueBindSparse;
10146 }
10147 if (!strcmp(name, "vkCreateFence"))
10148 {
10149 return (void*)entry_vkCreateFence;
10150 }
10151 if (!strcmp(name, "vkDestroyFence"))
10152 {
10153 return (void*)entry_vkDestroyFence;
10154 }
10155 if (!strcmp(name, "vkResetFences"))
10156 {
10157 return (void*)entry_vkResetFences;
10158 }
10159 if (!strcmp(name, "vkGetFenceStatus"))
10160 {
10161 return (void*)entry_vkGetFenceStatus;
10162 }
10163 if (!strcmp(name, "vkWaitForFences"))
10164 {
10165 return (void*)entry_vkWaitForFences;
10166 }
10167 if (!strcmp(name, "vkCreateSemaphore"))
10168 {
10169 return (void*)entry_vkCreateSemaphore;
10170 }
10171 if (!strcmp(name, "vkDestroySemaphore"))
10172 {
10173 return (void*)entry_vkDestroySemaphore;
10174 }
10175 if (!strcmp(name, "vkCreateEvent"))
10176 {
10177 return (void*)entry_vkCreateEvent;
10178 }
10179 if (!strcmp(name, "vkDestroyEvent"))
10180 {
10181 return (void*)entry_vkDestroyEvent;
10182 }
10183 if (!strcmp(name, "vkGetEventStatus"))
10184 {
10185 return (void*)entry_vkGetEventStatus;
10186 }
10187 if (!strcmp(name, "vkSetEvent"))
10188 {
10189 return (void*)entry_vkSetEvent;
10190 }
10191 if (!strcmp(name, "vkResetEvent"))
10192 {
10193 return (void*)entry_vkResetEvent;
10194 }
10195 if (!strcmp(name, "vkCreateQueryPool"))
10196 {
10197 return (void*)entry_vkCreateQueryPool;
10198 }
10199 if (!strcmp(name, "vkDestroyQueryPool"))
10200 {
10201 return (void*)entry_vkDestroyQueryPool;
10202 }
10203 if (!strcmp(name, "vkGetQueryPoolResults"))
10204 {
10205 return (void*)entry_vkGetQueryPoolResults;
10206 }
10207 if (!strcmp(name, "vkCreateBuffer"))
10208 {
10209 return (void*)entry_vkCreateBuffer;
10210 }
10211 if (!strcmp(name, "vkDestroyBuffer"))
10212 {
10213 return (void*)entry_vkDestroyBuffer;
10214 }
10215 if (!strcmp(name, "vkCreateBufferView"))
10216 {
10217 return (void*)entry_vkCreateBufferView;
10218 }
10219 if (!strcmp(name, "vkDestroyBufferView"))
10220 {
10221 return (void*)entry_vkDestroyBufferView;
10222 }
10223 if (!strcmp(name, "vkCreateImage"))
10224 {
10225 return (void*)entry_vkCreateImage;
10226 }
10227 if (!strcmp(name, "vkDestroyImage"))
10228 {
10229 return (void*)entry_vkDestroyImage;
10230 }
10231 if (!strcmp(name, "vkGetImageSubresourceLayout"))
10232 {
10233 return (void*)entry_vkGetImageSubresourceLayout;
10234 }
10235 if (!strcmp(name, "vkCreateImageView"))
10236 {
10237 return (void*)entry_vkCreateImageView;
10238 }
10239 if (!strcmp(name, "vkDestroyImageView"))
10240 {
10241 return (void*)entry_vkDestroyImageView;
10242 }
10243 if (!strcmp(name, "vkCreateShaderModule"))
10244 {
10245 return (void*)entry_vkCreateShaderModule;
10246 }
10247 if (!strcmp(name, "vkDestroyShaderModule"))
10248 {
10249 return (void*)entry_vkDestroyShaderModule;
10250 }
10251 if (!strcmp(name, "vkCreatePipelineCache"))
10252 {
10253 return (void*)entry_vkCreatePipelineCache;
10254 }
10255 if (!strcmp(name, "vkDestroyPipelineCache"))
10256 {
10257 return (void*)entry_vkDestroyPipelineCache;
10258 }
10259 if (!strcmp(name, "vkGetPipelineCacheData"))
10260 {
10261 return (void*)entry_vkGetPipelineCacheData;
10262 }
10263 if (!strcmp(name, "vkMergePipelineCaches"))
10264 {
10265 return (void*)entry_vkMergePipelineCaches;
10266 }
10267 if (!strcmp(name, "vkCreateGraphicsPipelines"))
10268 {
10269 return (void*)entry_vkCreateGraphicsPipelines;
10270 }
10271 if (!strcmp(name, "vkCreateComputePipelines"))
10272 {
10273 return (void*)entry_vkCreateComputePipelines;
10274 }
10275 if (!strcmp(name, "vkDestroyPipeline"))
10276 {
10277 return (void*)entry_vkDestroyPipeline;
10278 }
10279 if (!strcmp(name, "vkCreatePipelineLayout"))
10280 {
10281 return (void*)entry_vkCreatePipelineLayout;
10282 }
10283 if (!strcmp(name, "vkDestroyPipelineLayout"))
10284 {
10285 return (void*)entry_vkDestroyPipelineLayout;
10286 }
10287 if (!strcmp(name, "vkCreateSampler"))
10288 {
10289 return (void*)entry_vkCreateSampler;
10290 }
10291 if (!strcmp(name, "vkDestroySampler"))
10292 {
10293 return (void*)entry_vkDestroySampler;
10294 }
10295 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
10296 {
10297 return (void*)entry_vkCreateDescriptorSetLayout;
10298 }
10299 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
10300 {
10301 return (void*)entry_vkDestroyDescriptorSetLayout;
10302 }
10303 if (!strcmp(name, "vkCreateDescriptorPool"))
10304 {
10305 return (void*)entry_vkCreateDescriptorPool;
10306 }
10307 if (!strcmp(name, "vkDestroyDescriptorPool"))
10308 {
10309 return (void*)entry_vkDestroyDescriptorPool;
10310 }
10311 if (!strcmp(name, "vkResetDescriptorPool"))
10312 {
10313 return (void*)entry_vkResetDescriptorPool;
10314 }
10315 if (!strcmp(name, "vkAllocateDescriptorSets"))
10316 {
10317 return (void*)entry_vkAllocateDescriptorSets;
10318 }
10319 if (!strcmp(name, "vkFreeDescriptorSets"))
10320 {
10321 return (void*)entry_vkFreeDescriptorSets;
10322 }
10323 if (!strcmp(name, "vkUpdateDescriptorSets"))
10324 {
10325 return (void*)entry_vkUpdateDescriptorSets;
10326 }
10327 if (!strcmp(name, "vkCreateFramebuffer"))
10328 {
10329 return (void*)entry_vkCreateFramebuffer;
10330 }
10331 if (!strcmp(name, "vkDestroyFramebuffer"))
10332 {
10333 return (void*)entry_vkDestroyFramebuffer;
10334 }
10335 if (!strcmp(name, "vkCreateRenderPass"))
10336 {
10337 return (void*)entry_vkCreateRenderPass;
10338 }
10339 if (!strcmp(name, "vkDestroyRenderPass"))
10340 {
10341 return (void*)entry_vkDestroyRenderPass;
10342 }
10343 if (!strcmp(name, "vkGetRenderAreaGranularity"))
10344 {
10345 return (void*)entry_vkGetRenderAreaGranularity;
10346 }
10347 if (!strcmp(name, "vkCreateCommandPool"))
10348 {
10349 return (void*)entry_vkCreateCommandPool;
10350 }
10351 if (!strcmp(name, "vkDestroyCommandPool"))
10352 {
10353 return (void*)entry_vkDestroyCommandPool;
10354 }
10355 if (!strcmp(name, "vkResetCommandPool"))
10356 {
10357 return (void*)entry_vkResetCommandPool;
10358 }
10359 if (!strcmp(name, "vkAllocateCommandBuffers"))
10360 {
10361 return (void*)entry_vkAllocateCommandBuffers;
10362 }
10363 if (!strcmp(name, "vkFreeCommandBuffers"))
10364 {
10365 return (void*)entry_vkFreeCommandBuffers;
10366 }
10367 if (!strcmp(name, "vkBeginCommandBuffer"))
10368 {
10369 return (void*)entry_vkBeginCommandBuffer;
10370 }
10371 if (!strcmp(name, "vkEndCommandBuffer"))
10372 {
10373 return (void*)entry_vkEndCommandBuffer;
10374 }
10375 if (!strcmp(name, "vkResetCommandBuffer"))
10376 {
10377 return (void*)entry_vkResetCommandBuffer;
10378 }
10379 if (!strcmp(name, "vkCmdBindPipeline"))
10380 {
10381 return (void*)entry_vkCmdBindPipeline;
10382 }
10383 if (!strcmp(name, "vkCmdSetViewport"))
10384 {
10385 return (void*)entry_vkCmdSetViewport;
10386 }
10387 if (!strcmp(name, "vkCmdSetScissor"))
10388 {
10389 return (void*)entry_vkCmdSetScissor;
10390 }
10391 if (!strcmp(name, "vkCmdSetLineWidth"))
10392 {
10393 return (void*)entry_vkCmdSetLineWidth;
10394 }
10395 if (!strcmp(name, "vkCmdSetDepthBias"))
10396 {
10397 return (void*)entry_vkCmdSetDepthBias;
10398 }
10399 if (!strcmp(name, "vkCmdSetBlendConstants"))
10400 {
10401 return (void*)entry_vkCmdSetBlendConstants;
10402 }
10403 if (!strcmp(name, "vkCmdSetDepthBounds"))
10404 {
10405 return (void*)entry_vkCmdSetDepthBounds;
10406 }
10407 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
10408 {
10409 return (void*)entry_vkCmdSetStencilCompareMask;
10410 }
10411 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
10412 {
10413 return (void*)entry_vkCmdSetStencilWriteMask;
10414 }
10415 if (!strcmp(name, "vkCmdSetStencilReference"))
10416 {
10417 return (void*)entry_vkCmdSetStencilReference;
10418 }
10419 if (!strcmp(name, "vkCmdBindDescriptorSets"))
10420 {
10421 return (void*)entry_vkCmdBindDescriptorSets;
10422 }
10423 if (!strcmp(name, "vkCmdBindIndexBuffer"))
10424 {
10425 return (void*)entry_vkCmdBindIndexBuffer;
10426 }
10427 if (!strcmp(name, "vkCmdBindVertexBuffers"))
10428 {
10429 return (void*)entry_vkCmdBindVertexBuffers;
10430 }
10431 if (!strcmp(name, "vkCmdDraw"))
10432 {
10433 return (void*)entry_vkCmdDraw;
10434 }
10435 if (!strcmp(name, "vkCmdDrawIndexed"))
10436 {
10437 return (void*)entry_vkCmdDrawIndexed;
10438 }
10439 if (!strcmp(name, "vkCmdDrawIndirect"))
10440 {
10441 return (void*)entry_vkCmdDrawIndirect;
10442 }
10443 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
10444 {
10445 return (void*)entry_vkCmdDrawIndexedIndirect;
10446 }
10447 if (!strcmp(name, "vkCmdDispatch"))
10448 {
10449 return (void*)entry_vkCmdDispatch;
10450 }
10451 if (!strcmp(name, "vkCmdDispatchIndirect"))
10452 {
10453 return (void*)entry_vkCmdDispatchIndirect;
10454 }
10455 if (!strcmp(name, "vkCmdCopyBuffer"))
10456 {
10457 return (void*)entry_vkCmdCopyBuffer;
10458 }
10459 if (!strcmp(name, "vkCmdCopyImage"))
10460 {
10461 return (void*)entry_vkCmdCopyImage;
10462 }
10463 if (!strcmp(name, "vkCmdBlitImage"))
10464 {
10465 return (void*)entry_vkCmdBlitImage;
10466 }
10467 if (!strcmp(name, "vkCmdCopyBufferToImage"))
10468 {
10469 return (void*)entry_vkCmdCopyBufferToImage;
10470 }
10471 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
10472 {
10473 return (void*)entry_vkCmdCopyImageToBuffer;
10474 }
10475 if (!strcmp(name, "vkCmdUpdateBuffer"))
10476 {
10477 return (void*)entry_vkCmdUpdateBuffer;
10478 }
10479 if (!strcmp(name, "vkCmdFillBuffer"))
10480 {
10481 return (void*)entry_vkCmdFillBuffer;
10482 }
10483 if (!strcmp(name, "vkCmdClearColorImage"))
10484 {
10485 return (void*)entry_vkCmdClearColorImage;
10486 }
10487 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
10488 {
10489 return (void*)entry_vkCmdClearDepthStencilImage;
10490 }
10491 if (!strcmp(name, "vkCmdClearAttachments"))
10492 {
10493 return (void*)entry_vkCmdClearAttachments;
10494 }
10495 if (!strcmp(name, "vkCmdResolveImage"))
10496 {
10497 return (void*)entry_vkCmdResolveImage;
10498 }
10499 if (!strcmp(name, "vkCmdSetEvent"))
10500 {
10501 return (void*)entry_vkCmdSetEvent;
10502 }
10503 if (!strcmp(name, "vkCmdResetEvent"))
10504 {
10505 return (void*)entry_vkCmdResetEvent;
10506 }
10507 if (!strcmp(name, "vkCmdWaitEvents"))
10508 {
10509 return (void*)entry_vkCmdWaitEvents;
10510 }
10511 if (!strcmp(name, "vkCmdPipelineBarrier"))
10512 {
10513 return (void*)entry_vkCmdPipelineBarrier;
10514 }
10515 if (!strcmp(name, "vkCmdBeginQuery"))
10516 {
10517 return (void*)entry_vkCmdBeginQuery;
10518 }
10519 if (!strcmp(name, "vkCmdEndQuery"))
10520 {
10521 return (void*)entry_vkCmdEndQuery;
10522 }
10523 if (!strcmp(name, "vkCmdResetQueryPool"))
10524 {
10525 return (void*)entry_vkCmdResetQueryPool;
10526 }
10527 if (!strcmp(name, "vkCmdWriteTimestamp"))
10528 {
10529 return (void*)entry_vkCmdWriteTimestamp;
10530 }
10531 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
10532 {
10533 return (void*)entry_vkCmdCopyQueryPoolResults;
10534 }
10535 if (!strcmp(name, "vkCmdPushConstants"))
10536 {
10537 return (void*)entry_vkCmdPushConstants;
10538 }
10539 if (!strcmp(name, "vkCmdBeginRenderPass"))
10540 {
10541 return (void*)entry_vkCmdBeginRenderPass;
10542 }
10543 if (!strcmp(name, "vkCmdNextSubpass"))
10544 {
10545 return (void*)entry_vkCmdNextSubpass;
10546 }
10547 if (!strcmp(name, "vkCmdEndRenderPass"))
10548 {
10549 return (void*)entry_vkCmdEndRenderPass;
10550 }
10551 if (!strcmp(name, "vkCmdExecuteCommands"))
10552 {
10553 return (void*)entry_vkCmdExecuteCommands;
10554 }
10555#endif
10556#ifdef VK_VERSION_1_1
10557 if (!strcmp(name, "vkEnumerateInstanceVersion"))
10558 {
10559 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
10560 }
10561 if (!strcmp(name, "vkBindBufferMemory2"))
10562 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010563 return (void*)dynCheck_entry_vkBindBufferMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010564 }
10565 if (!strcmp(name, "vkBindImageMemory2"))
10566 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010567 return (void*)dynCheck_entry_vkBindImageMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010568 }
10569 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
10570 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010571 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010572 }
10573 if (!strcmp(name, "vkCmdSetDeviceMask"))
10574 {
10575 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
10576 }
10577 if (!strcmp(name, "vkCmdDispatchBase"))
10578 {
10579 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
10580 }
10581 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
10582 {
10583 return nullptr;
10584 }
10585 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
10586 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010587 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010588 }
10589 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
10590 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010591 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010592 }
10593 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
10594 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010595 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010596 }
10597 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
10598 {
10599 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
10600 }
10601 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
10602 {
10603 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
10604 }
10605 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
10606 {
10607 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
10608 }
10609 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
10610 {
10611 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
10612 }
10613 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
10614 {
10615 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
10616 }
10617 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
10618 {
10619 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
10620 }
10621 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
10622 {
10623 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
10624 }
10625 if (!strcmp(name, "vkTrimCommandPool"))
10626 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010627 return (void*)dynCheck_entry_vkTrimCommandPool;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010628 }
10629 if (!strcmp(name, "vkGetDeviceQueue2"))
10630 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010631 return (void*)dynCheck_entry_vkGetDeviceQueue2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010632 }
10633 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
10634 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010635 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010636 }
10637 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
10638 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010639 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010640 }
10641 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
10642 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010643 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010644 }
10645 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
10646 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010647 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010648 }
10649 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
10650 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010651 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010652 }
10653 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
10654 {
10655 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
10656 }
10657 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
10658 {
10659 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
10660 }
10661 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
10662 {
10663 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
10664 }
10665 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
10666 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010667 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010668 }
10669#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010670#ifdef VK_VERSION_1_2
10671 if (!strcmp(name, "vkCmdDrawIndirectCount"))
10672 {
10673 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10674 return hasExt ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
10675 }
10676 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
10677 {
10678 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10679 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
10680 }
10681 if (!strcmp(name, "vkCreateRenderPass2"))
10682 {
10683 return (void*)dynCheck_entry_vkCreateRenderPass2;
10684 }
10685 if (!strcmp(name, "vkCmdBeginRenderPass2"))
10686 {
10687 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10688 return hasExt ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
10689 }
10690 if (!strcmp(name, "vkCmdNextSubpass2"))
10691 {
10692 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10693 return hasExt ? (void*)entry_vkCmdNextSubpass2 : nullptr;
10694 }
10695 if (!strcmp(name, "vkCmdEndRenderPass2"))
10696 {
10697 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10698 return hasExt ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
10699 }
10700 if (!strcmp(name, "vkResetQueryPool"))
10701 {
10702 return (void*)dynCheck_entry_vkResetQueryPool;
10703 }
10704 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
10705 {
10706 return (void*)dynCheck_entry_vkGetSemaphoreCounterValue;
10707 }
10708 if (!strcmp(name, "vkWaitSemaphores"))
10709 {
10710 return (void*)dynCheck_entry_vkWaitSemaphores;
10711 }
10712 if (!strcmp(name, "vkSignalSemaphore"))
10713 {
10714 return (void*)dynCheck_entry_vkSignalSemaphore;
10715 }
10716 if (!strcmp(name, "vkGetBufferDeviceAddress"))
10717 {
10718 return (void*)dynCheck_entry_vkGetBufferDeviceAddress;
10719 }
10720 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
10721 {
10722 return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddress;
10723 }
10724 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
10725 {
10726 return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress;
10727 }
10728#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010729#ifdef VK_KHR_surface
10730 if (!strcmp(name, "vkDestroySurfaceKHR"))
10731 {
10732 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10733 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
10734 }
10735 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
10736 {
10737 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10738 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
10739 }
10740 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
10741 {
10742 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10743 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
10744 }
10745 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
10746 {
10747 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10748 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
10749 }
10750 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
10751 {
10752 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10753 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
10754 }
10755#endif
10756#ifdef VK_KHR_swapchain
10757 if (!strcmp(name, "vkCreateSwapchainKHR"))
10758 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010759 return (void*)dynCheck_entry_vkCreateSwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010760 }
10761 if (!strcmp(name, "vkDestroySwapchainKHR"))
10762 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010763 return (void*)dynCheck_entry_vkDestroySwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010764 }
10765 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
10766 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010767 return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010768 }
10769 if (!strcmp(name, "vkAcquireNextImageKHR"))
10770 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010771 return (void*)dynCheck_entry_vkAcquireNextImageKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010772 }
10773 if (!strcmp(name, "vkQueuePresentKHR"))
10774 {
10775 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
10776 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
10777 }
10778 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
10779 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010780 return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010781 }
10782 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
10783 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010784 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010785 }
10786 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
10787 {
10788 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
10789 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
10790 }
10791 if (!strcmp(name, "vkAcquireNextImage2KHR"))
10792 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010793 return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010794 }
10795#endif
10796#ifdef VK_KHR_display
10797 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
10798 {
10799 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10800 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
10801 }
10802 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
10803 {
10804 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10805 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
10806 }
10807 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
10808 {
10809 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10810 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
10811 }
10812 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
10813 {
10814 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10815 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
10816 }
10817 if (!strcmp(name, "vkCreateDisplayModeKHR"))
10818 {
10819 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10820 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
10821 }
10822 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
10823 {
10824 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10825 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
10826 }
10827 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
10828 {
10829 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10830 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
10831 }
10832#endif
10833#ifdef VK_KHR_display_swapchain
10834 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
10835 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010836 return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010837 }
10838#endif
10839#ifdef VK_KHR_xlib_surface
10840 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
10841 {
10842 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
10843 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
10844 }
10845 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
10846 {
10847 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
10848 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
10849 }
10850#endif
10851#ifdef VK_KHR_xcb_surface
10852 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
10853 {
10854 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
10855 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
10856 }
10857 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
10858 {
10859 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
10860 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
10861 }
10862#endif
10863#ifdef VK_KHR_wayland_surface
10864 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
10865 {
10866 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
10867 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
10868 }
10869 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
10870 {
10871 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
10872 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
10873 }
10874#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010875#ifdef VK_KHR_android_surface
10876 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
10877 {
10878 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
10879 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
10880 }
10881#endif
10882#ifdef VK_KHR_win32_surface
10883 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
10884 {
10885 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
10886 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
10887 }
10888 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
10889 {
10890 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
10891 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
10892 }
10893#endif
10894#ifdef VK_KHR_get_physical_device_properties2
10895 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
10896 {
10897 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10898 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
10899 }
10900 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
10901 {
10902 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10903 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
10904 }
10905 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
10906 {
10907 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10908 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
10909 }
10910 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
10911 {
10912 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10913 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
10914 }
10915 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
10916 {
10917 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10918 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
10919 }
10920 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
10921 {
10922 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10923 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
10924 }
10925 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
10926 {
10927 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10928 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
10929 }
10930#endif
10931#ifdef VK_KHR_device_group
10932 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
10933 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010934 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010935 }
10936 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
10937 {
10938 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
10939 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
10940 }
10941 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
10942 {
10943 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
10944 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
10945 }
10946#endif
10947#ifdef VK_KHR_maintenance1
10948 if (!strcmp(name, "vkTrimCommandPoolKHR"))
10949 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010950 return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010951 }
10952#endif
10953#ifdef VK_KHR_device_group_creation
10954 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
10955 {
10956 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
10957 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
10958 }
10959#endif
10960#ifdef VK_KHR_external_memory_capabilities
10961 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
10962 {
10963 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
10964 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
10965 }
10966#endif
10967#ifdef VK_KHR_external_memory_win32
10968 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
10969 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010970 return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010971 }
10972 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
10973 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010974 return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010975 }
10976#endif
10977#ifdef VK_KHR_external_memory_fd
10978 if (!strcmp(name, "vkGetMemoryFdKHR"))
10979 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010980 return (void*)dynCheck_entry_vkGetMemoryFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010981 }
10982 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
10983 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010984 return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010985 }
10986#endif
10987#ifdef VK_KHR_external_semaphore_capabilities
10988 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
10989 {
10990 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
10991 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
10992 }
10993#endif
10994#ifdef VK_KHR_external_semaphore_win32
10995 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
10996 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010997 return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010998 }
10999 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
11000 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011001 return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011002 }
11003#endif
11004#ifdef VK_KHR_external_semaphore_fd
11005 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
11006 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011007 return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011008 }
11009 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
11010 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011011 return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011012 }
11013#endif
11014#ifdef VK_KHR_push_descriptor
11015 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
11016 {
11017 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
11018 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
11019 }
11020 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
11021 {
11022 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
11023 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
11024 }
11025#endif
11026#ifdef VK_KHR_descriptor_update_template
11027 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
11028 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011029 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011030 }
11031 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
11032 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011033 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011034 }
11035 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
11036 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011037 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011038 }
11039#endif
11040#ifdef VK_KHR_create_renderpass2
11041 if (!strcmp(name, "vkCreateRenderPass2KHR"))
11042 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011043 return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011044 }
11045 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
11046 {
11047 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
11048 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
11049 }
11050 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
11051 {
11052 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
11053 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
11054 }
11055 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
11056 {
11057 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
11058 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
11059 }
11060#endif
11061#ifdef VK_KHR_shared_presentable_image
11062 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
11063 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011064 return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011065 }
11066#endif
11067#ifdef VK_KHR_external_fence_capabilities
11068 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
11069 {
11070 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
11071 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
11072 }
11073#endif
11074#ifdef VK_KHR_external_fence_win32
11075 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
11076 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011077 return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011078 }
11079 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
11080 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011081 return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011082 }
11083#endif
11084#ifdef VK_KHR_external_fence_fd
11085 if (!strcmp(name, "vkImportFenceFdKHR"))
11086 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011087 return (void*)dynCheck_entry_vkImportFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011088 }
11089 if (!strcmp(name, "vkGetFenceFdKHR"))
11090 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011091 return (void*)dynCheck_entry_vkGetFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011092 }
11093#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011094#ifdef VK_KHR_performance_query
11095 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
11096 {
11097 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
11098 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
11099 }
11100 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
11101 {
11102 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
11103 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
11104 }
11105 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
11106 {
11107 return (void*)dynCheck_entry_vkAcquireProfilingLockKHR;
11108 }
11109 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
11110 {
11111 return (void*)dynCheck_entry_vkReleaseProfilingLockKHR;
11112 }
11113#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011114#ifdef VK_KHR_get_surface_capabilities2
11115 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
11116 {
11117 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
11118 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
11119 }
11120 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
11121 {
11122 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
11123 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
11124 }
11125#endif
11126#ifdef VK_KHR_get_display_properties2
11127 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
11128 {
11129 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11130 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
11131 }
11132 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
11133 {
11134 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11135 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
11136 }
11137 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
11138 {
11139 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11140 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
11141 }
11142 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
11143 {
11144 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11145 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
11146 }
11147#endif
11148#ifdef VK_KHR_get_memory_requirements2
11149 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
11150 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011151 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011152 }
11153 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
11154 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011155 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011156 }
11157 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
11158 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011159 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011160 }
11161#endif
11162#ifdef VK_KHR_sampler_ycbcr_conversion
11163 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
11164 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011165 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011166 }
11167 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
11168 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011169 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011170 }
11171#endif
11172#ifdef VK_KHR_bind_memory2
11173 if (!strcmp(name, "vkBindBufferMemory2KHR"))
11174 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011175 return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011176 }
11177 if (!strcmp(name, "vkBindImageMemory2KHR"))
11178 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011179 return (void*)dynCheck_entry_vkBindImageMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011180 }
11181#endif
11182#ifdef VK_KHR_maintenance3
11183 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
11184 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011185 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011186 }
11187#endif
11188#ifdef VK_KHR_draw_indirect_count
11189 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
11190 {
11191 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
11192 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
11193 }
11194 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
11195 {
11196 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
11197 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
11198 }
11199#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011200#ifdef VK_KHR_timeline_semaphore
11201 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
11202 {
11203 return (void*)dynCheck_entry_vkGetSemaphoreCounterValueKHR;
11204 }
11205 if (!strcmp(name, "vkWaitSemaphoresKHR"))
11206 {
11207 return (void*)dynCheck_entry_vkWaitSemaphoresKHR;
11208 }
11209 if (!strcmp(name, "vkSignalSemaphoreKHR"))
11210 {
11211 return (void*)dynCheck_entry_vkSignalSemaphoreKHR;
11212 }
11213#endif
11214#ifdef VK_KHR_fragment_shading_rate
11215 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
11216 {
11217 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_fragment_shading_rate");
11218 return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
11219 }
11220 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
11221 {
11222 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_fragment_shading_rate");
11223 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateKHR : nullptr;
11224 }
11225#endif
11226#ifdef VK_KHR_buffer_device_address
11227 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
11228 {
11229 return (void*)dynCheck_entry_vkGetBufferDeviceAddressKHR;
11230 }
11231 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
11232 {
11233 return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR;
11234 }
11235 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
11236 {
11237 return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR;
11238 }
11239#endif
11240#ifdef VK_KHR_deferred_host_operations
11241 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
11242 {
11243 return (void*)dynCheck_entry_vkCreateDeferredOperationKHR;
11244 }
11245 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
11246 {
11247 return (void*)dynCheck_entry_vkDestroyDeferredOperationKHR;
11248 }
11249 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
11250 {
11251 return (void*)dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR;
11252 }
11253 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
11254 {
11255 return (void*)dynCheck_entry_vkGetDeferredOperationResultKHR;
11256 }
11257 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
11258 {
11259 return (void*)dynCheck_entry_vkDeferredOperationJoinKHR;
11260 }
11261#endif
11262#ifdef VK_KHR_pipeline_executable_properties
11263 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
11264 {
11265 return (void*)dynCheck_entry_vkGetPipelineExecutablePropertiesKHR;
11266 }
11267 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
11268 {
11269 return (void*)dynCheck_entry_vkGetPipelineExecutableStatisticsKHR;
11270 }
11271 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
11272 {
11273 return (void*)dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR;
11274 }
11275#endif
11276#ifdef VK_KHR_copy_commands2
11277 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
11278 {
11279 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11280 return hasExt ? (void*)entry_vkCmdCopyBuffer2KHR : nullptr;
11281 }
11282 if (!strcmp(name, "vkCmdCopyImage2KHR"))
11283 {
11284 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11285 return hasExt ? (void*)entry_vkCmdCopyImage2KHR : nullptr;
11286 }
11287 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
11288 {
11289 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11290 return hasExt ? (void*)entry_vkCmdCopyBufferToImage2KHR : nullptr;
11291 }
11292 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
11293 {
11294 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11295 return hasExt ? (void*)entry_vkCmdCopyImageToBuffer2KHR : nullptr;
11296 }
11297 if (!strcmp(name, "vkCmdBlitImage2KHR"))
11298 {
11299 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11300 return hasExt ? (void*)entry_vkCmdBlitImage2KHR : nullptr;
11301 }
11302 if (!strcmp(name, "vkCmdResolveImage2KHR"))
11303 {
11304 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11305 return hasExt ? (void*)entry_vkCmdResolveImage2KHR : nullptr;
11306 }
11307#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011308#ifdef VK_ANDROID_native_buffer
11309 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
11310 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011311 return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011312 }
11313 if (!strcmp(name, "vkAcquireImageANDROID"))
11314 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011315 return (void*)dynCheck_entry_vkAcquireImageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011316 }
11317 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
11318 {
11319 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
11320 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
11321 }
11322#endif
11323#ifdef VK_EXT_debug_report
11324 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
11325 {
11326 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
11327 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
11328 }
11329 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
11330 {
11331 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
11332 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
11333 }
11334 if (!strcmp(name, "vkDebugReportMessageEXT"))
11335 {
11336 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
11337 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
11338 }
11339#endif
11340#ifdef VK_EXT_debug_marker
11341 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
11342 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011343 return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011344 }
11345 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
11346 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011347 return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011348 }
11349 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
11350 {
11351 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
11352 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
11353 }
11354 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
11355 {
11356 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
11357 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
11358 }
11359 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
11360 {
11361 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
11362 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
11363 }
11364#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011365#ifdef VK_EXT_transform_feedback
11366 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
11367 {
11368 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11369 return hasExt ? (void*)entry_vkCmdBindTransformFeedbackBuffersEXT : nullptr;
11370 }
11371 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
11372 {
11373 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11374 return hasExt ? (void*)entry_vkCmdBeginTransformFeedbackEXT : nullptr;
11375 }
11376 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
11377 {
11378 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11379 return hasExt ? (void*)entry_vkCmdEndTransformFeedbackEXT : nullptr;
11380 }
11381 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
11382 {
11383 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11384 return hasExt ? (void*)entry_vkCmdBeginQueryIndexedEXT : nullptr;
11385 }
11386 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
11387 {
11388 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11389 return hasExt ? (void*)entry_vkCmdEndQueryIndexedEXT : nullptr;
11390 }
11391 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
11392 {
11393 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11394 return hasExt ? (void*)entry_vkCmdDrawIndirectByteCountEXT : nullptr;
11395 }
11396#endif
11397#ifdef VK_NVX_image_view_handle
11398 if (!strcmp(name, "vkGetImageViewHandleNVX"))
11399 {
11400 return (void*)dynCheck_entry_vkGetImageViewHandleNVX;
11401 }
11402 if (!strcmp(name, "vkGetImageViewAddressNVX"))
11403 {
11404 return (void*)dynCheck_entry_vkGetImageViewAddressNVX;
11405 }
11406#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011407#ifdef VK_AMD_draw_indirect_count
11408 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
11409 {
11410 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
11411 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
11412 }
11413 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
11414 {
11415 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
11416 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
11417 }
11418#endif
11419#ifdef VK_AMD_shader_info
11420 if (!strcmp(name, "vkGetShaderInfoAMD"))
11421 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011422 return (void*)dynCheck_entry_vkGetShaderInfoAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011423 }
11424#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011425#ifdef VK_GGP_stream_descriptor_surface
11426 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
11427 {
11428 bool hasExt = resources->hasInstanceExtension(instance, "VK_GGP_stream_descriptor_surface");
11429 return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
11430 }
11431#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011432#ifdef VK_NV_external_memory_capabilities
11433 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
11434 {
11435 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
11436 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
11437 }
11438#endif
11439#ifdef VK_NV_external_memory_win32
11440 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
11441 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011442 return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011443 }
11444#endif
11445#ifdef VK_NN_vi_surface
11446 if (!strcmp(name, "vkCreateViSurfaceNN"))
11447 {
11448 bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
11449 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
11450 }
11451#endif
11452#ifdef VK_EXT_conditional_rendering
11453 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
11454 {
11455 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
11456 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
11457 }
11458 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
11459 {
11460 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
11461 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
11462 }
11463#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011464#ifdef VK_NV_clip_space_w_scaling
11465 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
11466 {
11467 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling");
11468 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
11469 }
11470#endif
11471#ifdef VK_EXT_direct_mode_display
11472 if (!strcmp(name, "vkReleaseDisplayEXT"))
11473 {
11474 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
11475 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
11476 }
11477#endif
11478#ifdef VK_EXT_acquire_xlib_display
11479 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
11480 {
11481 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
11482 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
11483 }
11484 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
11485 {
11486 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
11487 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
11488 }
11489#endif
11490#ifdef VK_EXT_display_surface_counter
11491 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
11492 {
11493 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
11494 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
11495 }
11496#endif
11497#ifdef VK_EXT_display_control
11498 if (!strcmp(name, "vkDisplayPowerControlEXT"))
11499 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011500 return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011501 }
11502 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
11503 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011504 return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011505 }
11506 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
11507 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011508 return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011509 }
11510 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
11511 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011512 return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011513 }
11514#endif
11515#ifdef VK_GOOGLE_display_timing
11516 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
11517 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011518 return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011519 }
11520 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
11521 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011522 return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011523 }
11524#endif
11525#ifdef VK_EXT_discard_rectangles
11526 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
11527 {
11528 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles");
11529 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
11530 }
11531#endif
11532#ifdef VK_EXT_hdr_metadata
11533 if (!strcmp(name, "vkSetHdrMetadataEXT"))
11534 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011535 return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011536 }
11537#endif
11538#ifdef VK_MVK_ios_surface
11539 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
11540 {
11541 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
11542 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
11543 }
11544#endif
11545#ifdef VK_MVK_macos_surface
11546 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
11547 {
11548 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
11549 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
11550 }
11551#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011552#ifdef VK_MVK_moltenvk
11553 if (!strcmp(name, "vkGetMTLDeviceMVK"))
11554 {
11555 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11556 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
11557 }
11558 if (!strcmp(name, "vkSetMTLTextureMVK"))
11559 {
11560 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11561 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
11562 }
11563 if (!strcmp(name, "vkGetMTLTextureMVK"))
11564 {
11565 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11566 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
11567 }
11568 if (!strcmp(name, "vkGetMTLBufferMVK"))
11569 {
11570 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11571 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
11572 }
11573 if (!strcmp(name, "vkUseIOSurfaceMVK"))
11574 {
11575 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11576 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
11577 }
11578 if (!strcmp(name, "vkGetIOSurfaceMVK"))
11579 {
11580 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11581 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
11582 }
11583#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011584#ifdef VK_EXT_debug_utils
11585 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
11586 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011587 return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011588 }
11589 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
11590 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011591 return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011592 }
11593 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
11594 {
11595 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11596 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
11597 }
11598 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
11599 {
11600 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11601 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
11602 }
11603 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
11604 {
11605 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11606 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
11607 }
11608 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
11609 {
11610 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11611 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
11612 }
11613 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
11614 {
11615 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11616 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
11617 }
11618 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
11619 {
11620 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11621 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
11622 }
11623 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
11624 {
11625 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11626 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
11627 }
11628 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
11629 {
11630 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11631 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
11632 }
11633 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
11634 {
11635 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11636 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
11637 }
11638#endif
11639#ifdef VK_ANDROID_external_memory_android_hardware_buffer
11640 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
11641 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011642 return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011643 }
11644 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
11645 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011646 return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011647 }
11648#endif
11649#ifdef VK_EXT_sample_locations
11650 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
11651 {
11652 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
11653 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
11654 }
11655 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
11656 {
11657 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
11658 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
11659 }
11660#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011661#ifdef VK_EXT_image_drm_format_modifier
11662 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
11663 {
11664 return (void*)dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT;
11665 }
11666#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011667#ifdef VK_EXT_validation_cache
11668 if (!strcmp(name, "vkCreateValidationCacheEXT"))
11669 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011670 return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011671 }
11672 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
11673 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011674 return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011675 }
11676 if (!strcmp(name, "vkMergeValidationCachesEXT"))
11677 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011678 return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011679 }
11680 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
11681 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011682 return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011683 }
11684#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011685#ifdef VK_NV_shading_rate_image
11686 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
11687 {
11688 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
11689 return hasExt ? (void*)entry_vkCmdBindShadingRateImageNV : nullptr;
11690 }
11691 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
11692 {
11693 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
11694 return hasExt ? (void*)entry_vkCmdSetViewportShadingRatePaletteNV : nullptr;
11695 }
11696 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
11697 {
11698 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
11699 return hasExt ? (void*)entry_vkCmdSetCoarseSampleOrderNV : nullptr;
11700 }
11701#endif
11702#ifdef VK_NV_ray_tracing
11703 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
11704 {
11705 return (void*)dynCheck_entry_vkCreateAccelerationStructureNV;
11706 }
11707 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
11708 {
11709 return (void*)dynCheck_entry_vkDestroyAccelerationStructureNV;
11710 }
11711 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
11712 {
11713 return (void*)dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV;
11714 }
11715 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
11716 {
11717 return (void*)dynCheck_entry_vkBindAccelerationStructureMemoryNV;
11718 }
11719 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
11720 {
11721 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11722 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructureNV : nullptr;
11723 }
11724 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
11725 {
11726 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11727 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureNV : nullptr;
11728 }
11729 if (!strcmp(name, "vkCmdTraceRaysNV"))
11730 {
11731 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11732 return hasExt ? (void*)entry_vkCmdTraceRaysNV : nullptr;
11733 }
11734 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
11735 {
11736 return (void*)dynCheck_entry_vkCreateRayTracingPipelinesNV;
11737 }
11738 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
11739 {
11740 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR;
11741 }
11742 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
11743 {
11744 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV;
11745 }
11746 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
11747 {
11748 return (void*)dynCheck_entry_vkGetAccelerationStructureHandleNV;
11749 }
11750 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
11751 {
11752 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11753 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesNV : nullptr;
11754 }
11755 if (!strcmp(name, "vkCompileDeferredNV"))
11756 {
11757 return (void*)dynCheck_entry_vkCompileDeferredNV;
11758 }
11759#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011760#ifdef VK_EXT_external_memory_host
11761 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
11762 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011763 return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011764 }
11765#endif
11766#ifdef VK_AMD_buffer_marker
11767 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
11768 {
11769 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker");
11770 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
11771 }
11772#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011773#ifdef VK_EXT_calibrated_timestamps
11774 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
11775 {
11776 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_calibrated_timestamps");
11777 return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
11778 }
11779 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
11780 {
11781 return (void*)dynCheck_entry_vkGetCalibratedTimestampsEXT;
11782 }
11783#endif
11784#ifdef VK_NV_mesh_shader
11785 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
11786 {
11787 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
11788 return hasExt ? (void*)entry_vkCmdDrawMeshTasksNV : nullptr;
11789 }
11790 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
11791 {
11792 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
11793 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectNV : nullptr;
11794 }
11795 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
11796 {
11797 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
11798 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountNV : nullptr;
11799 }
11800#endif
11801#ifdef VK_NV_scissor_exclusive
11802 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
11803 {
11804 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_scissor_exclusive");
11805 return hasExt ? (void*)entry_vkCmdSetExclusiveScissorNV : nullptr;
11806 }
11807#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011808#ifdef VK_NV_device_diagnostic_checkpoints
11809 if (!strcmp(name, "vkCmdSetCheckpointNV"))
11810 {
11811 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
11812 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
11813 }
11814 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
11815 {
11816 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
11817 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
11818 }
11819#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011820#ifdef VK_INTEL_performance_query
11821 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011822 {
Yilong Lia8d45f12021-02-07 02:30:21 -080011823 return (void*)dynCheck_entry_vkInitializePerformanceApiINTEL;
11824 }
11825 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
11826 {
11827 return (void*)dynCheck_entry_vkUninitializePerformanceApiINTEL;
11828 }
11829 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
11830 {
11831 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11832 return hasExt ? (void*)entry_vkCmdSetPerformanceMarkerINTEL : nullptr;
11833 }
11834 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
11835 {
11836 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11837 return hasExt ? (void*)entry_vkCmdSetPerformanceStreamMarkerINTEL : nullptr;
11838 }
11839 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
11840 {
11841 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11842 return hasExt ? (void*)entry_vkCmdSetPerformanceOverrideINTEL : nullptr;
11843 }
11844 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
11845 {
11846 return (void*)dynCheck_entry_vkAcquirePerformanceConfigurationINTEL;
11847 }
11848 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
11849 {
11850 return (void*)dynCheck_entry_vkReleasePerformanceConfigurationINTEL;
11851 }
11852 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
11853 {
11854 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11855 return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
11856 }
11857 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
11858 {
11859 return (void*)dynCheck_entry_vkGetPerformanceParameterINTEL;
11860 }
11861#endif
11862#ifdef VK_AMD_display_native_hdr
11863 if (!strcmp(name, "vkSetLocalDimmingAMD"))
11864 {
11865 return (void*)dynCheck_entry_vkSetLocalDimmingAMD;
11866 }
11867#endif
11868#ifdef VK_FUCHSIA_imagepipe_surface
11869 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
11870 {
11871 bool hasExt = resources->hasInstanceExtension(instance, "VK_FUCHSIA_imagepipe_surface");
11872 return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
11873 }
11874#endif
11875#ifdef VK_EXT_metal_surface
11876 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
11877 {
11878 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_metal_surface");
11879 return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011880 }
11881#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080011882#ifdef VK_GOOGLE_color_buffer
11883 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
11884 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011885 return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080011886 }
11887 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
11888 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011889 return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080011890 }
11891#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011892#ifdef VK_EXT_buffer_device_address
11893 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
11894 {
11895 return (void*)dynCheck_entry_vkGetBufferDeviceAddressEXT;
11896 }
11897#endif
11898#ifdef VK_EXT_tooling_info
11899 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
11900 {
11901 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_tooling_info");
11902 return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
11903 }
11904#endif
11905#ifdef VK_NV_cooperative_matrix
11906 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
11907 {
11908 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_cooperative_matrix");
11909 return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
11910 }
11911#endif
11912#ifdef VK_NV_coverage_reduction_mode
11913 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
11914 {
11915 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_coverage_reduction_mode");
11916 return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
11917 }
11918#endif
11919#ifdef VK_EXT_full_screen_exclusive
11920 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
11921 {
11922 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_full_screen_exclusive");
11923 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
11924 }
11925 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
11926 {
11927 return (void*)dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT;
11928 }
11929 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
11930 {
11931 return (void*)dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT;
11932 }
11933 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
11934 {
11935 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT;
11936 }
11937#endif
11938#ifdef VK_EXT_headless_surface
11939 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
11940 {
11941 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_headless_surface");
11942 return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
11943 }
11944#endif
11945#ifdef VK_EXT_line_rasterization
11946 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
11947 {
11948 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_line_rasterization");
11949 return hasExt ? (void*)entry_vkCmdSetLineStippleEXT : nullptr;
11950 }
11951#endif
11952#ifdef VK_EXT_host_query_reset
11953 if (!strcmp(name, "vkResetQueryPoolEXT"))
11954 {
11955 return (void*)dynCheck_entry_vkResetQueryPoolEXT;
11956 }
11957#endif
11958#ifdef VK_EXT_extended_dynamic_state
11959 if (!strcmp(name, "vkCmdSetCullModeEXT"))
11960 {
11961 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11962 return hasExt ? (void*)entry_vkCmdSetCullModeEXT : nullptr;
11963 }
11964 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
11965 {
11966 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11967 return hasExt ? (void*)entry_vkCmdSetFrontFaceEXT : nullptr;
11968 }
11969 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
11970 {
11971 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11972 return hasExt ? (void*)entry_vkCmdSetPrimitiveTopologyEXT : nullptr;
11973 }
11974 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
11975 {
11976 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11977 return hasExt ? (void*)entry_vkCmdSetViewportWithCountEXT : nullptr;
11978 }
11979 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
11980 {
11981 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11982 return hasExt ? (void*)entry_vkCmdSetScissorWithCountEXT : nullptr;
11983 }
11984 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
11985 {
11986 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11987 return hasExt ? (void*)entry_vkCmdBindVertexBuffers2EXT : nullptr;
11988 }
11989 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
11990 {
11991 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11992 return hasExt ? (void*)entry_vkCmdSetDepthTestEnableEXT : nullptr;
11993 }
11994 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
11995 {
11996 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11997 return hasExt ? (void*)entry_vkCmdSetDepthWriteEnableEXT : nullptr;
11998 }
11999 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
12000 {
12001 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12002 return hasExt ? (void*)entry_vkCmdSetDepthCompareOpEXT : nullptr;
12003 }
12004 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
12005 {
12006 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12007 return hasExt ? (void*)entry_vkCmdSetDepthBoundsTestEnableEXT : nullptr;
12008 }
12009 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
12010 {
12011 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12012 return hasExt ? (void*)entry_vkCmdSetStencilTestEnableEXT : nullptr;
12013 }
12014 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
12015 {
12016 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12017 return hasExt ? (void*)entry_vkCmdSetStencilOpEXT : nullptr;
12018 }
12019#endif
12020#ifdef VK_NV_device_generated_commands
12021 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
12022 {
12023 return (void*)dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV;
12024 }
12025 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
12026 {
12027 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
12028 return hasExt ? (void*)entry_vkCmdPreprocessGeneratedCommandsNV : nullptr;
12029 }
12030 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
12031 {
12032 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
12033 return hasExt ? (void*)entry_vkCmdExecuteGeneratedCommandsNV : nullptr;
12034 }
12035 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
12036 {
12037 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
12038 return hasExt ? (void*)entry_vkCmdBindPipelineShaderGroupNV : nullptr;
12039 }
12040 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
12041 {
12042 return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNV;
12043 }
12044 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
12045 {
12046 return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNV;
12047 }
12048#endif
12049#ifdef VK_EXT_private_data
12050 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
12051 {
12052 return (void*)dynCheck_entry_vkCreatePrivateDataSlotEXT;
12053 }
12054 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
12055 {
12056 return (void*)dynCheck_entry_vkDestroyPrivateDataSlotEXT;
12057 }
12058 if (!strcmp(name, "vkSetPrivateDataEXT"))
12059 {
12060 return (void*)dynCheck_entry_vkSetPrivateDataEXT;
12061 }
12062 if (!strcmp(name, "vkGetPrivateDataEXT"))
12063 {
12064 return (void*)dynCheck_entry_vkGetPrivateDataEXT;
12065 }
12066#endif
12067#ifdef VK_NV_fragment_shading_rate_enums
12068 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
12069 {
12070 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_fragment_shading_rate_enums");
12071 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateEnumNV : nullptr;
12072 }
12073#endif
12074#ifdef VK_EXT_directfb_surface
12075 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
12076 {
12077 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
12078 return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
12079 }
12080 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
12081 {
12082 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
12083 return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
12084 }
12085#endif
12086#ifdef VK_GOOGLE_address_space
12087 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
12088 {
12089 return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
12090 }
12091#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070012092#ifdef VK_GOOGLE_sized_descriptor_update_template
12093 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
12094 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012095 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070012096 }
12097#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012098#ifdef VK_GOOGLE_async_command_buffers
12099 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
12100 {
12101 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
12102 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
12103 }
12104 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
12105 {
12106 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
12107 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
12108 }
12109 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
12110 {
12111 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
12112 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
12113 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070012114 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
12115 {
12116 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
12117 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
12118 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012119#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +000012120#ifdef VK_GOOGLE_create_resources_with_requirements
12121 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
12122 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012123 return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +000012124 }
12125 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
12126 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012127 return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +000012128 }
12129#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -080012130#ifdef VK_GOOGLE_address_space_info
12131 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
12132 {
12133 return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE;
12134 }
12135#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070012136#ifdef VK_GOOGLE_free_memory_sync
12137 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
12138 {
12139 return (void*)dynCheck_entry_vkFreeMemorySyncGOOGLE;
12140 }
12141#endif
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012142#ifdef VK_GOOGLE_async_queue_submit
12143 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
12144 {
12145 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
12146 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
12147 }
12148 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
12149 {
12150 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
12151 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
12152 }
12153 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
12154 {
12155 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
12156 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
12157 }
12158 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
12159 {
12160 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
12161 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
12162 }
12163#endif
Yilong Lia48b0102020-09-15 15:08:28 -070012164#ifdef VK_GOOGLE_linear_image_layout
12165 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
12166 {
12167 return (void*)dynCheck_entry_vkGetLinearImageLayoutGOOGLE;
12168 }
12169#endif
Lingfeng Yangded34672021-01-22 23:17:47 -080012170#ifdef VK_GOOGLE_queue_submit_with_commands
12171 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
12172 {
12173 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_queue_submit_with_commands");
12174 return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
12175 }
12176#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012177#ifdef VK_KHR_acceleration_structure
12178 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
12179 {
12180 return (void*)dynCheck_entry_vkCreateAccelerationStructureKHR;
12181 }
12182 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
12183 {
12184 return (void*)dynCheck_entry_vkDestroyAccelerationStructureKHR;
12185 }
12186 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
12187 {
12188 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12189 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresKHR : nullptr;
12190 }
12191 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
12192 {
12193 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12194 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresIndirectKHR : nullptr;
12195 }
12196 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
12197 {
12198 return (void*)dynCheck_entry_vkBuildAccelerationStructuresKHR;
12199 }
12200 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
12201 {
12202 return (void*)dynCheck_entry_vkCopyAccelerationStructureKHR;
12203 }
12204 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
12205 {
12206 return (void*)dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR;
12207 }
12208 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
12209 {
12210 return (void*)dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR;
12211 }
12212 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
12213 {
12214 return (void*)dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR;
12215 }
12216 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
12217 {
12218 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12219 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureKHR : nullptr;
12220 }
12221 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
12222 {
12223 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12224 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureToMemoryKHR : nullptr;
12225 }
12226 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
12227 {
12228 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12229 return hasExt ? (void*)entry_vkCmdCopyMemoryToAccelerationStructureKHR : nullptr;
12230 }
12231 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
12232 {
12233 return (void*)dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR;
12234 }
12235 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
12236 {
12237 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12238 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesKHR : nullptr;
12239 }
12240 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
12241 {
12242 return (void*)dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR;
12243 }
12244 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
12245 {
12246 return (void*)dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR;
12247 }
12248#endif
12249#ifdef VK_KHR_ray_tracing_pipeline
12250 if (!strcmp(name, "vkCmdTraceRaysKHR"))
12251 {
12252 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
12253 return hasExt ? (void*)entry_vkCmdTraceRaysKHR : nullptr;
12254 }
12255 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
12256 {
12257 return (void*)dynCheck_entry_vkCreateRayTracingPipelinesKHR;
12258 }
12259 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
12260 {
12261 return (void*)dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR;
12262 }
12263 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
12264 {
12265 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
12266 return hasExt ? (void*)entry_vkCmdTraceRaysIndirectKHR : nullptr;
12267 }
12268 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
12269 {
12270 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR;
12271 }
12272 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
12273 {
12274 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
12275 return hasExt ? (void*)entry_vkCmdSetRayTracingPipelineStackSizeKHR : nullptr;
12276 }
12277#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012278 return nullptr;
12279}
12280void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
12281 auto resources = ResourceTracker::get();
12282 bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
12283#ifdef VK_VERSION_1_0
12284 if (!strcmp(name, "vkCreateInstance"))
12285 {
12286 return (void*)entry_vkCreateInstance;
12287 }
12288 if (!strcmp(name, "vkDestroyInstance"))
12289 {
12290 return (void*)entry_vkDestroyInstance;
12291 }
12292 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
12293 {
12294 return (void*)entry_vkEnumeratePhysicalDevices;
12295 }
12296 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
12297 {
12298 return (void*)entry_vkGetPhysicalDeviceFeatures;
12299 }
12300 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
12301 {
12302 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
12303 }
12304 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
12305 {
12306 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
12307 }
12308 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
12309 {
12310 return (void*)entry_vkGetPhysicalDeviceProperties;
12311 }
12312 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
12313 {
12314 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
12315 }
12316 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
12317 {
12318 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
12319 }
12320 if (!strcmp(name, "vkGetInstanceProcAddr"))
12321 {
12322 return (void*)entry_vkGetInstanceProcAddr;
12323 }
12324 if (!strcmp(name, "vkGetDeviceProcAddr"))
12325 {
12326 return (void*)entry_vkGetDeviceProcAddr;
12327 }
12328 if (!strcmp(name, "vkCreateDevice"))
12329 {
12330 return (void*)entry_vkCreateDevice;
12331 }
12332 if (!strcmp(name, "vkDestroyDevice"))
12333 {
12334 return (void*)entry_vkDestroyDevice;
12335 }
12336 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
12337 {
12338 return (void*)entry_vkEnumerateInstanceExtensionProperties;
12339 }
12340 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
12341 {
12342 return (void*)entry_vkEnumerateDeviceExtensionProperties;
12343 }
12344 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
12345 {
12346 return (void*)entry_vkEnumerateInstanceLayerProperties;
12347 }
12348 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
12349 {
12350 return (void*)entry_vkEnumerateDeviceLayerProperties;
12351 }
12352 if (!strcmp(name, "vkGetDeviceQueue"))
12353 {
12354 return (void*)entry_vkGetDeviceQueue;
12355 }
12356 if (!strcmp(name, "vkQueueSubmit"))
12357 {
12358 return (void*)entry_vkQueueSubmit;
12359 }
12360 if (!strcmp(name, "vkQueueWaitIdle"))
12361 {
12362 return (void*)entry_vkQueueWaitIdle;
12363 }
12364 if (!strcmp(name, "vkDeviceWaitIdle"))
12365 {
12366 return (void*)entry_vkDeviceWaitIdle;
12367 }
12368 if (!strcmp(name, "vkAllocateMemory"))
12369 {
12370 return (void*)entry_vkAllocateMemory;
12371 }
12372 if (!strcmp(name, "vkFreeMemory"))
12373 {
12374 return (void*)entry_vkFreeMemory;
12375 }
12376 if (!strcmp(name, "vkMapMemory"))
12377 {
12378 return (void*)entry_vkMapMemory;
12379 }
12380 if (!strcmp(name, "vkUnmapMemory"))
12381 {
12382 return (void*)entry_vkUnmapMemory;
12383 }
12384 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
12385 {
12386 return (void*)entry_vkFlushMappedMemoryRanges;
12387 }
12388 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
12389 {
12390 return (void*)entry_vkInvalidateMappedMemoryRanges;
12391 }
12392 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
12393 {
12394 return (void*)entry_vkGetDeviceMemoryCommitment;
12395 }
12396 if (!strcmp(name, "vkBindBufferMemory"))
12397 {
12398 return (void*)entry_vkBindBufferMemory;
12399 }
12400 if (!strcmp(name, "vkBindImageMemory"))
12401 {
12402 return (void*)entry_vkBindImageMemory;
12403 }
12404 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
12405 {
12406 return (void*)entry_vkGetBufferMemoryRequirements;
12407 }
12408 if (!strcmp(name, "vkGetImageMemoryRequirements"))
12409 {
12410 return (void*)entry_vkGetImageMemoryRequirements;
12411 }
12412 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
12413 {
12414 return (void*)entry_vkGetImageSparseMemoryRequirements;
12415 }
12416 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
12417 {
12418 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
12419 }
12420 if (!strcmp(name, "vkQueueBindSparse"))
12421 {
12422 return (void*)entry_vkQueueBindSparse;
12423 }
12424 if (!strcmp(name, "vkCreateFence"))
12425 {
12426 return (void*)entry_vkCreateFence;
12427 }
12428 if (!strcmp(name, "vkDestroyFence"))
12429 {
12430 return (void*)entry_vkDestroyFence;
12431 }
12432 if (!strcmp(name, "vkResetFences"))
12433 {
12434 return (void*)entry_vkResetFences;
12435 }
12436 if (!strcmp(name, "vkGetFenceStatus"))
12437 {
12438 return (void*)entry_vkGetFenceStatus;
12439 }
12440 if (!strcmp(name, "vkWaitForFences"))
12441 {
12442 return (void*)entry_vkWaitForFences;
12443 }
12444 if (!strcmp(name, "vkCreateSemaphore"))
12445 {
12446 return (void*)entry_vkCreateSemaphore;
12447 }
12448 if (!strcmp(name, "vkDestroySemaphore"))
12449 {
12450 return (void*)entry_vkDestroySemaphore;
12451 }
12452 if (!strcmp(name, "vkCreateEvent"))
12453 {
12454 return (void*)entry_vkCreateEvent;
12455 }
12456 if (!strcmp(name, "vkDestroyEvent"))
12457 {
12458 return (void*)entry_vkDestroyEvent;
12459 }
12460 if (!strcmp(name, "vkGetEventStatus"))
12461 {
12462 return (void*)entry_vkGetEventStatus;
12463 }
12464 if (!strcmp(name, "vkSetEvent"))
12465 {
12466 return (void*)entry_vkSetEvent;
12467 }
12468 if (!strcmp(name, "vkResetEvent"))
12469 {
12470 return (void*)entry_vkResetEvent;
12471 }
12472 if (!strcmp(name, "vkCreateQueryPool"))
12473 {
12474 return (void*)entry_vkCreateQueryPool;
12475 }
12476 if (!strcmp(name, "vkDestroyQueryPool"))
12477 {
12478 return (void*)entry_vkDestroyQueryPool;
12479 }
12480 if (!strcmp(name, "vkGetQueryPoolResults"))
12481 {
12482 return (void*)entry_vkGetQueryPoolResults;
12483 }
12484 if (!strcmp(name, "vkCreateBuffer"))
12485 {
12486 return (void*)entry_vkCreateBuffer;
12487 }
12488 if (!strcmp(name, "vkDestroyBuffer"))
12489 {
12490 return (void*)entry_vkDestroyBuffer;
12491 }
12492 if (!strcmp(name, "vkCreateBufferView"))
12493 {
12494 return (void*)entry_vkCreateBufferView;
12495 }
12496 if (!strcmp(name, "vkDestroyBufferView"))
12497 {
12498 return (void*)entry_vkDestroyBufferView;
12499 }
12500 if (!strcmp(name, "vkCreateImage"))
12501 {
12502 return (void*)entry_vkCreateImage;
12503 }
12504 if (!strcmp(name, "vkDestroyImage"))
12505 {
12506 return (void*)entry_vkDestroyImage;
12507 }
12508 if (!strcmp(name, "vkGetImageSubresourceLayout"))
12509 {
12510 return (void*)entry_vkGetImageSubresourceLayout;
12511 }
12512 if (!strcmp(name, "vkCreateImageView"))
12513 {
12514 return (void*)entry_vkCreateImageView;
12515 }
12516 if (!strcmp(name, "vkDestroyImageView"))
12517 {
12518 return (void*)entry_vkDestroyImageView;
12519 }
12520 if (!strcmp(name, "vkCreateShaderModule"))
12521 {
12522 return (void*)entry_vkCreateShaderModule;
12523 }
12524 if (!strcmp(name, "vkDestroyShaderModule"))
12525 {
12526 return (void*)entry_vkDestroyShaderModule;
12527 }
12528 if (!strcmp(name, "vkCreatePipelineCache"))
12529 {
12530 return (void*)entry_vkCreatePipelineCache;
12531 }
12532 if (!strcmp(name, "vkDestroyPipelineCache"))
12533 {
12534 return (void*)entry_vkDestroyPipelineCache;
12535 }
12536 if (!strcmp(name, "vkGetPipelineCacheData"))
12537 {
12538 return (void*)entry_vkGetPipelineCacheData;
12539 }
12540 if (!strcmp(name, "vkMergePipelineCaches"))
12541 {
12542 return (void*)entry_vkMergePipelineCaches;
12543 }
12544 if (!strcmp(name, "vkCreateGraphicsPipelines"))
12545 {
12546 return (void*)entry_vkCreateGraphicsPipelines;
12547 }
12548 if (!strcmp(name, "vkCreateComputePipelines"))
12549 {
12550 return (void*)entry_vkCreateComputePipelines;
12551 }
12552 if (!strcmp(name, "vkDestroyPipeline"))
12553 {
12554 return (void*)entry_vkDestroyPipeline;
12555 }
12556 if (!strcmp(name, "vkCreatePipelineLayout"))
12557 {
12558 return (void*)entry_vkCreatePipelineLayout;
12559 }
12560 if (!strcmp(name, "vkDestroyPipelineLayout"))
12561 {
12562 return (void*)entry_vkDestroyPipelineLayout;
12563 }
12564 if (!strcmp(name, "vkCreateSampler"))
12565 {
12566 return (void*)entry_vkCreateSampler;
12567 }
12568 if (!strcmp(name, "vkDestroySampler"))
12569 {
12570 return (void*)entry_vkDestroySampler;
12571 }
12572 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
12573 {
12574 return (void*)entry_vkCreateDescriptorSetLayout;
12575 }
12576 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
12577 {
12578 return (void*)entry_vkDestroyDescriptorSetLayout;
12579 }
12580 if (!strcmp(name, "vkCreateDescriptorPool"))
12581 {
12582 return (void*)entry_vkCreateDescriptorPool;
12583 }
12584 if (!strcmp(name, "vkDestroyDescriptorPool"))
12585 {
12586 return (void*)entry_vkDestroyDescriptorPool;
12587 }
12588 if (!strcmp(name, "vkResetDescriptorPool"))
12589 {
12590 return (void*)entry_vkResetDescriptorPool;
12591 }
12592 if (!strcmp(name, "vkAllocateDescriptorSets"))
12593 {
12594 return (void*)entry_vkAllocateDescriptorSets;
12595 }
12596 if (!strcmp(name, "vkFreeDescriptorSets"))
12597 {
12598 return (void*)entry_vkFreeDescriptorSets;
12599 }
12600 if (!strcmp(name, "vkUpdateDescriptorSets"))
12601 {
12602 return (void*)entry_vkUpdateDescriptorSets;
12603 }
12604 if (!strcmp(name, "vkCreateFramebuffer"))
12605 {
12606 return (void*)entry_vkCreateFramebuffer;
12607 }
12608 if (!strcmp(name, "vkDestroyFramebuffer"))
12609 {
12610 return (void*)entry_vkDestroyFramebuffer;
12611 }
12612 if (!strcmp(name, "vkCreateRenderPass"))
12613 {
12614 return (void*)entry_vkCreateRenderPass;
12615 }
12616 if (!strcmp(name, "vkDestroyRenderPass"))
12617 {
12618 return (void*)entry_vkDestroyRenderPass;
12619 }
12620 if (!strcmp(name, "vkGetRenderAreaGranularity"))
12621 {
12622 return (void*)entry_vkGetRenderAreaGranularity;
12623 }
12624 if (!strcmp(name, "vkCreateCommandPool"))
12625 {
12626 return (void*)entry_vkCreateCommandPool;
12627 }
12628 if (!strcmp(name, "vkDestroyCommandPool"))
12629 {
12630 return (void*)entry_vkDestroyCommandPool;
12631 }
12632 if (!strcmp(name, "vkResetCommandPool"))
12633 {
12634 return (void*)entry_vkResetCommandPool;
12635 }
12636 if (!strcmp(name, "vkAllocateCommandBuffers"))
12637 {
12638 return (void*)entry_vkAllocateCommandBuffers;
12639 }
12640 if (!strcmp(name, "vkFreeCommandBuffers"))
12641 {
12642 return (void*)entry_vkFreeCommandBuffers;
12643 }
12644 if (!strcmp(name, "vkBeginCommandBuffer"))
12645 {
12646 return (void*)entry_vkBeginCommandBuffer;
12647 }
12648 if (!strcmp(name, "vkEndCommandBuffer"))
12649 {
12650 return (void*)entry_vkEndCommandBuffer;
12651 }
12652 if (!strcmp(name, "vkResetCommandBuffer"))
12653 {
12654 return (void*)entry_vkResetCommandBuffer;
12655 }
12656 if (!strcmp(name, "vkCmdBindPipeline"))
12657 {
12658 return (void*)entry_vkCmdBindPipeline;
12659 }
12660 if (!strcmp(name, "vkCmdSetViewport"))
12661 {
12662 return (void*)entry_vkCmdSetViewport;
12663 }
12664 if (!strcmp(name, "vkCmdSetScissor"))
12665 {
12666 return (void*)entry_vkCmdSetScissor;
12667 }
12668 if (!strcmp(name, "vkCmdSetLineWidth"))
12669 {
12670 return (void*)entry_vkCmdSetLineWidth;
12671 }
12672 if (!strcmp(name, "vkCmdSetDepthBias"))
12673 {
12674 return (void*)entry_vkCmdSetDepthBias;
12675 }
12676 if (!strcmp(name, "vkCmdSetBlendConstants"))
12677 {
12678 return (void*)entry_vkCmdSetBlendConstants;
12679 }
12680 if (!strcmp(name, "vkCmdSetDepthBounds"))
12681 {
12682 return (void*)entry_vkCmdSetDepthBounds;
12683 }
12684 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
12685 {
12686 return (void*)entry_vkCmdSetStencilCompareMask;
12687 }
12688 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
12689 {
12690 return (void*)entry_vkCmdSetStencilWriteMask;
12691 }
12692 if (!strcmp(name, "vkCmdSetStencilReference"))
12693 {
12694 return (void*)entry_vkCmdSetStencilReference;
12695 }
12696 if (!strcmp(name, "vkCmdBindDescriptorSets"))
12697 {
12698 return (void*)entry_vkCmdBindDescriptorSets;
12699 }
12700 if (!strcmp(name, "vkCmdBindIndexBuffer"))
12701 {
12702 return (void*)entry_vkCmdBindIndexBuffer;
12703 }
12704 if (!strcmp(name, "vkCmdBindVertexBuffers"))
12705 {
12706 return (void*)entry_vkCmdBindVertexBuffers;
12707 }
12708 if (!strcmp(name, "vkCmdDraw"))
12709 {
12710 return (void*)entry_vkCmdDraw;
12711 }
12712 if (!strcmp(name, "vkCmdDrawIndexed"))
12713 {
12714 return (void*)entry_vkCmdDrawIndexed;
12715 }
12716 if (!strcmp(name, "vkCmdDrawIndirect"))
12717 {
12718 return (void*)entry_vkCmdDrawIndirect;
12719 }
12720 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
12721 {
12722 return (void*)entry_vkCmdDrawIndexedIndirect;
12723 }
12724 if (!strcmp(name, "vkCmdDispatch"))
12725 {
12726 return (void*)entry_vkCmdDispatch;
12727 }
12728 if (!strcmp(name, "vkCmdDispatchIndirect"))
12729 {
12730 return (void*)entry_vkCmdDispatchIndirect;
12731 }
12732 if (!strcmp(name, "vkCmdCopyBuffer"))
12733 {
12734 return (void*)entry_vkCmdCopyBuffer;
12735 }
12736 if (!strcmp(name, "vkCmdCopyImage"))
12737 {
12738 return (void*)entry_vkCmdCopyImage;
12739 }
12740 if (!strcmp(name, "vkCmdBlitImage"))
12741 {
12742 return (void*)entry_vkCmdBlitImage;
12743 }
12744 if (!strcmp(name, "vkCmdCopyBufferToImage"))
12745 {
12746 return (void*)entry_vkCmdCopyBufferToImage;
12747 }
12748 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
12749 {
12750 return (void*)entry_vkCmdCopyImageToBuffer;
12751 }
12752 if (!strcmp(name, "vkCmdUpdateBuffer"))
12753 {
12754 return (void*)entry_vkCmdUpdateBuffer;
12755 }
12756 if (!strcmp(name, "vkCmdFillBuffer"))
12757 {
12758 return (void*)entry_vkCmdFillBuffer;
12759 }
12760 if (!strcmp(name, "vkCmdClearColorImage"))
12761 {
12762 return (void*)entry_vkCmdClearColorImage;
12763 }
12764 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
12765 {
12766 return (void*)entry_vkCmdClearDepthStencilImage;
12767 }
12768 if (!strcmp(name, "vkCmdClearAttachments"))
12769 {
12770 return (void*)entry_vkCmdClearAttachments;
12771 }
12772 if (!strcmp(name, "vkCmdResolveImage"))
12773 {
12774 return (void*)entry_vkCmdResolveImage;
12775 }
12776 if (!strcmp(name, "vkCmdSetEvent"))
12777 {
12778 return (void*)entry_vkCmdSetEvent;
12779 }
12780 if (!strcmp(name, "vkCmdResetEvent"))
12781 {
12782 return (void*)entry_vkCmdResetEvent;
12783 }
12784 if (!strcmp(name, "vkCmdWaitEvents"))
12785 {
12786 return (void*)entry_vkCmdWaitEvents;
12787 }
12788 if (!strcmp(name, "vkCmdPipelineBarrier"))
12789 {
12790 return (void*)entry_vkCmdPipelineBarrier;
12791 }
12792 if (!strcmp(name, "vkCmdBeginQuery"))
12793 {
12794 return (void*)entry_vkCmdBeginQuery;
12795 }
12796 if (!strcmp(name, "vkCmdEndQuery"))
12797 {
12798 return (void*)entry_vkCmdEndQuery;
12799 }
12800 if (!strcmp(name, "vkCmdResetQueryPool"))
12801 {
12802 return (void*)entry_vkCmdResetQueryPool;
12803 }
12804 if (!strcmp(name, "vkCmdWriteTimestamp"))
12805 {
12806 return (void*)entry_vkCmdWriteTimestamp;
12807 }
12808 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
12809 {
12810 return (void*)entry_vkCmdCopyQueryPoolResults;
12811 }
12812 if (!strcmp(name, "vkCmdPushConstants"))
12813 {
12814 return (void*)entry_vkCmdPushConstants;
12815 }
12816 if (!strcmp(name, "vkCmdBeginRenderPass"))
12817 {
12818 return (void*)entry_vkCmdBeginRenderPass;
12819 }
12820 if (!strcmp(name, "vkCmdNextSubpass"))
12821 {
12822 return (void*)entry_vkCmdNextSubpass;
12823 }
12824 if (!strcmp(name, "vkCmdEndRenderPass"))
12825 {
12826 return (void*)entry_vkCmdEndRenderPass;
12827 }
12828 if (!strcmp(name, "vkCmdExecuteCommands"))
12829 {
12830 return (void*)entry_vkCmdExecuteCommands;
12831 }
12832#endif
12833#ifdef VK_VERSION_1_1
12834 if (!strcmp(name, "vkEnumerateInstanceVersion"))
12835 {
12836 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
12837 }
12838 if (!strcmp(name, "vkBindBufferMemory2"))
12839 {
12840 return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
12841 }
12842 if (!strcmp(name, "vkBindImageMemory2"))
12843 {
12844 return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
12845 }
12846 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
12847 {
12848 return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
12849 }
12850 if (!strcmp(name, "vkCmdSetDeviceMask"))
12851 {
12852 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
12853 }
12854 if (!strcmp(name, "vkCmdDispatchBase"))
12855 {
12856 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
12857 }
12858 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
12859 {
12860 return nullptr;
12861 }
12862 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
12863 {
12864 return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
12865 }
12866 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
12867 {
12868 return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
12869 }
12870 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
12871 {
12872 return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
12873 }
12874 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
12875 {
12876 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
12877 }
12878 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
12879 {
12880 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
12881 }
12882 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
12883 {
12884 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
12885 }
12886 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
12887 {
12888 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
12889 }
12890 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
12891 {
12892 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
12893 }
12894 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
12895 {
12896 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
12897 }
12898 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
12899 {
12900 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
12901 }
12902 if (!strcmp(name, "vkTrimCommandPool"))
12903 {
12904 return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
12905 }
12906 if (!strcmp(name, "vkGetDeviceQueue2"))
12907 {
12908 return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
12909 }
12910 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
12911 {
12912 return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
12913 }
12914 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
12915 {
12916 return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
12917 }
12918 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
12919 {
12920 return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
12921 }
12922 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
12923 {
12924 return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
12925 }
12926 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
12927 {
12928 return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
12929 }
12930 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
12931 {
12932 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
12933 }
12934 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
12935 {
12936 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
12937 }
12938 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
12939 {
12940 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
12941 }
12942 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
12943 {
12944 return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
12945 }
12946#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012947#ifdef VK_VERSION_1_2
12948 if (!strcmp(name, "vkCmdDrawIndirectCount"))
12949 {
12950 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12951 return hasExt ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
12952 }
12953 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
12954 {
12955 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12956 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
12957 }
12958 if (!strcmp(name, "vkCreateRenderPass2"))
12959 {
12960 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12961 return hasExt ? (void*)entry_vkCreateRenderPass2 : nullptr;
12962 }
12963 if (!strcmp(name, "vkCmdBeginRenderPass2"))
12964 {
12965 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12966 return hasExt ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
12967 }
12968 if (!strcmp(name, "vkCmdNextSubpass2"))
12969 {
12970 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12971 return hasExt ? (void*)entry_vkCmdNextSubpass2 : nullptr;
12972 }
12973 if (!strcmp(name, "vkCmdEndRenderPass2"))
12974 {
12975 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12976 return hasExt ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
12977 }
12978 if (!strcmp(name, "vkResetQueryPool"))
12979 {
12980 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12981 return hasExt ? (void*)entry_vkResetQueryPool : nullptr;
12982 }
12983 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
12984 {
12985 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12986 return hasExt ? (void*)entry_vkGetSemaphoreCounterValue : nullptr;
12987 }
12988 if (!strcmp(name, "vkWaitSemaphores"))
12989 {
12990 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12991 return hasExt ? (void*)entry_vkWaitSemaphores : nullptr;
12992 }
12993 if (!strcmp(name, "vkSignalSemaphore"))
12994 {
12995 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12996 return hasExt ? (void*)entry_vkSignalSemaphore : nullptr;
12997 }
12998 if (!strcmp(name, "vkGetBufferDeviceAddress"))
12999 {
13000 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13001 return hasExt ? (void*)entry_vkGetBufferDeviceAddress : nullptr;
13002 }
13003 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
13004 {
13005 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13006 return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddress : nullptr;
13007 }
13008 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
13009 {
13010 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13011 return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddress : nullptr;
13012 }
13013#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013014#ifdef VK_KHR_surface
13015 if (!strcmp(name, "vkDestroySurfaceKHR"))
13016 {
13017 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13018 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
13019 }
13020 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
13021 {
13022 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13023 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
13024 }
13025 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
13026 {
13027 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13028 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
13029 }
13030 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
13031 {
13032 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13033 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
13034 }
13035 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
13036 {
13037 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13038 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
13039 }
13040#endif
13041#ifdef VK_KHR_swapchain
13042 if (!strcmp(name, "vkCreateSwapchainKHR"))
13043 {
13044 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13045 return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
13046 }
13047 if (!strcmp(name, "vkDestroySwapchainKHR"))
13048 {
13049 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13050 return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
13051 }
13052 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
13053 {
13054 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13055 return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
13056 }
13057 if (!strcmp(name, "vkAcquireNextImageKHR"))
13058 {
13059 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13060 return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
13061 }
13062 if (!strcmp(name, "vkQueuePresentKHR"))
13063 {
13064 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13065 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
13066 }
13067 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
13068 {
13069 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13070 return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
13071 }
13072 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
13073 {
13074 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13075 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
13076 }
13077 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
13078 {
13079 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13080 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
13081 }
13082 if (!strcmp(name, "vkAcquireNextImage2KHR"))
13083 {
13084 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13085 return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
13086 }
13087#endif
13088#ifdef VK_KHR_display
13089 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
13090 {
13091 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13092 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
13093 }
13094 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
13095 {
13096 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13097 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
13098 }
13099 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
13100 {
13101 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13102 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
13103 }
13104 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
13105 {
13106 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13107 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
13108 }
13109 if (!strcmp(name, "vkCreateDisplayModeKHR"))
13110 {
13111 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13112 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
13113 }
13114 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
13115 {
13116 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13117 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
13118 }
13119 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
13120 {
13121 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13122 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
13123 }
13124#endif
13125#ifdef VK_KHR_display_swapchain
13126 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
13127 {
13128 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
13129 return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
13130 }
13131#endif
13132#ifdef VK_KHR_xlib_surface
13133 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
13134 {
13135 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
13136 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
13137 }
13138 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
13139 {
13140 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
13141 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
13142 }
13143#endif
13144#ifdef VK_KHR_xcb_surface
13145 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
13146 {
13147 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
13148 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
13149 }
13150 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
13151 {
13152 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
13153 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
13154 }
13155#endif
13156#ifdef VK_KHR_wayland_surface
13157 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
13158 {
13159 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
13160 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
13161 }
13162 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
13163 {
13164 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
13165 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
13166 }
13167#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013168#ifdef VK_KHR_android_surface
13169 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
13170 {
13171 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
13172 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
13173 }
13174#endif
13175#ifdef VK_KHR_win32_surface
13176 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
13177 {
13178 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
13179 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
13180 }
13181 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
13182 {
13183 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
13184 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
13185 }
13186#endif
13187#ifdef VK_KHR_get_physical_device_properties2
13188 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
13189 {
13190 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13191 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
13192 }
13193 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
13194 {
13195 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13196 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
13197 }
13198 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
13199 {
13200 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13201 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
13202 }
13203 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
13204 {
13205 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13206 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
13207 }
13208 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
13209 {
13210 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13211 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
13212 }
13213 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
13214 {
13215 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13216 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
13217 }
13218 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
13219 {
13220 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13221 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
13222 }
13223#endif
13224#ifdef VK_KHR_device_group
13225 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
13226 {
13227 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
13228 return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
13229 }
13230 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
13231 {
13232 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
13233 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
13234 }
13235 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
13236 {
13237 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
13238 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
13239 }
13240#endif
13241#ifdef VK_KHR_maintenance1
13242 if (!strcmp(name, "vkTrimCommandPoolKHR"))
13243 {
13244 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
13245 return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
13246 }
13247#endif
13248#ifdef VK_KHR_device_group_creation
13249 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
13250 {
13251 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
13252 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
13253 }
13254#endif
13255#ifdef VK_KHR_external_memory_capabilities
13256 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
13257 {
13258 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
13259 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
13260 }
13261#endif
13262#ifdef VK_KHR_external_memory_win32
13263 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
13264 {
13265 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
13266 return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
13267 }
13268 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
13269 {
13270 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
13271 return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
13272 }
13273#endif
13274#ifdef VK_KHR_external_memory_fd
13275 if (!strcmp(name, "vkGetMemoryFdKHR"))
13276 {
13277 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
13278 return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
13279 }
13280 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
13281 {
13282 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
13283 return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
13284 }
13285#endif
13286#ifdef VK_KHR_external_semaphore_capabilities
13287 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
13288 {
13289 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
13290 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
13291 }
13292#endif
13293#ifdef VK_KHR_external_semaphore_win32
13294 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
13295 {
13296 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
13297 return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
13298 }
13299 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
13300 {
13301 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
13302 return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
13303 }
13304#endif
13305#ifdef VK_KHR_external_semaphore_fd
13306 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
13307 {
13308 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
13309 return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
13310 }
13311 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
13312 {
13313 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
13314 return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
13315 }
13316#endif
13317#ifdef VK_KHR_push_descriptor
13318 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
13319 {
13320 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
13321 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
13322 }
13323 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
13324 {
13325 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
13326 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
13327 }
13328#endif
13329#ifdef VK_KHR_descriptor_update_template
13330 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
13331 {
13332 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
13333 return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
13334 }
13335 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
13336 {
13337 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
13338 return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
13339 }
13340 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
13341 {
13342 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
13343 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
13344 }
13345#endif
13346#ifdef VK_KHR_create_renderpass2
13347 if (!strcmp(name, "vkCreateRenderPass2KHR"))
13348 {
13349 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13350 return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
13351 }
13352 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
13353 {
13354 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13355 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
13356 }
13357 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
13358 {
13359 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13360 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
13361 }
13362 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
13363 {
13364 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13365 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
13366 }
13367#endif
13368#ifdef VK_KHR_shared_presentable_image
13369 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
13370 {
13371 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
13372 return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
13373 }
13374#endif
13375#ifdef VK_KHR_external_fence_capabilities
13376 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
13377 {
13378 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
13379 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
13380 }
13381#endif
13382#ifdef VK_KHR_external_fence_win32
13383 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
13384 {
13385 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
13386 return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
13387 }
13388 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
13389 {
13390 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
13391 return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
13392 }
13393#endif
13394#ifdef VK_KHR_external_fence_fd
13395 if (!strcmp(name, "vkImportFenceFdKHR"))
13396 {
13397 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
13398 return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
13399 }
13400 if (!strcmp(name, "vkGetFenceFdKHR"))
13401 {
13402 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
13403 return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
13404 }
13405#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013406#ifdef VK_KHR_performance_query
13407 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
13408 {
13409 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13410 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
13411 }
13412 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
13413 {
13414 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13415 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
13416 }
13417 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
13418 {
13419 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13420 return hasExt ? (void*)entry_vkAcquireProfilingLockKHR : nullptr;
13421 }
13422 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
13423 {
13424 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13425 return hasExt ? (void*)entry_vkReleaseProfilingLockKHR : nullptr;
13426 }
13427#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013428#ifdef VK_KHR_get_surface_capabilities2
13429 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
13430 {
13431 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
13432 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
13433 }
13434 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
13435 {
13436 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
13437 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
13438 }
13439#endif
13440#ifdef VK_KHR_get_display_properties2
13441 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
13442 {
13443 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13444 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
13445 }
13446 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
13447 {
13448 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13449 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
13450 }
13451 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
13452 {
13453 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13454 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
13455 }
13456 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
13457 {
13458 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13459 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
13460 }
13461#endif
13462#ifdef VK_KHR_get_memory_requirements2
13463 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
13464 {
13465 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
13466 return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
13467 }
13468 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
13469 {
13470 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
13471 return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
13472 }
13473 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
13474 {
13475 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
13476 return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
13477 }
13478#endif
13479#ifdef VK_KHR_sampler_ycbcr_conversion
13480 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
13481 {
13482 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
13483 return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
13484 }
13485 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
13486 {
13487 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
13488 return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
13489 }
13490#endif
13491#ifdef VK_KHR_bind_memory2
13492 if (!strcmp(name, "vkBindBufferMemory2KHR"))
13493 {
13494 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
13495 return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
13496 }
13497 if (!strcmp(name, "vkBindImageMemory2KHR"))
13498 {
13499 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
13500 return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
13501 }
13502#endif
13503#ifdef VK_KHR_maintenance3
13504 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
13505 {
13506 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
13507 return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
13508 }
13509#endif
13510#ifdef VK_KHR_draw_indirect_count
13511 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
13512 {
13513 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
13514 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
13515 }
13516 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
13517 {
13518 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
13519 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
13520 }
13521#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013522#ifdef VK_KHR_timeline_semaphore
13523 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
13524 {
13525 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
13526 return hasExt ? (void*)entry_vkGetSemaphoreCounterValueKHR : nullptr;
13527 }
13528 if (!strcmp(name, "vkWaitSemaphoresKHR"))
13529 {
13530 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
13531 return hasExt ? (void*)entry_vkWaitSemaphoresKHR : nullptr;
13532 }
13533 if (!strcmp(name, "vkSignalSemaphoreKHR"))
13534 {
13535 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
13536 return hasExt ? (void*)entry_vkSignalSemaphoreKHR : nullptr;
13537 }
13538#endif
13539#ifdef VK_KHR_fragment_shading_rate
13540 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
13541 {
13542 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
13543 return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
13544 }
13545 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
13546 {
13547 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
13548 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateKHR : nullptr;
13549 }
13550#endif
13551#ifdef VK_KHR_buffer_device_address
13552 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
13553 {
13554 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
13555 return hasExt ? (void*)entry_vkGetBufferDeviceAddressKHR : nullptr;
13556 }
13557 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
13558 {
13559 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
13560 return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddressKHR : nullptr;
13561 }
13562 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
13563 {
13564 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
13565 return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR : nullptr;
13566 }
13567#endif
13568#ifdef VK_KHR_deferred_host_operations
13569 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
13570 {
13571 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13572 return hasExt ? (void*)entry_vkCreateDeferredOperationKHR : nullptr;
13573 }
13574 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
13575 {
13576 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13577 return hasExt ? (void*)entry_vkDestroyDeferredOperationKHR : nullptr;
13578 }
13579 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
13580 {
13581 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13582 return hasExt ? (void*)entry_vkGetDeferredOperationMaxConcurrencyKHR : nullptr;
13583 }
13584 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
13585 {
13586 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13587 return hasExt ? (void*)entry_vkGetDeferredOperationResultKHR : nullptr;
13588 }
13589 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
13590 {
13591 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13592 return hasExt ? (void*)entry_vkDeferredOperationJoinKHR : nullptr;
13593 }
13594#endif
13595#ifdef VK_KHR_pipeline_executable_properties
13596 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
13597 {
13598 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
13599 return hasExt ? (void*)entry_vkGetPipelineExecutablePropertiesKHR : nullptr;
13600 }
13601 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
13602 {
13603 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
13604 return hasExt ? (void*)entry_vkGetPipelineExecutableStatisticsKHR : nullptr;
13605 }
13606 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
13607 {
13608 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
13609 return hasExt ? (void*)entry_vkGetPipelineExecutableInternalRepresentationsKHR : nullptr;
13610 }
13611#endif
13612#ifdef VK_KHR_copy_commands2
13613 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
13614 {
13615 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13616 return hasExt ? (void*)entry_vkCmdCopyBuffer2KHR : nullptr;
13617 }
13618 if (!strcmp(name, "vkCmdCopyImage2KHR"))
13619 {
13620 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13621 return hasExt ? (void*)entry_vkCmdCopyImage2KHR : nullptr;
13622 }
13623 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
13624 {
13625 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13626 return hasExt ? (void*)entry_vkCmdCopyBufferToImage2KHR : nullptr;
13627 }
13628 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
13629 {
13630 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13631 return hasExt ? (void*)entry_vkCmdCopyImageToBuffer2KHR : nullptr;
13632 }
13633 if (!strcmp(name, "vkCmdBlitImage2KHR"))
13634 {
13635 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13636 return hasExt ? (void*)entry_vkCmdBlitImage2KHR : nullptr;
13637 }
13638 if (!strcmp(name, "vkCmdResolveImage2KHR"))
13639 {
13640 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13641 return hasExt ? (void*)entry_vkCmdResolveImage2KHR : nullptr;
13642 }
13643#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013644#ifdef VK_ANDROID_native_buffer
13645 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
13646 {
13647 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
13648 return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
13649 }
13650 if (!strcmp(name, "vkAcquireImageANDROID"))
13651 {
13652 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
13653 return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
13654 }
13655 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
13656 {
13657 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
13658 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
13659 }
13660#endif
13661#ifdef VK_EXT_debug_report
13662 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
13663 {
13664 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
13665 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
13666 }
13667 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
13668 {
13669 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
13670 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
13671 }
13672 if (!strcmp(name, "vkDebugReportMessageEXT"))
13673 {
13674 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
13675 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
13676 }
13677#endif
13678#ifdef VK_EXT_debug_marker
13679 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
13680 {
13681 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13682 return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
13683 }
13684 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
13685 {
13686 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13687 return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
13688 }
13689 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
13690 {
13691 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13692 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
13693 }
13694 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
13695 {
13696 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13697 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
13698 }
13699 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
13700 {
13701 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13702 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
13703 }
13704#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013705#ifdef VK_EXT_transform_feedback
13706 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
13707 {
13708 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13709 return hasExt ? (void*)entry_vkCmdBindTransformFeedbackBuffersEXT : nullptr;
13710 }
13711 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
13712 {
13713 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13714 return hasExt ? (void*)entry_vkCmdBeginTransformFeedbackEXT : nullptr;
13715 }
13716 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
13717 {
13718 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13719 return hasExt ? (void*)entry_vkCmdEndTransformFeedbackEXT : nullptr;
13720 }
13721 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
13722 {
13723 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13724 return hasExt ? (void*)entry_vkCmdBeginQueryIndexedEXT : nullptr;
13725 }
13726 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
13727 {
13728 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13729 return hasExt ? (void*)entry_vkCmdEndQueryIndexedEXT : nullptr;
13730 }
13731 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
13732 {
13733 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13734 return hasExt ? (void*)entry_vkCmdDrawIndirectByteCountEXT : nullptr;
13735 }
13736#endif
13737#ifdef VK_NVX_image_view_handle
13738 if (!strcmp(name, "vkGetImageViewHandleNVX"))
13739 {
13740 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
13741 return hasExt ? (void*)entry_vkGetImageViewHandleNVX : nullptr;
13742 }
13743 if (!strcmp(name, "vkGetImageViewAddressNVX"))
13744 {
13745 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
13746 return hasExt ? (void*)entry_vkGetImageViewAddressNVX : nullptr;
13747 }
13748#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013749#ifdef VK_AMD_draw_indirect_count
13750 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
13751 {
13752 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
13753 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
13754 }
13755 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
13756 {
13757 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
13758 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
13759 }
13760#endif
13761#ifdef VK_AMD_shader_info
13762 if (!strcmp(name, "vkGetShaderInfoAMD"))
13763 {
13764 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
13765 return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
13766 }
13767#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013768#ifdef VK_GGP_stream_descriptor_surface
13769 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
13770 {
13771 bool hasExt = resources->hasDeviceExtension(device, "VK_GGP_stream_descriptor_surface");
13772 return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
13773 }
13774#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013775#ifdef VK_NV_external_memory_capabilities
13776 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
13777 {
13778 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
13779 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
13780 }
13781#endif
13782#ifdef VK_NV_external_memory_win32
13783 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
13784 {
13785 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
13786 return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
13787 }
13788#endif
13789#ifdef VK_NN_vi_surface
13790 if (!strcmp(name, "vkCreateViSurfaceNN"))
13791 {
13792 bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
13793 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
13794 }
13795#endif
13796#ifdef VK_EXT_conditional_rendering
13797 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
13798 {
13799 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
13800 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
13801 }
13802 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
13803 {
13804 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
13805 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
13806 }
13807#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013808#ifdef VK_NV_clip_space_w_scaling
13809 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
13810 {
13811 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
13812 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
13813 }
13814#endif
13815#ifdef VK_EXT_direct_mode_display
13816 if (!strcmp(name, "vkReleaseDisplayEXT"))
13817 {
13818 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
13819 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
13820 }
13821#endif
13822#ifdef VK_EXT_acquire_xlib_display
13823 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
13824 {
13825 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
13826 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
13827 }
13828 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
13829 {
13830 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
13831 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
13832 }
13833#endif
13834#ifdef VK_EXT_display_surface_counter
13835 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
13836 {
13837 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
13838 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
13839 }
13840#endif
13841#ifdef VK_EXT_display_control
13842 if (!strcmp(name, "vkDisplayPowerControlEXT"))
13843 {
13844 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13845 return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
13846 }
13847 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
13848 {
13849 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13850 return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
13851 }
13852 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
13853 {
13854 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13855 return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
13856 }
13857 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
13858 {
13859 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13860 return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
13861 }
13862#endif
13863#ifdef VK_GOOGLE_display_timing
13864 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
13865 {
13866 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
13867 return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
13868 }
13869 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
13870 {
13871 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
13872 return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
13873 }
13874#endif
13875#ifdef VK_EXT_discard_rectangles
13876 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
13877 {
13878 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
13879 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
13880 }
13881#endif
13882#ifdef VK_EXT_hdr_metadata
13883 if (!strcmp(name, "vkSetHdrMetadataEXT"))
13884 {
13885 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
13886 return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
13887 }
13888#endif
13889#ifdef VK_MVK_ios_surface
13890 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
13891 {
13892 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
13893 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
13894 }
13895#endif
13896#ifdef VK_MVK_macos_surface
13897 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
13898 {
13899 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
13900 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
13901 }
13902#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013903#ifdef VK_MVK_moltenvk
13904 if (!strcmp(name, "vkGetMTLDeviceMVK"))
13905 {
13906 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13907 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
13908 }
13909 if (!strcmp(name, "vkSetMTLTextureMVK"))
13910 {
13911 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13912 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
13913 }
13914 if (!strcmp(name, "vkGetMTLTextureMVK"))
13915 {
13916 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13917 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
13918 }
13919 if (!strcmp(name, "vkGetMTLBufferMVK"))
13920 {
13921 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13922 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
13923 }
13924 if (!strcmp(name, "vkUseIOSurfaceMVK"))
13925 {
13926 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13927 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
13928 }
13929 if (!strcmp(name, "vkGetIOSurfaceMVK"))
13930 {
13931 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13932 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
13933 }
13934#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013935#ifdef VK_EXT_debug_utils
13936 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
13937 {
13938 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13939 return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
13940 }
13941 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
13942 {
13943 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13944 return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
13945 }
13946 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
13947 {
13948 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13949 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
13950 }
13951 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
13952 {
13953 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13954 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
13955 }
13956 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
13957 {
13958 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13959 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
13960 }
13961 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
13962 {
13963 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13964 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
13965 }
13966 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
13967 {
13968 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13969 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
13970 }
13971 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
13972 {
13973 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13974 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
13975 }
13976 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
13977 {
13978 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13979 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
13980 }
13981 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
13982 {
13983 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13984 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
13985 }
13986 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
13987 {
13988 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13989 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
13990 }
13991#endif
13992#ifdef VK_ANDROID_external_memory_android_hardware_buffer
13993 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
13994 {
13995 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
13996 return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
13997 }
13998 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
13999 {
14000 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
14001 return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
14002 }
14003#endif
14004#ifdef VK_EXT_sample_locations
14005 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
14006 {
14007 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
14008 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
14009 }
14010 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
14011 {
14012 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
14013 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
14014 }
14015#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014016#ifdef VK_EXT_image_drm_format_modifier
14017 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
14018 {
14019 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier");
14020 return hasExt ? (void*)entry_vkGetImageDrmFormatModifierPropertiesEXT : nullptr;
14021 }
14022#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014023#ifdef VK_EXT_validation_cache
14024 if (!strcmp(name, "vkCreateValidationCacheEXT"))
14025 {
14026 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14027 return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
14028 }
14029 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
14030 {
14031 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14032 return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
14033 }
14034 if (!strcmp(name, "vkMergeValidationCachesEXT"))
14035 {
14036 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14037 return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
14038 }
14039 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
14040 {
14041 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14042 return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
14043 }
14044#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014045#ifdef VK_NV_shading_rate_image
14046 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
14047 {
14048 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
14049 return hasExt ? (void*)entry_vkCmdBindShadingRateImageNV : nullptr;
14050 }
14051 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
14052 {
14053 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
14054 return hasExt ? (void*)entry_vkCmdSetViewportShadingRatePaletteNV : nullptr;
14055 }
14056 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
14057 {
14058 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
14059 return hasExt ? (void*)entry_vkCmdSetCoarseSampleOrderNV : nullptr;
14060 }
14061#endif
14062#ifdef VK_NV_ray_tracing
14063 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
14064 {
14065 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14066 return hasExt ? (void*)entry_vkCreateAccelerationStructureNV : nullptr;
14067 }
14068 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
14069 {
14070 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14071 return hasExt ? (void*)entry_vkDestroyAccelerationStructureNV : nullptr;
14072 }
14073 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
14074 {
14075 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14076 return hasExt ? (void*)entry_vkGetAccelerationStructureMemoryRequirementsNV : nullptr;
14077 }
14078 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
14079 {
14080 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14081 return hasExt ? (void*)entry_vkBindAccelerationStructureMemoryNV : nullptr;
14082 }
14083 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
14084 {
14085 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14086 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructureNV : nullptr;
14087 }
14088 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
14089 {
14090 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14091 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureNV : nullptr;
14092 }
14093 if (!strcmp(name, "vkCmdTraceRaysNV"))
14094 {
14095 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14096 return hasExt ? (void*)entry_vkCmdTraceRaysNV : nullptr;
14097 }
14098 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
14099 {
14100 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14101 return hasExt ? (void*)entry_vkCreateRayTracingPipelinesNV : nullptr;
14102 }
14103 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
14104 {
14105 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14106 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesKHR : nullptr;
14107 }
14108 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
14109 {
14110 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14111 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesNV : nullptr;
14112 }
14113 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
14114 {
14115 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14116 return hasExt ? (void*)entry_vkGetAccelerationStructureHandleNV : nullptr;
14117 }
14118 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
14119 {
14120 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14121 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesNV : nullptr;
14122 }
14123 if (!strcmp(name, "vkCompileDeferredNV"))
14124 {
14125 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14126 return hasExt ? (void*)entry_vkCompileDeferredNV : nullptr;
14127 }
14128#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014129#ifdef VK_EXT_external_memory_host
14130 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
14131 {
14132 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
14133 return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
14134 }
14135#endif
14136#ifdef VK_AMD_buffer_marker
14137 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
14138 {
14139 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
14140 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
14141 }
14142#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014143#ifdef VK_EXT_calibrated_timestamps
14144 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
14145 {
14146 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
14147 return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
14148 }
14149 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
14150 {
14151 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
14152 return hasExt ? (void*)entry_vkGetCalibratedTimestampsEXT : nullptr;
14153 }
14154#endif
14155#ifdef VK_NV_mesh_shader
14156 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
14157 {
14158 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
14159 return hasExt ? (void*)entry_vkCmdDrawMeshTasksNV : nullptr;
14160 }
14161 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
14162 {
14163 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
14164 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectNV : nullptr;
14165 }
14166 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
14167 {
14168 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
14169 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountNV : nullptr;
14170 }
14171#endif
14172#ifdef VK_NV_scissor_exclusive
14173 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
14174 {
14175 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_scissor_exclusive");
14176 return hasExt ? (void*)entry_vkCmdSetExclusiveScissorNV : nullptr;
14177 }
14178#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014179#ifdef VK_NV_device_diagnostic_checkpoints
14180 if (!strcmp(name, "vkCmdSetCheckpointNV"))
14181 {
14182 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
14183 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
14184 }
14185 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
14186 {
14187 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
14188 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
14189 }
14190#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014191#ifdef VK_INTEL_performance_query
14192 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014193 {
Yilong Lia8d45f12021-02-07 02:30:21 -080014194 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14195 return hasExt ? (void*)entry_vkInitializePerformanceApiINTEL : nullptr;
14196 }
14197 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
14198 {
14199 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14200 return hasExt ? (void*)entry_vkUninitializePerformanceApiINTEL : nullptr;
14201 }
14202 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
14203 {
14204 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14205 return hasExt ? (void*)entry_vkCmdSetPerformanceMarkerINTEL : nullptr;
14206 }
14207 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
14208 {
14209 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14210 return hasExt ? (void*)entry_vkCmdSetPerformanceStreamMarkerINTEL : nullptr;
14211 }
14212 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
14213 {
14214 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14215 return hasExt ? (void*)entry_vkCmdSetPerformanceOverrideINTEL : nullptr;
14216 }
14217 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
14218 {
14219 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14220 return hasExt ? (void*)entry_vkAcquirePerformanceConfigurationINTEL : nullptr;
14221 }
14222 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
14223 {
14224 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14225 return hasExt ? (void*)entry_vkReleasePerformanceConfigurationINTEL : nullptr;
14226 }
14227 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
14228 {
14229 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14230 return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
14231 }
14232 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
14233 {
14234 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14235 return hasExt ? (void*)entry_vkGetPerformanceParameterINTEL : nullptr;
14236 }
14237#endif
14238#ifdef VK_AMD_display_native_hdr
14239 if (!strcmp(name, "vkSetLocalDimmingAMD"))
14240 {
14241 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr");
14242 return hasExt ? (void*)entry_vkSetLocalDimmingAMD : nullptr;
14243 }
14244#endif
14245#ifdef VK_FUCHSIA_imagepipe_surface
14246 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
14247 {
14248 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_imagepipe_surface");
14249 return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
14250 }
14251#endif
14252#ifdef VK_EXT_metal_surface
14253 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
14254 {
14255 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_metal_surface");
14256 return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080014257 }
14258#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080014259#ifdef VK_GOOGLE_color_buffer
14260 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
14261 {
14262 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
14263 return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
14264 }
14265 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
14266 {
14267 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
14268 return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
14269 }
14270#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014271#ifdef VK_EXT_buffer_device_address
14272 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
14273 {
14274 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address");
14275 return hasExt ? (void*)entry_vkGetBufferDeviceAddressEXT : nullptr;
14276 }
14277#endif
14278#ifdef VK_EXT_tooling_info
14279 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
14280 {
14281 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_tooling_info");
14282 return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
14283 }
14284#endif
14285#ifdef VK_NV_cooperative_matrix
14286 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
14287 {
14288 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_cooperative_matrix");
14289 return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
14290 }
14291#endif
14292#ifdef VK_NV_coverage_reduction_mode
14293 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
14294 {
14295 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_coverage_reduction_mode");
14296 return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
14297 }
14298#endif
14299#ifdef VK_EXT_full_screen_exclusive
14300 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
14301 {
14302 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14303 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
14304 }
14305 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
14306 {
14307 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14308 return hasExt ? (void*)entry_vkAcquireFullScreenExclusiveModeEXT : nullptr;
14309 }
14310 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
14311 {
14312 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14313 return hasExt ? (void*)entry_vkReleaseFullScreenExclusiveModeEXT : nullptr;
14314 }
14315 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
14316 {
14317 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14318 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModes2EXT : nullptr;
14319 }
14320#endif
14321#ifdef VK_EXT_headless_surface
14322 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
14323 {
14324 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_headless_surface");
14325 return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
14326 }
14327#endif
14328#ifdef VK_EXT_line_rasterization
14329 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
14330 {
14331 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_line_rasterization");
14332 return hasExt ? (void*)entry_vkCmdSetLineStippleEXT : nullptr;
14333 }
14334#endif
14335#ifdef VK_EXT_host_query_reset
14336 if (!strcmp(name, "vkResetQueryPoolEXT"))
14337 {
14338 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_host_query_reset");
14339 return hasExt ? (void*)entry_vkResetQueryPoolEXT : nullptr;
14340 }
14341#endif
14342#ifdef VK_EXT_extended_dynamic_state
14343 if (!strcmp(name, "vkCmdSetCullModeEXT"))
14344 {
14345 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14346 return hasExt ? (void*)entry_vkCmdSetCullModeEXT : nullptr;
14347 }
14348 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
14349 {
14350 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14351 return hasExt ? (void*)entry_vkCmdSetFrontFaceEXT : nullptr;
14352 }
14353 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
14354 {
14355 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14356 return hasExt ? (void*)entry_vkCmdSetPrimitiveTopologyEXT : nullptr;
14357 }
14358 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
14359 {
14360 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14361 return hasExt ? (void*)entry_vkCmdSetViewportWithCountEXT : nullptr;
14362 }
14363 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
14364 {
14365 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14366 return hasExt ? (void*)entry_vkCmdSetScissorWithCountEXT : nullptr;
14367 }
14368 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
14369 {
14370 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14371 return hasExt ? (void*)entry_vkCmdBindVertexBuffers2EXT : nullptr;
14372 }
14373 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
14374 {
14375 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14376 return hasExt ? (void*)entry_vkCmdSetDepthTestEnableEXT : nullptr;
14377 }
14378 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
14379 {
14380 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14381 return hasExt ? (void*)entry_vkCmdSetDepthWriteEnableEXT : nullptr;
14382 }
14383 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
14384 {
14385 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14386 return hasExt ? (void*)entry_vkCmdSetDepthCompareOpEXT : nullptr;
14387 }
14388 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
14389 {
14390 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14391 return hasExt ? (void*)entry_vkCmdSetDepthBoundsTestEnableEXT : nullptr;
14392 }
14393 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
14394 {
14395 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14396 return hasExt ? (void*)entry_vkCmdSetStencilTestEnableEXT : nullptr;
14397 }
14398 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
14399 {
14400 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14401 return hasExt ? (void*)entry_vkCmdSetStencilOpEXT : nullptr;
14402 }
14403#endif
14404#ifdef VK_NV_device_generated_commands
14405 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
14406 {
14407 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14408 return hasExt ? (void*)entry_vkGetGeneratedCommandsMemoryRequirementsNV : nullptr;
14409 }
14410 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
14411 {
14412 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14413 return hasExt ? (void*)entry_vkCmdPreprocessGeneratedCommandsNV : nullptr;
14414 }
14415 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
14416 {
14417 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14418 return hasExt ? (void*)entry_vkCmdExecuteGeneratedCommandsNV : nullptr;
14419 }
14420 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
14421 {
14422 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14423 return hasExt ? (void*)entry_vkCmdBindPipelineShaderGroupNV : nullptr;
14424 }
14425 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
14426 {
14427 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14428 return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNV : nullptr;
14429 }
14430 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
14431 {
14432 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14433 return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNV : nullptr;
14434 }
14435#endif
14436#ifdef VK_EXT_private_data
14437 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
14438 {
14439 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14440 return hasExt ? (void*)entry_vkCreatePrivateDataSlotEXT : nullptr;
14441 }
14442 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
14443 {
14444 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14445 return hasExt ? (void*)entry_vkDestroyPrivateDataSlotEXT : nullptr;
14446 }
14447 if (!strcmp(name, "vkSetPrivateDataEXT"))
14448 {
14449 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14450 return hasExt ? (void*)entry_vkSetPrivateDataEXT : nullptr;
14451 }
14452 if (!strcmp(name, "vkGetPrivateDataEXT"))
14453 {
14454 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14455 return hasExt ? (void*)entry_vkGetPrivateDataEXT : nullptr;
14456 }
14457#endif
14458#ifdef VK_NV_fragment_shading_rate_enums
14459 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
14460 {
14461 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_fragment_shading_rate_enums");
14462 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateEnumNV : nullptr;
14463 }
14464#endif
14465#ifdef VK_EXT_directfb_surface
14466 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
14467 {
14468 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
14469 return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
14470 }
14471 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
14472 {
14473 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
14474 return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
14475 }
14476#endif
14477#ifdef VK_GOOGLE_address_space
14478 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
14479 {
14480 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space");
14481 return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
14482 }
14483#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070014484#ifdef VK_GOOGLE_sized_descriptor_update_template
14485 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
14486 {
14487 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template");
14488 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
14489 }
14490#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014491#ifdef VK_GOOGLE_async_command_buffers
14492 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
14493 {
14494 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
14495 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
14496 }
14497 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
14498 {
14499 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
14500 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
14501 }
14502 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
14503 {
14504 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
14505 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
14506 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070014507 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
14508 {
14509 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
14510 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
14511 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014512#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +000014513#ifdef VK_GOOGLE_create_resources_with_requirements
14514 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
14515 {
14516 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
14517 return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
14518 }
14519 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
14520 {
14521 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
14522 return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
14523 }
14524#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -080014525#ifdef VK_GOOGLE_address_space_info
14526 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
14527 {
14528 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space_info");
14529 return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
14530 }
14531#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070014532#ifdef VK_GOOGLE_free_memory_sync
14533 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
14534 {
14535 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_free_memory_sync");
14536 return hasExt ? (void*)entry_vkFreeMemorySyncGOOGLE : nullptr;
14537 }
14538#endif
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014539#ifdef VK_GOOGLE_async_queue_submit
14540 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
14541 {
14542 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
14543 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
14544 }
14545 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
14546 {
14547 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
14548 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
14549 }
14550 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
14551 {
14552 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
14553 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
14554 }
14555 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
14556 {
14557 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
14558 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
14559 }
14560#endif
Yilong Lia48b0102020-09-15 15:08:28 -070014561#ifdef VK_GOOGLE_linear_image_layout
14562 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
14563 {
14564 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_linear_image_layout");
14565 return hasExt ? (void*)entry_vkGetLinearImageLayoutGOOGLE : nullptr;
14566 }
14567#endif
Lingfeng Yangded34672021-01-22 23:17:47 -080014568#ifdef VK_GOOGLE_queue_submit_with_commands
14569 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
14570 {
14571 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_queue_submit_with_commands");
14572 return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
14573 }
14574#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014575#ifdef VK_KHR_acceleration_structure
14576 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
14577 {
14578 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14579 return hasExt ? (void*)entry_vkCreateAccelerationStructureKHR : nullptr;
14580 }
14581 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
14582 {
14583 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14584 return hasExt ? (void*)entry_vkDestroyAccelerationStructureKHR : nullptr;
14585 }
14586 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
14587 {
14588 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14589 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresKHR : nullptr;
14590 }
14591 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
14592 {
14593 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14594 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresIndirectKHR : nullptr;
14595 }
14596 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
14597 {
14598 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14599 return hasExt ? (void*)entry_vkBuildAccelerationStructuresKHR : nullptr;
14600 }
14601 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
14602 {
14603 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14604 return hasExt ? (void*)entry_vkCopyAccelerationStructureKHR : nullptr;
14605 }
14606 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
14607 {
14608 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14609 return hasExt ? (void*)entry_vkCopyAccelerationStructureToMemoryKHR : nullptr;
14610 }
14611 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
14612 {
14613 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14614 return hasExt ? (void*)entry_vkCopyMemoryToAccelerationStructureKHR : nullptr;
14615 }
14616 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
14617 {
14618 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14619 return hasExt ? (void*)entry_vkWriteAccelerationStructuresPropertiesKHR : nullptr;
14620 }
14621 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
14622 {
14623 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14624 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureKHR : nullptr;
14625 }
14626 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
14627 {
14628 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14629 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureToMemoryKHR : nullptr;
14630 }
14631 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
14632 {
14633 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14634 return hasExt ? (void*)entry_vkCmdCopyMemoryToAccelerationStructureKHR : nullptr;
14635 }
14636 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
14637 {
14638 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14639 return hasExt ? (void*)entry_vkGetAccelerationStructureDeviceAddressKHR : nullptr;
14640 }
14641 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
14642 {
14643 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14644 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesKHR : nullptr;
14645 }
14646 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
14647 {
14648 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14649 return hasExt ? (void*)entry_vkGetDeviceAccelerationStructureCompatibilityKHR : nullptr;
14650 }
14651 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
14652 {
14653 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14654 return hasExt ? (void*)entry_vkGetAccelerationStructureBuildSizesKHR : nullptr;
14655 }
14656#endif
14657#ifdef VK_KHR_ray_tracing_pipeline
14658 if (!strcmp(name, "vkCmdTraceRaysKHR"))
14659 {
14660 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14661 return hasExt ? (void*)entry_vkCmdTraceRaysKHR : nullptr;
14662 }
14663 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
14664 {
14665 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14666 return hasExt ? (void*)entry_vkCreateRayTracingPipelinesKHR : nullptr;
14667 }
14668 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
14669 {
14670 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14671 return hasExt ? (void*)entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR : nullptr;
14672 }
14673 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
14674 {
14675 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14676 return hasExt ? (void*)entry_vkCmdTraceRaysIndirectKHR : nullptr;
14677 }
14678 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
14679 {
14680 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14681 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupStackSizeKHR : nullptr;
14682 }
14683 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
14684 {
14685 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14686 return hasExt ? (void*)entry_vkCmdSetRayTracingPipelineStackSizeKHR : nullptr;
14687 }
14688#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080014689 return nullptr;
14690}
14691
14692} // namespace goldfish_vk