blob: 3199d88b38ac1692c06e0c34934f1cdf22796688 [file] [log] [blame]
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001// Copyright (C) 2018 The Android Open Source Project
2// Copyright (C) 2018 Google Inc.
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16// Autogenerated module func_table
17// (impl) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
18// Please do not modify directly;
19// re-run android/scripts/generate-vulkan-sources.sh,
20// or directly from Python by defining:
21// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
22// CEREAL_OUTPUT_DIR: Where to put the generated sources.
23// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
24
25#include "func_table.h"
26
27
28#include "VkEncoder.h"
Lingfeng Yang239cd602021-01-22 22:57:35 -080029#include "../OpenglSystemCommon/HostConnection.h"
Lingfeng Yange9979522018-12-25 14:44:52 -080030#include "ResourceTracker.h"
Lingfeng Yang0b81df22018-11-05 21:40:30 -080031
Lingfeng Yang808a6312018-11-13 21:06:15 -080032#include "goldfish_vk_private_defs.h"
33
Lingfeng Yang2f51a332019-10-30 09:25:25 -070034#include <log/log.h>
35
Lingfeng Yang0b81df22018-11-05 21:40:30 -080036// Stuff we are not going to use but if included,
37// will cause compile errors. These are Android Vulkan
38// required extensions, but the approach will be to
39// implement them completely on the guest side.
40#undef VK_KHR_android_surface
Lingfeng Yang0b81df22018-11-05 21:40:30 -080041
42
43namespace goldfish_vk {
44
Lingfeng Yang2f51a332019-10-30 09:25:25 -070045static void sOnInvalidDynamicallyCheckedCall(const char* apiname, const char* neededFeature)
46{
47 ALOGE("invalid call to %s: %s not supported", apiname, neededFeature);
48 abort();
49}
Lingfeng Yang0b81df22018-11-05 21:40:30 -080050#ifdef VK_VERSION_1_0
51static VkResult entry_vkCreateInstance(
52 const VkInstanceCreateInfo* pCreateInfo,
53 const VkAllocationCallbacks* pAllocator,
54 VkInstance* pInstance)
55{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080056 AEMU_SCOPED_TRACE("vkCreateInstance");
Lingfeng Yang4f539502021-01-22 23:01:57 -080057 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -080058 VkResult vkCreateInstance_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080059 vkCreateInstance_VkResult_return = vkEnc->vkCreateInstance(pCreateInfo, pAllocator, pInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080060 return vkCreateInstance_VkResult_return;
61}
62static void entry_vkDestroyInstance(
63 VkInstance instance,
64 const VkAllocationCallbacks* pAllocator)
65{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080066 AEMU_SCOPED_TRACE("vkDestroyInstance");
Lingfeng Yang4f539502021-01-22 23:01:57 -080067 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080068 vkEnc->vkDestroyInstance(instance, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080069}
70static VkResult entry_vkEnumeratePhysicalDevices(
71 VkInstance instance,
72 uint32_t* pPhysicalDeviceCount,
73 VkPhysicalDevice* pPhysicalDevices)
74{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080075 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices");
Lingfeng Yang4f539502021-01-22 23:01:57 -080076 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -080077 VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
Lingfeng Yangb64ca452019-02-14 22:04:28 -080078 auto resources = ResourceTracker::get();
79 vkEnumeratePhysicalDevices_VkResult_return = resources->on_vkEnumeratePhysicalDevices(vkEnc, VK_SUCCESS, instance, pPhysicalDeviceCount, pPhysicalDevices);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080080 return vkEnumeratePhysicalDevices_VkResult_return;
81}
82static void entry_vkGetPhysicalDeviceFeatures(
83 VkPhysicalDevice physicalDevice,
84 VkPhysicalDeviceFeatures* pFeatures)
85{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080086 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -080087 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080088 vkEnc->vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080089}
90static void entry_vkGetPhysicalDeviceFormatProperties(
91 VkPhysicalDevice physicalDevice,
92 VkFormat format,
93 VkFormatProperties* pFormatProperties)
94{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080095 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -080096 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080097 vkEnc->vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080098}
99static VkResult entry_vkGetPhysicalDeviceImageFormatProperties(
100 VkPhysicalDevice physicalDevice,
101 VkFormat format,
102 VkImageType type,
103 VkImageTiling tiling,
104 VkImageUsageFlags usage,
105 VkImageCreateFlags flags,
106 VkImageFormatProperties* pImageFormatProperties)
107{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800108 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800109 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800110 VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800111 vkGetPhysicalDeviceImageFormatProperties_VkResult_return = vkEnc->vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800112 return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
113}
114static void entry_vkGetPhysicalDeviceProperties(
115 VkPhysicalDevice physicalDevice,
116 VkPhysicalDeviceProperties* pProperties)
117{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800118 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800119 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800120 vkEnc->vkGetPhysicalDeviceProperties(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800121}
122static void entry_vkGetPhysicalDeviceQueueFamilyProperties(
123 VkPhysicalDevice physicalDevice,
124 uint32_t* pQueueFamilyPropertyCount,
125 VkQueueFamilyProperties* pQueueFamilyProperties)
126{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800127 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800128 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800129 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800130}
131static void entry_vkGetPhysicalDeviceMemoryProperties(
132 VkPhysicalDevice physicalDevice,
133 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
134{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800135 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800136 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800137 vkEnc->vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800138}
139static PFN_vkVoidFunction entry_vkGetInstanceProcAddr(
140 VkInstance instance,
141 const char* pName)
142{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800143 AEMU_SCOPED_TRACE("vkGetInstanceProcAddr");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800144 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800145 PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800146 vkGetInstanceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetInstanceProcAddr(instance, pName, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800147 return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
148}
149static PFN_vkVoidFunction entry_vkGetDeviceProcAddr(
150 VkDevice device,
151 const char* pName)
152{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800153 AEMU_SCOPED_TRACE("vkGetDeviceProcAddr");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800154 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800155 PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800156 vkGetDeviceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetDeviceProcAddr(device, pName, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800157 return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
158}
159static VkResult entry_vkCreateDevice(
160 VkPhysicalDevice physicalDevice,
161 const VkDeviceCreateInfo* pCreateInfo,
162 const VkAllocationCallbacks* pAllocator,
163 VkDevice* pDevice)
164{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800165 AEMU_SCOPED_TRACE("vkCreateDevice");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800166 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800167 VkResult vkCreateDevice_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800168 vkCreateDevice_VkResult_return = vkEnc->vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800169 return vkCreateDevice_VkResult_return;
170}
171static void entry_vkDestroyDevice(
172 VkDevice device,
173 const VkAllocationCallbacks* pAllocator)
174{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800175 AEMU_SCOPED_TRACE("vkDestroyDevice");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800176 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800177 vkEnc->vkDestroyDevice(device, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800178}
179static VkResult entry_vkEnumerateInstanceExtensionProperties(
180 const char* pLayerName,
181 uint32_t* pPropertyCount,
182 VkExtensionProperties* pProperties)
183{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800184 AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800185 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800186 VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -0800187 auto resources = ResourceTracker::get();
188 vkEnumerateInstanceExtensionProperties_VkResult_return = resources->on_vkEnumerateInstanceExtensionProperties(vkEnc, VK_SUCCESS, pLayerName, pPropertyCount, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800189 return vkEnumerateInstanceExtensionProperties_VkResult_return;
190}
191static VkResult entry_vkEnumerateDeviceExtensionProperties(
192 VkPhysicalDevice physicalDevice,
193 const char* pLayerName,
194 uint32_t* pPropertyCount,
195 VkExtensionProperties* pProperties)
196{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800197 AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800198 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800199 VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -0800200 auto resources = ResourceTracker::get();
201 vkEnumerateDeviceExtensionProperties_VkResult_return = resources->on_vkEnumerateDeviceExtensionProperties(vkEnc, VK_SUCCESS, physicalDevice, pLayerName, pPropertyCount, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800202 return vkEnumerateDeviceExtensionProperties_VkResult_return;
203}
204static VkResult entry_vkEnumerateInstanceLayerProperties(
205 uint32_t* pPropertyCount,
206 VkLayerProperties* pProperties)
207{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800208 AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800209 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800210 VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800211 vkEnumerateInstanceLayerProperties_VkResult_return = vkEnc->vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800212 return vkEnumerateInstanceLayerProperties_VkResult_return;
213}
214static VkResult entry_vkEnumerateDeviceLayerProperties(
215 VkPhysicalDevice physicalDevice,
216 uint32_t* pPropertyCount,
217 VkLayerProperties* pProperties)
218{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800219 AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800220 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800221 VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800222 vkEnumerateDeviceLayerProperties_VkResult_return = vkEnc->vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800223 return vkEnumerateDeviceLayerProperties_VkResult_return;
224}
225static void entry_vkGetDeviceQueue(
226 VkDevice device,
227 uint32_t queueFamilyIndex,
228 uint32_t queueIndex,
229 VkQueue* pQueue)
230{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800231 AEMU_SCOPED_TRACE("vkGetDeviceQueue");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800232 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800233 vkEnc->vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800234}
235static VkResult entry_vkQueueSubmit(
236 VkQueue queue,
237 uint32_t submitCount,
238 const VkSubmitInfo* pSubmits,
239 VkFence fence)
240{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800241 AEMU_SCOPED_TRACE("vkQueueSubmit");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800242 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800243 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
David Reveman24710222019-02-25 02:21:42 -0500244 auto resources = ResourceTracker::get();
245 vkQueueSubmit_VkResult_return = resources->on_vkQueueSubmit(vkEnc, VK_SUCCESS, queue, submitCount, pSubmits, fence);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800246 return vkQueueSubmit_VkResult_return;
247}
248static VkResult entry_vkQueueWaitIdle(
249 VkQueue queue)
250{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800251 AEMU_SCOPED_TRACE("vkQueueWaitIdle");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800252 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800253 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700254 auto resources = ResourceTracker::get();
255 vkQueueWaitIdle_VkResult_return = resources->on_vkQueueWaitIdle(vkEnc, VK_SUCCESS, queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800256 return vkQueueWaitIdle_VkResult_return;
257}
258static VkResult entry_vkDeviceWaitIdle(
259 VkDevice device)
260{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800261 AEMU_SCOPED_TRACE("vkDeviceWaitIdle");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800262 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800263 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800264 vkDeviceWaitIdle_VkResult_return = vkEnc->vkDeviceWaitIdle(device, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800265 return vkDeviceWaitIdle_VkResult_return;
266}
267static VkResult entry_vkAllocateMemory(
268 VkDevice device,
269 const VkMemoryAllocateInfo* pAllocateInfo,
270 const VkAllocationCallbacks* pAllocator,
271 VkDeviceMemory* pMemory)
272{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800273 AEMU_SCOPED_TRACE("vkAllocateMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800274 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800275 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
Lingfeng Yange9979522018-12-25 14:44:52 -0800276 auto resources = ResourceTracker::get();
277 vkAllocateMemory_VkResult_return = resources->on_vkAllocateMemory(vkEnc, VK_SUCCESS, device, pAllocateInfo, pAllocator, pMemory);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800278 return vkAllocateMemory_VkResult_return;
279}
280static void entry_vkFreeMemory(
281 VkDevice device,
282 VkDeviceMemory memory,
283 const VkAllocationCallbacks* pAllocator)
284{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800285 AEMU_SCOPED_TRACE("vkFreeMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800286 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yange9979522018-12-25 14:44:52 -0800287 auto resources = ResourceTracker::get();
288 resources->on_vkFreeMemory(vkEnc, device, memory, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800289}
290static VkResult entry_vkMapMemory(
291 VkDevice device,
292 VkDeviceMemory memory,
293 VkDeviceSize offset,
294 VkDeviceSize size,
295 VkMemoryMapFlags flags,
296 void** ppData)
297{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800298 AEMU_SCOPED_TRACE("vkMapMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800299 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800300 VkResult vkMapMemory_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800301 vkMapMemory_VkResult_return = vkEnc->vkMapMemory(device, memory, offset, size, flags, ppData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800302 return vkMapMemory_VkResult_return;
303}
304static void entry_vkUnmapMemory(
305 VkDevice device,
306 VkDeviceMemory memory)
307{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800308 AEMU_SCOPED_TRACE("vkUnmapMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800309 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800310 vkEnc->vkUnmapMemory(device, memory, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800311}
312static VkResult entry_vkFlushMappedMemoryRanges(
313 VkDevice device,
314 uint32_t memoryRangeCount,
315 const VkMappedMemoryRange* pMemoryRanges)
316{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800317 AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800318 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800319 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800320 vkFlushMappedMemoryRanges_VkResult_return = vkEnc->vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800321 return vkFlushMappedMemoryRanges_VkResult_return;
322}
323static VkResult entry_vkInvalidateMappedMemoryRanges(
324 VkDevice device,
325 uint32_t memoryRangeCount,
326 const VkMappedMemoryRange* pMemoryRanges)
327{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800328 AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800329 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800330 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800331 vkInvalidateMappedMemoryRanges_VkResult_return = vkEnc->vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800332 return vkInvalidateMappedMemoryRanges_VkResult_return;
333}
334static void entry_vkGetDeviceMemoryCommitment(
335 VkDevice device,
336 VkDeviceMemory memory,
337 VkDeviceSize* pCommittedMemoryInBytes)
338{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800339 AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800340 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800341 vkEnc->vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800342}
343static VkResult entry_vkBindBufferMemory(
344 VkDevice device,
345 VkBuffer buffer,
346 VkDeviceMemory memory,
347 VkDeviceSize memoryOffset)
348{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800349 AEMU_SCOPED_TRACE("vkBindBufferMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800350 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800351 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800352 auto resources = ResourceTracker::get();
353 vkBindBufferMemory_VkResult_return = resources->on_vkBindBufferMemory(vkEnc, VK_SUCCESS, device, buffer, memory, memoryOffset);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800354 return vkBindBufferMemory_VkResult_return;
355}
356static VkResult entry_vkBindImageMemory(
357 VkDevice device,
358 VkImage image,
359 VkDeviceMemory memory,
360 VkDeviceSize memoryOffset)
361{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800362 AEMU_SCOPED_TRACE("vkBindImageMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800363 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800364 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800365 auto resources = ResourceTracker::get();
366 vkBindImageMemory_VkResult_return = resources->on_vkBindImageMemory(vkEnc, VK_SUCCESS, device, image, memory, memoryOffset);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800367 return vkBindImageMemory_VkResult_return;
368}
369static void entry_vkGetBufferMemoryRequirements(
370 VkDevice device,
371 VkBuffer buffer,
372 VkMemoryRequirements* pMemoryRequirements)
373{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800374 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800375 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800376 auto resources = ResourceTracker::get();
377 resources->on_vkGetBufferMemoryRequirements(vkEnc, device, buffer, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800378}
379static void entry_vkGetImageMemoryRequirements(
380 VkDevice device,
381 VkImage image,
382 VkMemoryRequirements* pMemoryRequirements)
383{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800384 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800385 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800386 auto resources = ResourceTracker::get();
387 resources->on_vkGetImageMemoryRequirements(vkEnc, device, image, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800388}
389static void entry_vkGetImageSparseMemoryRequirements(
390 VkDevice device,
391 VkImage image,
392 uint32_t* pSparseMemoryRequirementCount,
393 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
394{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800395 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800396 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800397 vkEnc->vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800398}
399static void entry_vkGetPhysicalDeviceSparseImageFormatProperties(
400 VkPhysicalDevice physicalDevice,
401 VkFormat format,
402 VkImageType type,
403 VkSampleCountFlagBits samples,
404 VkImageUsageFlags usage,
405 VkImageTiling tiling,
406 uint32_t* pPropertyCount,
407 VkSparseImageFormatProperties* pProperties)
408{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800409 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800410 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800411 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800412}
413static VkResult entry_vkQueueBindSparse(
414 VkQueue queue,
415 uint32_t bindInfoCount,
416 const VkBindSparseInfo* pBindInfo,
417 VkFence fence)
418{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800419 AEMU_SCOPED_TRACE("vkQueueBindSparse");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800420 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800421 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800422 vkQueueBindSparse_VkResult_return = vkEnc->vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800423 return vkQueueBindSparse_VkResult_return;
424}
425static VkResult entry_vkCreateFence(
426 VkDevice device,
427 const VkFenceCreateInfo* pCreateInfo,
428 const VkAllocationCallbacks* pAllocator,
429 VkFence* pFence)
430{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800431 AEMU_SCOPED_TRACE("vkCreateFence");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800432 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800433 VkResult vkCreateFence_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700434 auto resources = ResourceTracker::get();
435 vkCreateFence_VkResult_return = resources->on_vkCreateFence(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pFence);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800436 return vkCreateFence_VkResult_return;
437}
438static void entry_vkDestroyFence(
439 VkDevice device,
440 VkFence fence,
441 const VkAllocationCallbacks* pAllocator)
442{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800443 AEMU_SCOPED_TRACE("vkDestroyFence");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800444 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800445 vkEnc->vkDestroyFence(device, fence, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800446}
447static VkResult entry_vkResetFences(
448 VkDevice device,
449 uint32_t fenceCount,
450 const VkFence* pFences)
451{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800452 AEMU_SCOPED_TRACE("vkResetFences");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800453 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800454 VkResult vkResetFences_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700455 auto resources = ResourceTracker::get();
456 vkResetFences_VkResult_return = resources->on_vkResetFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800457 return vkResetFences_VkResult_return;
458}
459static VkResult entry_vkGetFenceStatus(
460 VkDevice device,
461 VkFence fence)
462{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800463 AEMU_SCOPED_TRACE("vkGetFenceStatus");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800464 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800465 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800466 vkGetFenceStatus_VkResult_return = vkEnc->vkGetFenceStatus(device, fence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800467 return vkGetFenceStatus_VkResult_return;
468}
469static VkResult entry_vkWaitForFences(
470 VkDevice device,
471 uint32_t fenceCount,
472 const VkFence* pFences,
473 VkBool32 waitAll,
474 uint64_t timeout)
475{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800476 AEMU_SCOPED_TRACE("vkWaitForFences");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800477 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800478 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700479 auto resources = ResourceTracker::get();
480 vkWaitForFences_VkResult_return = resources->on_vkWaitForFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences, waitAll, timeout);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800481 return vkWaitForFences_VkResult_return;
482}
483static VkResult entry_vkCreateSemaphore(
484 VkDevice device,
485 const VkSemaphoreCreateInfo* pCreateInfo,
486 const VkAllocationCallbacks* pAllocator,
487 VkSemaphore* pSemaphore)
488{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800489 AEMU_SCOPED_TRACE("vkCreateSemaphore");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800490 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800491 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
David Reveman32b110e2019-02-21 13:20:54 -0500492 auto resources = ResourceTracker::get();
493 vkCreateSemaphore_VkResult_return = resources->on_vkCreateSemaphore(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSemaphore);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800494 return vkCreateSemaphore_VkResult_return;
495}
496static void entry_vkDestroySemaphore(
497 VkDevice device,
498 VkSemaphore semaphore,
499 const VkAllocationCallbacks* pAllocator)
500{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800501 AEMU_SCOPED_TRACE("vkDestroySemaphore");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800502 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
David Reveman32b110e2019-02-21 13:20:54 -0500503 auto resources = ResourceTracker::get();
504 resources->on_vkDestroySemaphore(vkEnc, device, semaphore, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800505}
506static VkResult entry_vkCreateEvent(
507 VkDevice device,
508 const VkEventCreateInfo* pCreateInfo,
509 const VkAllocationCallbacks* pAllocator,
510 VkEvent* pEvent)
511{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800512 AEMU_SCOPED_TRACE("vkCreateEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800513 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800514 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800515 vkCreateEvent_VkResult_return = vkEnc->vkCreateEvent(device, pCreateInfo, pAllocator, pEvent, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800516 return vkCreateEvent_VkResult_return;
517}
518static void entry_vkDestroyEvent(
519 VkDevice device,
520 VkEvent event,
521 const VkAllocationCallbacks* pAllocator)
522{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800523 AEMU_SCOPED_TRACE("vkDestroyEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800524 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800525 vkEnc->vkDestroyEvent(device, event, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800526}
527static VkResult entry_vkGetEventStatus(
528 VkDevice device,
529 VkEvent event)
530{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800531 AEMU_SCOPED_TRACE("vkGetEventStatus");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800532 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800533 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800534 vkGetEventStatus_VkResult_return = vkEnc->vkGetEventStatus(device, event, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800535 return vkGetEventStatus_VkResult_return;
536}
537static VkResult entry_vkSetEvent(
538 VkDevice device,
539 VkEvent event)
540{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800541 AEMU_SCOPED_TRACE("vkSetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800542 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800543 VkResult vkSetEvent_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800544 vkSetEvent_VkResult_return = vkEnc->vkSetEvent(device, event, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800545 return vkSetEvent_VkResult_return;
546}
547static VkResult entry_vkResetEvent(
548 VkDevice device,
549 VkEvent event)
550{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800551 AEMU_SCOPED_TRACE("vkResetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800552 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800553 VkResult vkResetEvent_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800554 vkResetEvent_VkResult_return = vkEnc->vkResetEvent(device, event, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800555 return vkResetEvent_VkResult_return;
556}
557static VkResult entry_vkCreateQueryPool(
558 VkDevice device,
559 const VkQueryPoolCreateInfo* pCreateInfo,
560 const VkAllocationCallbacks* pAllocator,
561 VkQueryPool* pQueryPool)
562{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800563 AEMU_SCOPED_TRACE("vkCreateQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800564 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800565 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800566 vkCreateQueryPool_VkResult_return = vkEnc->vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800567 return vkCreateQueryPool_VkResult_return;
568}
569static void entry_vkDestroyQueryPool(
570 VkDevice device,
571 VkQueryPool queryPool,
572 const VkAllocationCallbacks* pAllocator)
573{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800574 AEMU_SCOPED_TRACE("vkDestroyQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800575 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800576 vkEnc->vkDestroyQueryPool(device, queryPool, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800577}
578static VkResult entry_vkGetQueryPoolResults(
579 VkDevice device,
580 VkQueryPool queryPool,
581 uint32_t firstQuery,
582 uint32_t queryCount,
583 size_t dataSize,
584 void* pData,
585 VkDeviceSize stride,
586 VkQueryResultFlags flags)
587{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800588 AEMU_SCOPED_TRACE("vkGetQueryPoolResults");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800589 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800590 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800591 vkGetQueryPoolResults_VkResult_return = vkEnc->vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800592 return vkGetQueryPoolResults_VkResult_return;
593}
594static VkResult entry_vkCreateBuffer(
595 VkDevice device,
596 const VkBufferCreateInfo* pCreateInfo,
597 const VkAllocationCallbacks* pAllocator,
598 VkBuffer* pBuffer)
599{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800600 AEMU_SCOPED_TRACE("vkCreateBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800601 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800602 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800603 auto resources = ResourceTracker::get();
604 vkCreateBuffer_VkResult_return = resources->on_vkCreateBuffer(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800605 return vkCreateBuffer_VkResult_return;
606}
607static void entry_vkDestroyBuffer(
608 VkDevice device,
609 VkBuffer buffer,
610 const VkAllocationCallbacks* pAllocator)
611{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800612 AEMU_SCOPED_TRACE("vkDestroyBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800613 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800614 auto resources = ResourceTracker::get();
615 resources->on_vkDestroyBuffer(vkEnc, device, buffer, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800616}
617static VkResult entry_vkCreateBufferView(
618 VkDevice device,
619 const VkBufferViewCreateInfo* pCreateInfo,
620 const VkAllocationCallbacks* pAllocator,
621 VkBufferView* pView)
622{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800623 AEMU_SCOPED_TRACE("vkCreateBufferView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800624 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800625 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800626 vkCreateBufferView_VkResult_return = vkEnc->vkCreateBufferView(device, pCreateInfo, pAllocator, pView, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800627 return vkCreateBufferView_VkResult_return;
628}
629static void entry_vkDestroyBufferView(
630 VkDevice device,
631 VkBufferView bufferView,
632 const VkAllocationCallbacks* pAllocator)
633{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800634 AEMU_SCOPED_TRACE("vkDestroyBufferView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800635 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800636 vkEnc->vkDestroyBufferView(device, bufferView, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800637}
638static VkResult entry_vkCreateImage(
639 VkDevice device,
640 const VkImageCreateInfo* pCreateInfo,
641 const VkAllocationCallbacks* pAllocator,
642 VkImage* pImage)
643{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800644 AEMU_SCOPED_TRACE("vkCreateImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800645 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800646 VkResult vkCreateImage_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800647 auto resources = ResourceTracker::get();
648 vkCreateImage_VkResult_return = resources->on_vkCreateImage(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pImage);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800649 return vkCreateImage_VkResult_return;
650}
651static void entry_vkDestroyImage(
652 VkDevice device,
653 VkImage image,
654 const VkAllocationCallbacks* pAllocator)
655{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800656 AEMU_SCOPED_TRACE("vkDestroyImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800657 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800658 auto resources = ResourceTracker::get();
659 resources->on_vkDestroyImage(vkEnc, device, image, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800660}
661static void entry_vkGetImageSubresourceLayout(
662 VkDevice device,
663 VkImage image,
664 const VkImageSubresource* pSubresource,
665 VkSubresourceLayout* pLayout)
666{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800667 AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800668 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800669 vkEnc->vkGetImageSubresourceLayout(device, image, pSubresource, pLayout, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800670}
671static VkResult entry_vkCreateImageView(
672 VkDevice device,
673 const VkImageViewCreateInfo* pCreateInfo,
674 const VkAllocationCallbacks* pAllocator,
675 VkImageView* pView)
676{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800677 AEMU_SCOPED_TRACE("vkCreateImageView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800678 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800679 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
Roman Kiryanov6db11e52019-04-26 14:18:14 -0700680 auto resources = ResourceTracker::get();
681 vkCreateImageView_VkResult_return = resources->on_vkCreateImageView(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pView);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800682 return vkCreateImageView_VkResult_return;
683}
684static void entry_vkDestroyImageView(
685 VkDevice device,
686 VkImageView imageView,
687 const VkAllocationCallbacks* pAllocator)
688{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800689 AEMU_SCOPED_TRACE("vkDestroyImageView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800690 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800691 vkEnc->vkDestroyImageView(device, imageView, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800692}
693static VkResult entry_vkCreateShaderModule(
694 VkDevice device,
695 const VkShaderModuleCreateInfo* pCreateInfo,
696 const VkAllocationCallbacks* pAllocator,
697 VkShaderModule* pShaderModule)
698{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800699 AEMU_SCOPED_TRACE("vkCreateShaderModule");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800700 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800701 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800702 vkCreateShaderModule_VkResult_return = vkEnc->vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800703 return vkCreateShaderModule_VkResult_return;
704}
705static void entry_vkDestroyShaderModule(
706 VkDevice device,
707 VkShaderModule shaderModule,
708 const VkAllocationCallbacks* pAllocator)
709{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800710 AEMU_SCOPED_TRACE("vkDestroyShaderModule");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800711 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800712 vkEnc->vkDestroyShaderModule(device, shaderModule, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800713}
714static VkResult entry_vkCreatePipelineCache(
715 VkDevice device,
716 const VkPipelineCacheCreateInfo* pCreateInfo,
717 const VkAllocationCallbacks* pAllocator,
718 VkPipelineCache* pPipelineCache)
719{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800720 AEMU_SCOPED_TRACE("vkCreatePipelineCache");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800721 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800722 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800723 vkCreatePipelineCache_VkResult_return = vkEnc->vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800724 return vkCreatePipelineCache_VkResult_return;
725}
726static void entry_vkDestroyPipelineCache(
727 VkDevice device,
728 VkPipelineCache pipelineCache,
729 const VkAllocationCallbacks* pAllocator)
730{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800731 AEMU_SCOPED_TRACE("vkDestroyPipelineCache");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800732 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800733 vkEnc->vkDestroyPipelineCache(device, pipelineCache, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800734}
735static VkResult entry_vkGetPipelineCacheData(
736 VkDevice device,
737 VkPipelineCache pipelineCache,
738 size_t* pDataSize,
739 void* pData)
740{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800741 AEMU_SCOPED_TRACE("vkGetPipelineCacheData");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800742 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800743 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800744 vkGetPipelineCacheData_VkResult_return = vkEnc->vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800745 return vkGetPipelineCacheData_VkResult_return;
746}
747static VkResult entry_vkMergePipelineCaches(
748 VkDevice device,
749 VkPipelineCache dstCache,
750 uint32_t srcCacheCount,
751 const VkPipelineCache* pSrcCaches)
752{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800753 AEMU_SCOPED_TRACE("vkMergePipelineCaches");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800754 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800755 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800756 vkMergePipelineCaches_VkResult_return = vkEnc->vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800757 return vkMergePipelineCaches_VkResult_return;
758}
759static VkResult entry_vkCreateGraphicsPipelines(
760 VkDevice device,
761 VkPipelineCache pipelineCache,
762 uint32_t createInfoCount,
763 const VkGraphicsPipelineCreateInfo* pCreateInfos,
764 const VkAllocationCallbacks* pAllocator,
765 VkPipeline* pPipelines)
766{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800767 AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800768 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800769 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800770 vkCreateGraphicsPipelines_VkResult_return = vkEnc->vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800771 return vkCreateGraphicsPipelines_VkResult_return;
772}
773static VkResult entry_vkCreateComputePipelines(
774 VkDevice device,
775 VkPipelineCache pipelineCache,
776 uint32_t createInfoCount,
777 const VkComputePipelineCreateInfo* pCreateInfos,
778 const VkAllocationCallbacks* pAllocator,
779 VkPipeline* pPipelines)
780{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800781 AEMU_SCOPED_TRACE("vkCreateComputePipelines");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800782 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800783 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800784 vkCreateComputePipelines_VkResult_return = vkEnc->vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800785 return vkCreateComputePipelines_VkResult_return;
786}
787static void entry_vkDestroyPipeline(
788 VkDevice device,
789 VkPipeline pipeline,
790 const VkAllocationCallbacks* pAllocator)
791{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800792 AEMU_SCOPED_TRACE("vkDestroyPipeline");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800793 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800794 vkEnc->vkDestroyPipeline(device, pipeline, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800795}
796static VkResult entry_vkCreatePipelineLayout(
797 VkDevice device,
798 const VkPipelineLayoutCreateInfo* pCreateInfo,
799 const VkAllocationCallbacks* pAllocator,
800 VkPipelineLayout* pPipelineLayout)
801{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800802 AEMU_SCOPED_TRACE("vkCreatePipelineLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800803 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800804 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800805 vkCreatePipelineLayout_VkResult_return = vkEnc->vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800806 return vkCreatePipelineLayout_VkResult_return;
807}
808static void entry_vkDestroyPipelineLayout(
809 VkDevice device,
810 VkPipelineLayout pipelineLayout,
811 const VkAllocationCallbacks* pAllocator)
812{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800813 AEMU_SCOPED_TRACE("vkDestroyPipelineLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800814 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800815 vkEnc->vkDestroyPipelineLayout(device, pipelineLayout, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800816}
817static VkResult entry_vkCreateSampler(
818 VkDevice device,
819 const VkSamplerCreateInfo* pCreateInfo,
820 const VkAllocationCallbacks* pAllocator,
821 VkSampler* pSampler)
822{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800823 AEMU_SCOPED_TRACE("vkCreateSampler");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800824 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800825 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
Roman Kiryanov004f48c2019-06-28 14:59:32 -0700826 auto resources = ResourceTracker::get();
827 vkCreateSampler_VkResult_return = resources->on_vkCreateSampler(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSampler);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800828 return vkCreateSampler_VkResult_return;
829}
830static void entry_vkDestroySampler(
831 VkDevice device,
832 VkSampler sampler,
833 const VkAllocationCallbacks* pAllocator)
834{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800835 AEMU_SCOPED_TRACE("vkDestroySampler");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800836 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800837 vkEnc->vkDestroySampler(device, sampler, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800838}
839static VkResult entry_vkCreateDescriptorSetLayout(
840 VkDevice device,
841 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
842 const VkAllocationCallbacks* pAllocator,
843 VkDescriptorSetLayout* pSetLayout)
844{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800845 AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800846 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800847 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
Lingfeng Yang03354c72020-03-26 13:00:51 -0700848 auto resources = ResourceTracker::get();
849 vkCreateDescriptorSetLayout_VkResult_return = resources->on_vkCreateDescriptorSetLayout(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSetLayout);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800850 return vkCreateDescriptorSetLayout_VkResult_return;
851}
852static void entry_vkDestroyDescriptorSetLayout(
853 VkDevice device,
854 VkDescriptorSetLayout descriptorSetLayout,
855 const VkAllocationCallbacks* pAllocator)
856{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800857 AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800858 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang55676e02021-02-08 08:39:45 -0800859 auto resources = ResourceTracker::get();
860 resources->on_vkDestroyDescriptorSetLayout(vkEnc, device, descriptorSetLayout, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800861}
862static VkResult entry_vkCreateDescriptorPool(
863 VkDevice device,
864 const VkDescriptorPoolCreateInfo* pCreateInfo,
865 const VkAllocationCallbacks* pAllocator,
866 VkDescriptorPool* pDescriptorPool)
867{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800868 AEMU_SCOPED_TRACE("vkCreateDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800869 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800870 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700871 auto resources = ResourceTracker::get();
872 vkCreateDescriptorPool_VkResult_return = resources->on_vkCreateDescriptorPool(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pDescriptorPool);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800873 return vkCreateDescriptorPool_VkResult_return;
874}
875static void entry_vkDestroyDescriptorPool(
876 VkDevice device,
877 VkDescriptorPool descriptorPool,
878 const VkAllocationCallbacks* pAllocator)
879{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800880 AEMU_SCOPED_TRACE("vkDestroyDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800881 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700882 auto resources = ResourceTracker::get();
883 resources->on_vkDestroyDescriptorPool(vkEnc, device, descriptorPool, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800884}
885static VkResult entry_vkResetDescriptorPool(
886 VkDevice device,
887 VkDescriptorPool descriptorPool,
888 VkDescriptorPoolResetFlags flags)
889{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800890 AEMU_SCOPED_TRACE("vkResetDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800891 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800892 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700893 auto resources = ResourceTracker::get();
894 vkResetDescriptorPool_VkResult_return = resources->on_vkResetDescriptorPool(vkEnc, VK_SUCCESS, device, descriptorPool, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800895 return vkResetDescriptorPool_VkResult_return;
896}
897static VkResult entry_vkAllocateDescriptorSets(
898 VkDevice device,
899 const VkDescriptorSetAllocateInfo* pAllocateInfo,
900 VkDescriptorSet* pDescriptorSets)
901{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800902 AEMU_SCOPED_TRACE("vkAllocateDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800903 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800904 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700905 auto resources = ResourceTracker::get();
906 vkAllocateDescriptorSets_VkResult_return = resources->on_vkAllocateDescriptorSets(vkEnc, VK_SUCCESS, device, pAllocateInfo, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800907 return vkAllocateDescriptorSets_VkResult_return;
908}
909static VkResult entry_vkFreeDescriptorSets(
910 VkDevice device,
911 VkDescriptorPool descriptorPool,
912 uint32_t descriptorSetCount,
913 const VkDescriptorSet* pDescriptorSets)
914{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800915 AEMU_SCOPED_TRACE("vkFreeDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800916 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800917 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700918 auto resources = ResourceTracker::get();
919 vkFreeDescriptorSets_VkResult_return = resources->on_vkFreeDescriptorSets(vkEnc, VK_SUCCESS, device, descriptorPool, descriptorSetCount, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800920 return vkFreeDescriptorSets_VkResult_return;
921}
922static void entry_vkUpdateDescriptorSets(
923 VkDevice device,
924 uint32_t descriptorWriteCount,
925 const VkWriteDescriptorSet* pDescriptorWrites,
926 uint32_t descriptorCopyCount,
927 const VkCopyDescriptorSet* pDescriptorCopies)
928{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800929 AEMU_SCOPED_TRACE("vkUpdateDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800930 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang03354c72020-03-26 13:00:51 -0700931 auto resources = ResourceTracker::get();
932 resources->on_vkUpdateDescriptorSets(vkEnc, device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800933}
934static VkResult entry_vkCreateFramebuffer(
935 VkDevice device,
936 const VkFramebufferCreateInfo* pCreateInfo,
937 const VkAllocationCallbacks* pAllocator,
938 VkFramebuffer* pFramebuffer)
939{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800940 AEMU_SCOPED_TRACE("vkCreateFramebuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800941 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800942 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800943 vkCreateFramebuffer_VkResult_return = vkEnc->vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800944 return vkCreateFramebuffer_VkResult_return;
945}
946static void entry_vkDestroyFramebuffer(
947 VkDevice device,
948 VkFramebuffer framebuffer,
949 const VkAllocationCallbacks* pAllocator)
950{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800951 AEMU_SCOPED_TRACE("vkDestroyFramebuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800952 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800953 vkEnc->vkDestroyFramebuffer(device, framebuffer, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800954}
955static VkResult entry_vkCreateRenderPass(
956 VkDevice device,
957 const VkRenderPassCreateInfo* pCreateInfo,
958 const VkAllocationCallbacks* pAllocator,
959 VkRenderPass* pRenderPass)
960{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800961 AEMU_SCOPED_TRACE("vkCreateRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800962 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800963 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800964 vkCreateRenderPass_VkResult_return = vkEnc->vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800965 return vkCreateRenderPass_VkResult_return;
966}
967static void entry_vkDestroyRenderPass(
968 VkDevice device,
969 VkRenderPass renderPass,
970 const VkAllocationCallbacks* pAllocator)
971{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800972 AEMU_SCOPED_TRACE("vkDestroyRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800973 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800974 vkEnc->vkDestroyRenderPass(device, renderPass, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800975}
976static void entry_vkGetRenderAreaGranularity(
977 VkDevice device,
978 VkRenderPass renderPass,
979 VkExtent2D* pGranularity)
980{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800981 AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800982 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800983 vkEnc->vkGetRenderAreaGranularity(device, renderPass, pGranularity, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800984}
985static VkResult entry_vkCreateCommandPool(
986 VkDevice device,
987 const VkCommandPoolCreateInfo* pCreateInfo,
988 const VkAllocationCallbacks* pAllocator,
989 VkCommandPool* pCommandPool)
990{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800991 AEMU_SCOPED_TRACE("vkCreateCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800992 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800993 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800994 vkCreateCommandPool_VkResult_return = vkEnc->vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800995 return vkCreateCommandPool_VkResult_return;
996}
997static void entry_vkDestroyCommandPool(
998 VkDevice device,
999 VkCommandPool commandPool,
1000 const VkAllocationCallbacks* pAllocator)
1001{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001002 AEMU_SCOPED_TRACE("vkDestroyCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001003 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001004 vkEnc->vkDestroyCommandPool(device, commandPool, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001005}
1006static VkResult entry_vkResetCommandPool(
1007 VkDevice device,
1008 VkCommandPool commandPool,
1009 VkCommandPoolResetFlags flags)
1010{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001011 AEMU_SCOPED_TRACE("vkResetCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001012 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001013 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001014 vkResetCommandPool_VkResult_return = vkEnc->vkResetCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang4f539502021-01-22 23:01:57 -08001015 if (vkResetCommandPool_VkResult_return == VK_SUCCESS) {
1016 ResourceTracker::get()->resetCommandPoolStagingInfo(commandPool);
1017 }
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001018 return vkResetCommandPool_VkResult_return;
1019}
1020static VkResult entry_vkAllocateCommandBuffers(
1021 VkDevice device,
1022 const VkCommandBufferAllocateInfo* pAllocateInfo,
1023 VkCommandBuffer* pCommandBuffers)
1024{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001025 AEMU_SCOPED_TRACE("vkAllocateCommandBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001026 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001027 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001028 vkAllocateCommandBuffers_VkResult_return = vkEnc->vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers, true /* do lock */);
Lingfeng Yang4f539502021-01-22 23:01:57 -08001029 if (vkAllocateCommandBuffers_VkResult_return == VK_SUCCESS) {
1030 ResourceTracker::get()->addToCommandPool(pAllocateInfo->commandPool, pAllocateInfo->commandBufferCount, pCommandBuffers);
1031 }
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001032 return vkAllocateCommandBuffers_VkResult_return;
1033}
1034static void entry_vkFreeCommandBuffers(
1035 VkDevice device,
1036 VkCommandPool commandPool,
1037 uint32_t commandBufferCount,
1038 const VkCommandBuffer* pCommandBuffers)
1039{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001040 AEMU_SCOPED_TRACE("vkFreeCommandBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001041 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001042 vkEnc->vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001043}
1044static VkResult entry_vkBeginCommandBuffer(
1045 VkCommandBuffer commandBuffer,
1046 const VkCommandBufferBeginInfo* pBeginInfo)
1047{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001048 AEMU_SCOPED_TRACE("vkBeginCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001049 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001050 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001051 auto resources = ResourceTracker::get();
1052 vkBeginCommandBuffer_VkResult_return = resources->on_vkBeginCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, pBeginInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001053 return vkBeginCommandBuffer_VkResult_return;
1054}
1055static VkResult entry_vkEndCommandBuffer(
1056 VkCommandBuffer commandBuffer)
1057{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001058 AEMU_SCOPED_TRACE("vkEndCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001059 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001060 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001061 auto resources = ResourceTracker::get();
1062 vkEndCommandBuffer_VkResult_return = resources->on_vkEndCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001063 return vkEndCommandBuffer_VkResult_return;
1064}
1065static VkResult entry_vkResetCommandBuffer(
1066 VkCommandBuffer commandBuffer,
1067 VkCommandBufferResetFlags flags)
1068{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001069 AEMU_SCOPED_TRACE("vkResetCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001070 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001071 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001072 auto resources = ResourceTracker::get();
1073 vkResetCommandBuffer_VkResult_return = resources->on_vkResetCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001074 return vkResetCommandBuffer_VkResult_return;
1075}
1076static void entry_vkCmdBindPipeline(
1077 VkCommandBuffer commandBuffer,
1078 VkPipelineBindPoint pipelineBindPoint,
1079 VkPipeline pipeline)
1080{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001081 AEMU_SCOPED_TRACE("vkCmdBindPipeline");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001082 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001083 vkEnc->vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001084}
1085static void entry_vkCmdSetViewport(
1086 VkCommandBuffer commandBuffer,
1087 uint32_t firstViewport,
1088 uint32_t viewportCount,
1089 const VkViewport* pViewports)
1090{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001091 AEMU_SCOPED_TRACE("vkCmdSetViewport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001092 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001093 vkEnc->vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001094}
1095static void entry_vkCmdSetScissor(
1096 VkCommandBuffer commandBuffer,
1097 uint32_t firstScissor,
1098 uint32_t scissorCount,
1099 const VkRect2D* pScissors)
1100{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001101 AEMU_SCOPED_TRACE("vkCmdSetScissor");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001102 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001103 vkEnc->vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001104}
1105static void entry_vkCmdSetLineWidth(
1106 VkCommandBuffer commandBuffer,
1107 float lineWidth)
1108{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001109 AEMU_SCOPED_TRACE("vkCmdSetLineWidth");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001110 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001111 vkEnc->vkCmdSetLineWidth(commandBuffer, lineWidth, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001112}
1113static void entry_vkCmdSetDepthBias(
1114 VkCommandBuffer commandBuffer,
1115 float depthBiasConstantFactor,
1116 float depthBiasClamp,
1117 float depthBiasSlopeFactor)
1118{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001119 AEMU_SCOPED_TRACE("vkCmdSetDepthBias");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001120 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001121 vkEnc->vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001122}
1123static void entry_vkCmdSetBlendConstants(
1124 VkCommandBuffer commandBuffer,
Lingfeng Yang97ddeb82019-04-20 14:32:52 -07001125 const float blendConstants[4])
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001126{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001127 AEMU_SCOPED_TRACE("vkCmdSetBlendConstants");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001128 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001129 vkEnc->vkCmdSetBlendConstants(commandBuffer, blendConstants, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001130}
1131static void entry_vkCmdSetDepthBounds(
1132 VkCommandBuffer commandBuffer,
1133 float minDepthBounds,
1134 float maxDepthBounds)
1135{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001136 AEMU_SCOPED_TRACE("vkCmdSetDepthBounds");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001137 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001138 vkEnc->vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001139}
1140static void entry_vkCmdSetStencilCompareMask(
1141 VkCommandBuffer commandBuffer,
1142 VkStencilFaceFlags faceMask,
1143 uint32_t compareMask)
1144{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001145 AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001146 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001147 vkEnc->vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001148}
1149static void entry_vkCmdSetStencilWriteMask(
1150 VkCommandBuffer commandBuffer,
1151 VkStencilFaceFlags faceMask,
1152 uint32_t writeMask)
1153{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001154 AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001155 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001156 vkEnc->vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001157}
1158static void entry_vkCmdSetStencilReference(
1159 VkCommandBuffer commandBuffer,
1160 VkStencilFaceFlags faceMask,
1161 uint32_t reference)
1162{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001163 AEMU_SCOPED_TRACE("vkCmdSetStencilReference");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001164 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001165 vkEnc->vkCmdSetStencilReference(commandBuffer, faceMask, reference, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001166}
1167static void entry_vkCmdBindDescriptorSets(
1168 VkCommandBuffer commandBuffer,
1169 VkPipelineBindPoint pipelineBindPoint,
1170 VkPipelineLayout layout,
1171 uint32_t firstSet,
1172 uint32_t descriptorSetCount,
1173 const VkDescriptorSet* pDescriptorSets,
1174 uint32_t dynamicOffsetCount,
1175 const uint32_t* pDynamicOffsets)
1176{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001177 AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001178 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang55676e02021-02-08 08:39:45 -08001179 auto resources = ResourceTracker::get();
1180 resources->on_vkCmdBindDescriptorSets(vkEnc, commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001181}
1182static void entry_vkCmdBindIndexBuffer(
1183 VkCommandBuffer commandBuffer,
1184 VkBuffer buffer,
1185 VkDeviceSize offset,
1186 VkIndexType indexType)
1187{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001188 AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001189 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001190 vkEnc->vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001191}
1192static void entry_vkCmdBindVertexBuffers(
1193 VkCommandBuffer commandBuffer,
1194 uint32_t firstBinding,
1195 uint32_t bindingCount,
1196 const VkBuffer* pBuffers,
1197 const VkDeviceSize* pOffsets)
1198{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001199 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001200 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001201 vkEnc->vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001202}
1203static void entry_vkCmdDraw(
1204 VkCommandBuffer commandBuffer,
1205 uint32_t vertexCount,
1206 uint32_t instanceCount,
1207 uint32_t firstVertex,
1208 uint32_t firstInstance)
1209{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001210 AEMU_SCOPED_TRACE("vkCmdDraw");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001211 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001212 vkEnc->vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001213}
1214static void entry_vkCmdDrawIndexed(
1215 VkCommandBuffer commandBuffer,
1216 uint32_t indexCount,
1217 uint32_t instanceCount,
1218 uint32_t firstIndex,
1219 int32_t vertexOffset,
1220 uint32_t firstInstance)
1221{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001222 AEMU_SCOPED_TRACE("vkCmdDrawIndexed");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001223 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001224 vkEnc->vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001225}
1226static void entry_vkCmdDrawIndirect(
1227 VkCommandBuffer commandBuffer,
1228 VkBuffer buffer,
1229 VkDeviceSize offset,
1230 uint32_t drawCount,
1231 uint32_t stride)
1232{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001233 AEMU_SCOPED_TRACE("vkCmdDrawIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001234 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001235 vkEnc->vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001236}
1237static void entry_vkCmdDrawIndexedIndirect(
1238 VkCommandBuffer commandBuffer,
1239 VkBuffer buffer,
1240 VkDeviceSize offset,
1241 uint32_t drawCount,
1242 uint32_t stride)
1243{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001244 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001245 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001246 vkEnc->vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001247}
1248static void entry_vkCmdDispatch(
1249 VkCommandBuffer commandBuffer,
1250 uint32_t groupCountX,
1251 uint32_t groupCountY,
1252 uint32_t groupCountZ)
1253{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001254 AEMU_SCOPED_TRACE("vkCmdDispatch");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001255 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001256 vkEnc->vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001257}
1258static void entry_vkCmdDispatchIndirect(
1259 VkCommandBuffer commandBuffer,
1260 VkBuffer buffer,
1261 VkDeviceSize offset)
1262{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001263 AEMU_SCOPED_TRACE("vkCmdDispatchIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001264 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001265 vkEnc->vkCmdDispatchIndirect(commandBuffer, buffer, offset, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001266}
1267static void entry_vkCmdCopyBuffer(
1268 VkCommandBuffer commandBuffer,
1269 VkBuffer srcBuffer,
1270 VkBuffer dstBuffer,
1271 uint32_t regionCount,
1272 const VkBufferCopy* pRegions)
1273{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001274 AEMU_SCOPED_TRACE("vkCmdCopyBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001275 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001276 vkEnc->vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001277}
1278static void entry_vkCmdCopyImage(
1279 VkCommandBuffer commandBuffer,
1280 VkImage srcImage,
1281 VkImageLayout srcImageLayout,
1282 VkImage dstImage,
1283 VkImageLayout dstImageLayout,
1284 uint32_t regionCount,
1285 const VkImageCopy* pRegions)
1286{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001287 AEMU_SCOPED_TRACE("vkCmdCopyImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001288 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001289 vkEnc->vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001290}
1291static void entry_vkCmdBlitImage(
1292 VkCommandBuffer commandBuffer,
1293 VkImage srcImage,
1294 VkImageLayout srcImageLayout,
1295 VkImage dstImage,
1296 VkImageLayout dstImageLayout,
1297 uint32_t regionCount,
1298 const VkImageBlit* pRegions,
1299 VkFilter filter)
1300{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001301 AEMU_SCOPED_TRACE("vkCmdBlitImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001302 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001303 vkEnc->vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001304}
1305static void entry_vkCmdCopyBufferToImage(
1306 VkCommandBuffer commandBuffer,
1307 VkBuffer srcBuffer,
1308 VkImage dstImage,
1309 VkImageLayout dstImageLayout,
1310 uint32_t regionCount,
1311 const VkBufferImageCopy* pRegions)
1312{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001313 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001314 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001315 vkEnc->vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001316}
1317static void entry_vkCmdCopyImageToBuffer(
1318 VkCommandBuffer commandBuffer,
1319 VkImage srcImage,
1320 VkImageLayout srcImageLayout,
1321 VkBuffer dstBuffer,
1322 uint32_t regionCount,
1323 const VkBufferImageCopy* pRegions)
1324{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001325 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001326 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001327 vkEnc->vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001328}
1329static void entry_vkCmdUpdateBuffer(
1330 VkCommandBuffer commandBuffer,
1331 VkBuffer dstBuffer,
1332 VkDeviceSize dstOffset,
1333 VkDeviceSize dataSize,
1334 const void* pData)
1335{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001336 AEMU_SCOPED_TRACE("vkCmdUpdateBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001337 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001338 vkEnc->vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001339}
1340static void entry_vkCmdFillBuffer(
1341 VkCommandBuffer commandBuffer,
1342 VkBuffer dstBuffer,
1343 VkDeviceSize dstOffset,
1344 VkDeviceSize size,
1345 uint32_t data)
1346{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001347 AEMU_SCOPED_TRACE("vkCmdFillBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001348 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001349 vkEnc->vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001350}
1351static void entry_vkCmdClearColorImage(
1352 VkCommandBuffer commandBuffer,
1353 VkImage image,
1354 VkImageLayout imageLayout,
1355 const VkClearColorValue* pColor,
1356 uint32_t rangeCount,
1357 const VkImageSubresourceRange* pRanges)
1358{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001359 AEMU_SCOPED_TRACE("vkCmdClearColorImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001360 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001361 vkEnc->vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001362}
1363static void entry_vkCmdClearDepthStencilImage(
1364 VkCommandBuffer commandBuffer,
1365 VkImage image,
1366 VkImageLayout imageLayout,
1367 const VkClearDepthStencilValue* pDepthStencil,
1368 uint32_t rangeCount,
1369 const VkImageSubresourceRange* pRanges)
1370{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001371 AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001372 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001373 vkEnc->vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001374}
1375static void entry_vkCmdClearAttachments(
1376 VkCommandBuffer commandBuffer,
1377 uint32_t attachmentCount,
1378 const VkClearAttachment* pAttachments,
1379 uint32_t rectCount,
1380 const VkClearRect* pRects)
1381{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001382 AEMU_SCOPED_TRACE("vkCmdClearAttachments");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001383 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001384 vkEnc->vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001385}
1386static void entry_vkCmdResolveImage(
1387 VkCommandBuffer commandBuffer,
1388 VkImage srcImage,
1389 VkImageLayout srcImageLayout,
1390 VkImage dstImage,
1391 VkImageLayout dstImageLayout,
1392 uint32_t regionCount,
1393 const VkImageResolve* pRegions)
1394{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001395 AEMU_SCOPED_TRACE("vkCmdResolveImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001396 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001397 vkEnc->vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001398}
1399static void entry_vkCmdSetEvent(
1400 VkCommandBuffer commandBuffer,
1401 VkEvent event,
1402 VkPipelineStageFlags stageMask)
1403{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001404 AEMU_SCOPED_TRACE("vkCmdSetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001405 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001406 vkEnc->vkCmdSetEvent(commandBuffer, event, stageMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001407}
1408static void entry_vkCmdResetEvent(
1409 VkCommandBuffer commandBuffer,
1410 VkEvent event,
1411 VkPipelineStageFlags stageMask)
1412{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001413 AEMU_SCOPED_TRACE("vkCmdResetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001414 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001415 vkEnc->vkCmdResetEvent(commandBuffer, event, stageMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001416}
1417static void entry_vkCmdWaitEvents(
1418 VkCommandBuffer commandBuffer,
1419 uint32_t eventCount,
1420 const VkEvent* pEvents,
1421 VkPipelineStageFlags srcStageMask,
1422 VkPipelineStageFlags dstStageMask,
1423 uint32_t memoryBarrierCount,
1424 const VkMemoryBarrier* pMemoryBarriers,
1425 uint32_t bufferMemoryBarrierCount,
1426 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1427 uint32_t imageMemoryBarrierCount,
1428 const VkImageMemoryBarrier* pImageMemoryBarriers)
1429{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001430 AEMU_SCOPED_TRACE("vkCmdWaitEvents");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001431 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001432 vkEnc->vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001433}
1434static void entry_vkCmdPipelineBarrier(
1435 VkCommandBuffer commandBuffer,
1436 VkPipelineStageFlags srcStageMask,
1437 VkPipelineStageFlags dstStageMask,
1438 VkDependencyFlags dependencyFlags,
1439 uint32_t memoryBarrierCount,
1440 const VkMemoryBarrier* pMemoryBarriers,
1441 uint32_t bufferMemoryBarrierCount,
1442 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1443 uint32_t imageMemoryBarrierCount,
1444 const VkImageMemoryBarrier* pImageMemoryBarriers)
1445{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001446 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001447 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001448 vkEnc->vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001449}
1450static void entry_vkCmdBeginQuery(
1451 VkCommandBuffer commandBuffer,
1452 VkQueryPool queryPool,
1453 uint32_t query,
1454 VkQueryControlFlags flags)
1455{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001456 AEMU_SCOPED_TRACE("vkCmdBeginQuery");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001457 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001458 vkEnc->vkCmdBeginQuery(commandBuffer, queryPool, query, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001459}
1460static void entry_vkCmdEndQuery(
1461 VkCommandBuffer commandBuffer,
1462 VkQueryPool queryPool,
1463 uint32_t query)
1464{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001465 AEMU_SCOPED_TRACE("vkCmdEndQuery");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001466 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001467 vkEnc->vkCmdEndQuery(commandBuffer, queryPool, query, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001468}
1469static void entry_vkCmdResetQueryPool(
1470 VkCommandBuffer commandBuffer,
1471 VkQueryPool queryPool,
1472 uint32_t firstQuery,
1473 uint32_t queryCount)
1474{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001475 AEMU_SCOPED_TRACE("vkCmdResetQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001476 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001477 vkEnc->vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001478}
1479static void entry_vkCmdWriteTimestamp(
1480 VkCommandBuffer commandBuffer,
1481 VkPipelineStageFlagBits pipelineStage,
1482 VkQueryPool queryPool,
1483 uint32_t query)
1484{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001485 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001486 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001487 vkEnc->vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001488}
1489static void entry_vkCmdCopyQueryPoolResults(
1490 VkCommandBuffer commandBuffer,
1491 VkQueryPool queryPool,
1492 uint32_t firstQuery,
1493 uint32_t queryCount,
1494 VkBuffer dstBuffer,
1495 VkDeviceSize dstOffset,
1496 VkDeviceSize stride,
1497 VkQueryResultFlags flags)
1498{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001499 AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001500 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001501 vkEnc->vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001502}
1503static void entry_vkCmdPushConstants(
1504 VkCommandBuffer commandBuffer,
1505 VkPipelineLayout layout,
1506 VkShaderStageFlags stageFlags,
1507 uint32_t offset,
1508 uint32_t size,
1509 const void* pValues)
1510{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001511 AEMU_SCOPED_TRACE("vkCmdPushConstants");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001512 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001513 vkEnc->vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001514}
1515static void entry_vkCmdBeginRenderPass(
1516 VkCommandBuffer commandBuffer,
1517 const VkRenderPassBeginInfo* pRenderPassBegin,
1518 VkSubpassContents contents)
1519{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001520 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001521 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001522 vkEnc->vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001523}
1524static void entry_vkCmdNextSubpass(
1525 VkCommandBuffer commandBuffer,
1526 VkSubpassContents contents)
1527{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001528 AEMU_SCOPED_TRACE("vkCmdNextSubpass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001529 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001530 vkEnc->vkCmdNextSubpass(commandBuffer, contents, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001531}
1532static void entry_vkCmdEndRenderPass(
1533 VkCommandBuffer commandBuffer)
1534{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001535 AEMU_SCOPED_TRACE("vkCmdEndRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001536 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001537 vkEnc->vkCmdEndRenderPass(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001538}
1539static void entry_vkCmdExecuteCommands(
1540 VkCommandBuffer commandBuffer,
1541 uint32_t commandBufferCount,
1542 const VkCommandBuffer* pCommandBuffers)
1543{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001544 AEMU_SCOPED_TRACE("vkCmdExecuteCommands");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001545 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1546 auto resources = ResourceTracker::get();
1547 resources->on_vkCmdExecuteCommands(vkEnc, commandBuffer, commandBufferCount, pCommandBuffers);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001548}
1549#endif
1550#ifdef VK_VERSION_1_1
1551static VkResult entry_vkEnumerateInstanceVersion(
1552 uint32_t* pApiVersion)
1553{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001554 AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001555 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001556 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001557 vkEnumerateInstanceVersion_VkResult_return = vkEnc->vkEnumerateInstanceVersion(pApiVersion, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001558 return vkEnumerateInstanceVersion_VkResult_return;
1559}
1560static VkResult entry_vkBindBufferMemory2(
1561 VkDevice device,
1562 uint32_t bindInfoCount,
1563 const VkBindBufferMemoryInfo* pBindInfos)
1564{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001565 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001566 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001567 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001568 auto resources = ResourceTracker::get();
1569 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001570 return vkBindBufferMemory2_VkResult_return;
1571}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001572static VkResult dynCheck_entry_vkBindBufferMemory2(
1573 VkDevice device,
1574 uint32_t bindInfoCount,
1575 const VkBindBufferMemoryInfo* pBindInfos)
1576{
1577 auto resources = ResourceTracker::get();
1578 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1579 {
1580 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2", "VK_VERSION_1_1");
1581 }
1582 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001583 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001584 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
1585 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1586 return vkBindBufferMemory2_VkResult_return;
1587}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001588static VkResult entry_vkBindImageMemory2(
1589 VkDevice device,
1590 uint32_t bindInfoCount,
1591 const VkBindImageMemoryInfo* pBindInfos)
1592{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001593 AEMU_SCOPED_TRACE("vkBindImageMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001594 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001595 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001596 auto resources = ResourceTracker::get();
1597 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001598 return vkBindImageMemory2_VkResult_return;
1599}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001600static VkResult dynCheck_entry_vkBindImageMemory2(
1601 VkDevice device,
1602 uint32_t bindInfoCount,
1603 const VkBindImageMemoryInfo* pBindInfos)
1604{
1605 auto resources = ResourceTracker::get();
1606 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1607 {
1608 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2", "VK_VERSION_1_1");
1609 }
1610 AEMU_SCOPED_TRACE("vkBindImageMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001611 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001612 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
1613 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1614 return vkBindImageMemory2_VkResult_return;
1615}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001616static void entry_vkGetDeviceGroupPeerMemoryFeatures(
1617 VkDevice device,
1618 uint32_t heapIndex,
1619 uint32_t localDeviceIndex,
1620 uint32_t remoteDeviceIndex,
1621 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1622{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001623 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001624 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001625 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001626}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001627static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures(
1628 VkDevice device,
1629 uint32_t heapIndex,
1630 uint32_t localDeviceIndex,
1631 uint32_t remoteDeviceIndex,
1632 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1633{
1634 auto resources = ResourceTracker::get();
1635 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1636 {
1637 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeatures", "VK_VERSION_1_1");
1638 }
1639 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001640 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001641 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001642}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001643static void entry_vkCmdSetDeviceMask(
1644 VkCommandBuffer commandBuffer,
1645 uint32_t deviceMask)
1646{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001647 AEMU_SCOPED_TRACE("vkCmdSetDeviceMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001648 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001649 vkEnc->vkCmdSetDeviceMask(commandBuffer, deviceMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001650}
1651static void entry_vkCmdDispatchBase(
1652 VkCommandBuffer commandBuffer,
1653 uint32_t baseGroupX,
1654 uint32_t baseGroupY,
1655 uint32_t baseGroupZ,
1656 uint32_t groupCountX,
1657 uint32_t groupCountY,
1658 uint32_t groupCountZ)
1659{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001660 AEMU_SCOPED_TRACE("vkCmdDispatchBase");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001661 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001662 vkEnc->vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001663}
1664static VkResult entry_vkEnumeratePhysicalDeviceGroups(
1665 VkInstance instance,
1666 uint32_t* pPhysicalDeviceGroupCount,
1667 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
1668{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001669 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001670 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001671 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001672 vkEnumeratePhysicalDeviceGroups_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001673 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
1674}
1675static void entry_vkGetImageMemoryRequirements2(
1676 VkDevice device,
1677 const VkImageMemoryRequirementsInfo2* pInfo,
1678 VkMemoryRequirements2* pMemoryRequirements)
1679{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001680 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001681 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001682 auto resources = ResourceTracker::get();
1683 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001684}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001685static void dynCheck_entry_vkGetImageMemoryRequirements2(
1686 VkDevice device,
1687 const VkImageMemoryRequirementsInfo2* pInfo,
1688 VkMemoryRequirements2* pMemoryRequirements)
1689{
1690 auto resources = ResourceTracker::get();
1691 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1692 {
1693 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2", "VK_VERSION_1_1");
1694 }
1695 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001696 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001697 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1698}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001699static void entry_vkGetBufferMemoryRequirements2(
1700 VkDevice device,
1701 const VkBufferMemoryRequirementsInfo2* pInfo,
1702 VkMemoryRequirements2* pMemoryRequirements)
1703{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001704 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001705 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001706 auto resources = ResourceTracker::get();
1707 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001708}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001709static void dynCheck_entry_vkGetBufferMemoryRequirements2(
1710 VkDevice device,
1711 const VkBufferMemoryRequirementsInfo2* pInfo,
1712 VkMemoryRequirements2* pMemoryRequirements)
1713{
1714 auto resources = ResourceTracker::get();
1715 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1716 {
1717 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2", "VK_VERSION_1_1");
1718 }
1719 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001720 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001721 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1722}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001723static void entry_vkGetImageSparseMemoryRequirements2(
1724 VkDevice device,
1725 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1726 uint32_t* pSparseMemoryRequirementCount,
1727 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1728{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001729 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001730 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001731 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001732}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001733static void dynCheck_entry_vkGetImageSparseMemoryRequirements2(
1734 VkDevice device,
1735 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1736 uint32_t* pSparseMemoryRequirementCount,
1737 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1738{
1739 auto resources = ResourceTracker::get();
1740 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1741 {
1742 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2", "VK_VERSION_1_1");
1743 }
1744 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001745 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001746 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001747}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001748static void entry_vkGetPhysicalDeviceFeatures2(
1749 VkPhysicalDevice physicalDevice,
1750 VkPhysicalDeviceFeatures2* pFeatures)
1751{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001752 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001753 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001754 vkEnc->vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001755}
1756static void entry_vkGetPhysicalDeviceProperties2(
1757 VkPhysicalDevice physicalDevice,
1758 VkPhysicalDeviceProperties2* pProperties)
1759{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001760 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001761 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001762 vkEnc->vkGetPhysicalDeviceProperties2(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001763}
1764static void entry_vkGetPhysicalDeviceFormatProperties2(
1765 VkPhysicalDevice physicalDevice,
1766 VkFormat format,
1767 VkFormatProperties2* pFormatProperties)
1768{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001769 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001770 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001771 vkEnc->vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001772}
1773static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2(
1774 VkPhysicalDevice physicalDevice,
1775 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
1776 VkImageFormatProperties2* pImageFormatProperties)
1777{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001778 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001779 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001780 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07001781 auto resources = ResourceTracker::get();
1782 vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001783 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
1784}
1785static void entry_vkGetPhysicalDeviceQueueFamilyProperties2(
1786 VkPhysicalDevice physicalDevice,
1787 uint32_t* pQueueFamilyPropertyCount,
1788 VkQueueFamilyProperties2* pQueueFamilyProperties)
1789{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001790 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001791 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001792 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001793}
1794static void entry_vkGetPhysicalDeviceMemoryProperties2(
1795 VkPhysicalDevice physicalDevice,
1796 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
1797{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001798 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001799 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001800 vkEnc->vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001801}
1802static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2(
1803 VkPhysicalDevice physicalDevice,
1804 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
1805 uint32_t* pPropertyCount,
1806 VkSparseImageFormatProperties2* pProperties)
1807{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001808 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001809 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001810 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001811}
1812static void entry_vkTrimCommandPool(
1813 VkDevice device,
1814 VkCommandPool commandPool,
1815 VkCommandPoolTrimFlags flags)
1816{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001817 AEMU_SCOPED_TRACE("vkTrimCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001818 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001819 vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001820}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001821static void dynCheck_entry_vkTrimCommandPool(
1822 VkDevice device,
1823 VkCommandPool commandPool,
1824 VkCommandPoolTrimFlags flags)
1825{
1826 auto resources = ResourceTracker::get();
1827 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1828 {
1829 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPool", "VK_VERSION_1_1");
1830 }
1831 AEMU_SCOPED_TRACE("vkTrimCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001832 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001833 vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001834}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001835static void entry_vkGetDeviceQueue2(
1836 VkDevice device,
1837 const VkDeviceQueueInfo2* pQueueInfo,
1838 VkQueue* pQueue)
1839{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001840 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001841 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001842 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001843}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001844static void dynCheck_entry_vkGetDeviceQueue2(
1845 VkDevice device,
1846 const VkDeviceQueueInfo2* pQueueInfo,
1847 VkQueue* pQueue)
1848{
1849 auto resources = ResourceTracker::get();
1850 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1851 {
1852 sOnInvalidDynamicallyCheckedCall("vkGetDeviceQueue2", "VK_VERSION_1_1");
1853 }
1854 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001855 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001856 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001857}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001858static VkResult entry_vkCreateSamplerYcbcrConversion(
1859 VkDevice device,
1860 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1861 const VkAllocationCallbacks* pAllocator,
1862 VkSamplerYcbcrConversion* pYcbcrConversion)
1863{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001864 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001865 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001866 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08001867 auto resources = ResourceTracker::get();
1868 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001869 return vkCreateSamplerYcbcrConversion_VkResult_return;
1870}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001871static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversion(
1872 VkDevice device,
1873 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1874 const VkAllocationCallbacks* pAllocator,
1875 VkSamplerYcbcrConversion* pYcbcrConversion)
1876{
1877 auto resources = ResourceTracker::get();
1878 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1879 {
1880 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversion", "VK_VERSION_1_1");
1881 }
1882 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001883 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001884 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
1885 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
1886 return vkCreateSamplerYcbcrConversion_VkResult_return;
1887}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001888static void entry_vkDestroySamplerYcbcrConversion(
1889 VkDevice device,
1890 VkSamplerYcbcrConversion ycbcrConversion,
1891 const VkAllocationCallbacks* pAllocator)
1892{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001893 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001894 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07001895 auto resources = ResourceTracker::get();
1896 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001897}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001898static void dynCheck_entry_vkDestroySamplerYcbcrConversion(
1899 VkDevice device,
1900 VkSamplerYcbcrConversion ycbcrConversion,
1901 const VkAllocationCallbacks* pAllocator)
1902{
1903 auto resources = ResourceTracker::get();
1904 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1905 {
1906 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversion", "VK_VERSION_1_1");
1907 }
1908 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001909 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001910 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
1911}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001912static VkResult entry_vkCreateDescriptorUpdateTemplate(
1913 VkDevice device,
1914 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1915 const VkAllocationCallbacks* pAllocator,
1916 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1917{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001918 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001919 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001920 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001921 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001922 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1923}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001924static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplate(
1925 VkDevice device,
1926 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1927 const VkAllocationCallbacks* pAllocator,
1928 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1929{
1930 auto resources = ResourceTracker::get();
1931 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1932 {
1933 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplate", "VK_VERSION_1_1");
1934 }
1935 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001936 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001937 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001938 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001939 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1940}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001941static void entry_vkDestroyDescriptorUpdateTemplate(
1942 VkDevice device,
1943 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1944 const VkAllocationCallbacks* pAllocator)
1945{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001946 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001947 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001948 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001949}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001950static void dynCheck_entry_vkDestroyDescriptorUpdateTemplate(
1951 VkDevice device,
1952 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1953 const VkAllocationCallbacks* pAllocator)
1954{
1955 auto resources = ResourceTracker::get();
1956 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1957 {
1958 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplate", "VK_VERSION_1_1");
1959 }
1960 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001961 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001962 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001963}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001964static void entry_vkUpdateDescriptorSetWithTemplate(
1965 VkDevice device,
1966 VkDescriptorSet descriptorSet,
1967 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1968 const void* pData)
1969{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001970 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001971 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07001972 auto resources = ResourceTracker::get();
1973 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001974}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001975static void dynCheck_entry_vkUpdateDescriptorSetWithTemplate(
1976 VkDevice device,
1977 VkDescriptorSet descriptorSet,
1978 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1979 const void* pData)
1980{
1981 auto resources = ResourceTracker::get();
1982 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1983 {
1984 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplate", "VK_VERSION_1_1");
1985 }
1986 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001987 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001988 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
1989}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001990static void entry_vkGetPhysicalDeviceExternalBufferProperties(
1991 VkPhysicalDevice physicalDevice,
1992 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
1993 VkExternalBufferProperties* pExternalBufferProperties)
1994{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001995 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001996 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001997 vkEnc->vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001998}
1999static void entry_vkGetPhysicalDeviceExternalFenceProperties(
2000 VkPhysicalDevice physicalDevice,
2001 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
2002 VkExternalFenceProperties* pExternalFenceProperties)
2003{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002004 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002005 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07002006 auto resources = ResourceTracker::get();
2007 resources->on_vkGetPhysicalDeviceExternalFenceProperties(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002008}
2009static void entry_vkGetPhysicalDeviceExternalSemaphoreProperties(
2010 VkPhysicalDevice physicalDevice,
2011 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2012 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
2013{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002014 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002015 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002016 vkEnc->vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002017}
2018static void entry_vkGetDescriptorSetLayoutSupport(
2019 VkDevice device,
2020 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2021 VkDescriptorSetLayoutSupport* pSupport)
2022{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002023 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002024 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002025 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002026}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002027static void dynCheck_entry_vkGetDescriptorSetLayoutSupport(
2028 VkDevice device,
2029 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2030 VkDescriptorSetLayoutSupport* pSupport)
2031{
2032 auto resources = ResourceTracker::get();
2033 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2034 {
2035 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupport", "VK_VERSION_1_1");
2036 }
2037 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002038 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002039 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002040}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002041#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08002042#ifdef VK_VERSION_1_2
2043static void entry_vkCmdDrawIndirectCount(
2044 VkCommandBuffer commandBuffer,
2045 VkBuffer buffer,
2046 VkDeviceSize offset,
2047 VkBuffer countBuffer,
2048 VkDeviceSize countBufferOffset,
2049 uint32_t maxDrawCount,
2050 uint32_t stride)
2051{
2052 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCount");
2053 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2054 vkEnc->vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
2055}
2056static void entry_vkCmdDrawIndexedIndirectCount(
2057 VkCommandBuffer commandBuffer,
2058 VkBuffer buffer,
2059 VkDeviceSize offset,
2060 VkBuffer countBuffer,
2061 VkDeviceSize countBufferOffset,
2062 uint32_t maxDrawCount,
2063 uint32_t stride)
2064{
2065 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCount");
2066 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2067 vkEnc->vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
2068}
2069static VkResult entry_vkCreateRenderPass2(
2070 VkDevice device,
2071 const VkRenderPassCreateInfo2* pCreateInfo,
2072 const VkAllocationCallbacks* pAllocator,
2073 VkRenderPass* pRenderPass)
2074{
2075 AEMU_SCOPED_TRACE("vkCreateRenderPass2");
2076 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2077 VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
2078 vkCreateRenderPass2_VkResult_return = vkEnc->vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
2079 return vkCreateRenderPass2_VkResult_return;
2080}
2081static VkResult dynCheck_entry_vkCreateRenderPass2(
2082 VkDevice device,
2083 const VkRenderPassCreateInfo2* pCreateInfo,
2084 const VkAllocationCallbacks* pAllocator,
2085 VkRenderPass* pRenderPass)
2086{
2087 auto resources = ResourceTracker::get();
2088 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2089 {
2090 sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2", "VK_VERSION_1_2");
2091 }
2092 AEMU_SCOPED_TRACE("vkCreateRenderPass2");
2093 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2094 VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
2095 vkCreateRenderPass2_VkResult_return = vkEnc->vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
2096 return vkCreateRenderPass2_VkResult_return;
2097}
2098static void entry_vkCmdBeginRenderPass2(
2099 VkCommandBuffer commandBuffer,
2100 const VkRenderPassBeginInfo* pRenderPassBegin,
2101 const VkSubpassBeginInfo* pSubpassBeginInfo)
2102{
2103 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2");
2104 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2105 vkEnc->vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
2106}
2107static void entry_vkCmdNextSubpass2(
2108 VkCommandBuffer commandBuffer,
2109 const VkSubpassBeginInfo* pSubpassBeginInfo,
2110 const VkSubpassEndInfo* pSubpassEndInfo)
2111{
2112 AEMU_SCOPED_TRACE("vkCmdNextSubpass2");
2113 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2114 vkEnc->vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
2115}
2116static void entry_vkCmdEndRenderPass2(
2117 VkCommandBuffer commandBuffer,
2118 const VkSubpassEndInfo* pSubpassEndInfo)
2119{
2120 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2");
2121 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2122 vkEnc->vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo, true /* do lock */);
2123}
2124static void entry_vkResetQueryPool(
2125 VkDevice device,
2126 VkQueryPool queryPool,
2127 uint32_t firstQuery,
2128 uint32_t queryCount)
2129{
2130 AEMU_SCOPED_TRACE("vkResetQueryPool");
2131 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2132 vkEnc->vkResetQueryPool(device, queryPool, firstQuery, queryCount, true /* do lock */);
2133}
2134static void dynCheck_entry_vkResetQueryPool(
2135 VkDevice device,
2136 VkQueryPool queryPool,
2137 uint32_t firstQuery,
2138 uint32_t queryCount)
2139{
2140 auto resources = ResourceTracker::get();
2141 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2142 {
2143 sOnInvalidDynamicallyCheckedCall("vkResetQueryPool", "VK_VERSION_1_2");
2144 }
2145 AEMU_SCOPED_TRACE("vkResetQueryPool");
2146 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2147 vkEnc->vkResetQueryPool(device, queryPool, firstQuery, queryCount, true /* do lock */);
2148}
2149static VkResult entry_vkGetSemaphoreCounterValue(
2150 VkDevice device,
2151 VkSemaphore semaphore,
2152 uint64_t* pValue)
2153{
2154 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValue");
2155 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2156 VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
2157 vkGetSemaphoreCounterValue_VkResult_return = vkEnc->vkGetSemaphoreCounterValue(device, semaphore, pValue, true /* do lock */);
2158 return vkGetSemaphoreCounterValue_VkResult_return;
2159}
2160static VkResult dynCheck_entry_vkGetSemaphoreCounterValue(
2161 VkDevice device,
2162 VkSemaphore semaphore,
2163 uint64_t* pValue)
2164{
2165 auto resources = ResourceTracker::get();
2166 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2167 {
2168 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreCounterValue", "VK_VERSION_1_2");
2169 }
2170 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValue");
2171 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2172 VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
2173 vkGetSemaphoreCounterValue_VkResult_return = vkEnc->vkGetSemaphoreCounterValue(device, semaphore, pValue, true /* do lock */);
2174 return vkGetSemaphoreCounterValue_VkResult_return;
2175}
2176static VkResult entry_vkWaitSemaphores(
2177 VkDevice device,
2178 const VkSemaphoreWaitInfo* pWaitInfo,
2179 uint64_t timeout)
2180{
2181 AEMU_SCOPED_TRACE("vkWaitSemaphores");
2182 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2183 VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
2184 vkWaitSemaphores_VkResult_return = vkEnc->vkWaitSemaphores(device, pWaitInfo, timeout, true /* do lock */);
2185 return vkWaitSemaphores_VkResult_return;
2186}
2187static VkResult dynCheck_entry_vkWaitSemaphores(
2188 VkDevice device,
2189 const VkSemaphoreWaitInfo* pWaitInfo,
2190 uint64_t timeout)
2191{
2192 auto resources = ResourceTracker::get();
2193 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2194 {
2195 sOnInvalidDynamicallyCheckedCall("vkWaitSemaphores", "VK_VERSION_1_2");
2196 }
2197 AEMU_SCOPED_TRACE("vkWaitSemaphores");
2198 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2199 VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
2200 vkWaitSemaphores_VkResult_return = vkEnc->vkWaitSemaphores(device, pWaitInfo, timeout, true /* do lock */);
2201 return vkWaitSemaphores_VkResult_return;
2202}
2203static VkResult entry_vkSignalSemaphore(
2204 VkDevice device,
2205 const VkSemaphoreSignalInfo* pSignalInfo)
2206{
2207 AEMU_SCOPED_TRACE("vkSignalSemaphore");
2208 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2209 VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
2210 vkSignalSemaphore_VkResult_return = vkEnc->vkSignalSemaphore(device, pSignalInfo, true /* do lock */);
2211 return vkSignalSemaphore_VkResult_return;
2212}
2213static VkResult dynCheck_entry_vkSignalSemaphore(
2214 VkDevice device,
2215 const VkSemaphoreSignalInfo* pSignalInfo)
2216{
2217 auto resources = ResourceTracker::get();
2218 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2219 {
2220 sOnInvalidDynamicallyCheckedCall("vkSignalSemaphore", "VK_VERSION_1_2");
2221 }
2222 AEMU_SCOPED_TRACE("vkSignalSemaphore");
2223 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2224 VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
2225 vkSignalSemaphore_VkResult_return = vkEnc->vkSignalSemaphore(device, pSignalInfo, true /* do lock */);
2226 return vkSignalSemaphore_VkResult_return;
2227}
2228static VkDeviceAddress entry_vkGetBufferDeviceAddress(
2229 VkDevice device,
2230 const VkBufferDeviceAddressInfo* pInfo)
2231{
2232 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddress");
2233 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2234 VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return = (VkDeviceAddress)0;
2235 vkGetBufferDeviceAddress_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddress(device, pInfo, true /* do lock */);
2236 return vkGetBufferDeviceAddress_VkDeviceAddress_return;
2237}
2238static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddress(
2239 VkDevice device,
2240 const VkBufferDeviceAddressInfo* pInfo)
2241{
2242 auto resources = ResourceTracker::get();
2243 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2244 {
2245 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddress", "VK_VERSION_1_2");
2246 }
2247 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddress");
2248 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2249 VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return = (VkDeviceAddress)0;
2250 vkGetBufferDeviceAddress_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddress(device, pInfo, true /* do lock */);
2251 return vkGetBufferDeviceAddress_VkDeviceAddress_return;
2252}
2253static uint64_t entry_vkGetBufferOpaqueCaptureAddress(
2254 VkDevice device,
2255 const VkBufferDeviceAddressInfo* pInfo)
2256{
2257 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddress");
2258 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2259 uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2260 vkGetBufferOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2261 return vkGetBufferOpaqueCaptureAddress_uint64_t_return;
2262}
2263static uint64_t dynCheck_entry_vkGetBufferOpaqueCaptureAddress(
2264 VkDevice device,
2265 const VkBufferDeviceAddressInfo* pInfo)
2266{
2267 auto resources = ResourceTracker::get();
2268 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2269 {
2270 sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureAddress", "VK_VERSION_1_2");
2271 }
2272 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddress");
2273 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2274 uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2275 vkGetBufferOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2276 return vkGetBufferOpaqueCaptureAddress_uint64_t_return;
2277}
2278static uint64_t entry_vkGetDeviceMemoryOpaqueCaptureAddress(
2279 VkDevice device,
2280 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
2281{
2282 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddress");
2283 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2284 uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2285 vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2286 return vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return;
2287}
2288static uint64_t dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress(
2289 VkDevice device,
2290 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
2291{
2292 auto resources = ResourceTracker::get();
2293 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2294 {
2295 sOnInvalidDynamicallyCheckedCall("vkGetDeviceMemoryOpaqueCaptureAddress", "VK_VERSION_1_2");
2296 }
2297 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddress");
2298 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2299 uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2300 vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2301 return vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return;
2302}
2303#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002304#ifdef VK_KHR_surface
2305static void entry_vkDestroySurfaceKHR(
2306 VkInstance instance,
2307 VkSurfaceKHR surface,
2308 const VkAllocationCallbacks* pAllocator)
2309{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002310 AEMU_SCOPED_TRACE("vkDestroySurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002311 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002312 vkEnc->vkDestroySurfaceKHR(instance, surface, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002313}
2314static VkResult entry_vkGetPhysicalDeviceSurfaceSupportKHR(
2315 VkPhysicalDevice physicalDevice,
2316 uint32_t queueFamilyIndex,
2317 VkSurfaceKHR surface,
2318 VkBool32* pSupported)
2319{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002320 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002321 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002322 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002323 vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002324 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
2325}
2326static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
2327 VkPhysicalDevice physicalDevice,
2328 VkSurfaceKHR surface,
2329 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
2330{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002331 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002332 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002333 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002334 vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002335 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
2336}
2337static VkResult entry_vkGetPhysicalDeviceSurfaceFormatsKHR(
2338 VkPhysicalDevice physicalDevice,
2339 VkSurfaceKHR surface,
2340 uint32_t* pSurfaceFormatCount,
2341 VkSurfaceFormatKHR* pSurfaceFormats)
2342{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002343 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002344 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002345 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002346 vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002347 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
2348}
2349static VkResult entry_vkGetPhysicalDeviceSurfacePresentModesKHR(
2350 VkPhysicalDevice physicalDevice,
2351 VkSurfaceKHR surface,
2352 uint32_t* pPresentModeCount,
2353 VkPresentModeKHR* pPresentModes)
2354{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002355 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002356 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002357 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002358 vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002359 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
2360}
2361#endif
2362#ifdef VK_KHR_swapchain
2363static VkResult entry_vkCreateSwapchainKHR(
2364 VkDevice device,
2365 const VkSwapchainCreateInfoKHR* pCreateInfo,
2366 const VkAllocationCallbacks* pAllocator,
2367 VkSwapchainKHR* pSwapchain)
2368{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002369 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002370 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002371 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002372 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002373 return vkCreateSwapchainKHR_VkResult_return;
2374}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002375static VkResult dynCheck_entry_vkCreateSwapchainKHR(
2376 VkDevice device,
2377 const VkSwapchainCreateInfoKHR* pCreateInfo,
2378 const VkAllocationCallbacks* pAllocator,
2379 VkSwapchainKHR* pSwapchain)
2380{
2381 auto resources = ResourceTracker::get();
2382 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2383 {
2384 sOnInvalidDynamicallyCheckedCall("vkCreateSwapchainKHR", "VK_KHR_swapchain");
2385 }
2386 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002387 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002388 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002389 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002390 return vkCreateSwapchainKHR_VkResult_return;
2391}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002392static void entry_vkDestroySwapchainKHR(
2393 VkDevice device,
2394 VkSwapchainKHR swapchain,
2395 const VkAllocationCallbacks* pAllocator)
2396{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002397 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002398 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002399 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002400}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002401static void dynCheck_entry_vkDestroySwapchainKHR(
2402 VkDevice device,
2403 VkSwapchainKHR swapchain,
2404 const VkAllocationCallbacks* pAllocator)
2405{
2406 auto resources = ResourceTracker::get();
2407 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2408 {
2409 sOnInvalidDynamicallyCheckedCall("vkDestroySwapchainKHR", "VK_KHR_swapchain");
2410 }
2411 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002412 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002413 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002414}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002415static VkResult entry_vkGetSwapchainImagesKHR(
2416 VkDevice device,
2417 VkSwapchainKHR swapchain,
2418 uint32_t* pSwapchainImageCount,
2419 VkImage* pSwapchainImages)
2420{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002421 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002422 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002423 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002424 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002425 return vkGetSwapchainImagesKHR_VkResult_return;
2426}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002427static VkResult dynCheck_entry_vkGetSwapchainImagesKHR(
2428 VkDevice device,
2429 VkSwapchainKHR swapchain,
2430 uint32_t* pSwapchainImageCount,
2431 VkImage* pSwapchainImages)
2432{
2433 auto resources = ResourceTracker::get();
2434 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2435 {
2436 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainImagesKHR", "VK_KHR_swapchain");
2437 }
2438 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002439 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002440 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002441 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002442 return vkGetSwapchainImagesKHR_VkResult_return;
2443}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002444static VkResult entry_vkAcquireNextImageKHR(
2445 VkDevice device,
2446 VkSwapchainKHR swapchain,
2447 uint64_t timeout,
2448 VkSemaphore semaphore,
2449 VkFence fence,
2450 uint32_t* pImageIndex)
2451{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002452 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002453 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002454 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002455 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002456 return vkAcquireNextImageKHR_VkResult_return;
2457}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002458static VkResult dynCheck_entry_vkAcquireNextImageKHR(
2459 VkDevice device,
2460 VkSwapchainKHR swapchain,
2461 uint64_t timeout,
2462 VkSemaphore semaphore,
2463 VkFence fence,
2464 uint32_t* pImageIndex)
2465{
2466 auto resources = ResourceTracker::get();
2467 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2468 {
2469 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImageKHR", "VK_KHR_swapchain");
2470 }
2471 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002472 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002473 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002474 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002475 return vkAcquireNextImageKHR_VkResult_return;
2476}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002477static VkResult entry_vkQueuePresentKHR(
2478 VkQueue queue,
2479 const VkPresentInfoKHR* pPresentInfo)
2480{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002481 AEMU_SCOPED_TRACE("vkQueuePresentKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002482 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002483 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002484 vkQueuePresentKHR_VkResult_return = vkEnc->vkQueuePresentKHR(queue, pPresentInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002485 return vkQueuePresentKHR_VkResult_return;
2486}
2487static VkResult entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2488 VkDevice device,
2489 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2490{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002491 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002492 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002493 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002494 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002495 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2496}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002497static VkResult dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2498 VkDevice device,
2499 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2500{
2501 auto resources = ResourceTracker::get();
2502 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2503 {
2504 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPresentCapabilitiesKHR", "VK_KHR_swapchain");
2505 }
2506 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002507 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002508 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002509 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002510 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2511}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002512static VkResult entry_vkGetDeviceGroupSurfacePresentModesKHR(
2513 VkDevice device,
2514 VkSurfaceKHR surface,
2515 VkDeviceGroupPresentModeFlagsKHR* pModes)
2516{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002517 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002518 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002519 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002520 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002521 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2522}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002523static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR(
2524 VkDevice device,
2525 VkSurfaceKHR surface,
2526 VkDeviceGroupPresentModeFlagsKHR* pModes)
2527{
2528 auto resources = ResourceTracker::get();
2529 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2530 {
2531 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModesKHR", "VK_KHR_swapchain");
2532 }
2533 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002534 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002535 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002536 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002537 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2538}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002539static VkResult entry_vkGetPhysicalDevicePresentRectanglesKHR(
2540 VkPhysicalDevice physicalDevice,
2541 VkSurfaceKHR surface,
2542 uint32_t* pRectCount,
2543 VkRect2D* pRects)
2544{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002545 AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002546 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002547 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002548 vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = vkEnc->vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002549 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
2550}
2551static VkResult entry_vkAcquireNextImage2KHR(
2552 VkDevice device,
2553 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2554 uint32_t* pImageIndex)
2555{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002556 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002557 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002558 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002559 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002560 return vkAcquireNextImage2KHR_VkResult_return;
2561}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002562static VkResult dynCheck_entry_vkAcquireNextImage2KHR(
2563 VkDevice device,
2564 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2565 uint32_t* pImageIndex)
2566{
2567 auto resources = ResourceTracker::get();
2568 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2569 {
2570 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImage2KHR", "VK_KHR_swapchain");
2571 }
2572 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002573 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002574 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002575 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002576 return vkAcquireNextImage2KHR_VkResult_return;
2577}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002578#endif
2579#ifdef VK_KHR_display
2580static VkResult entry_vkGetPhysicalDeviceDisplayPropertiesKHR(
2581 VkPhysicalDevice physicalDevice,
2582 uint32_t* pPropertyCount,
2583 VkDisplayPropertiesKHR* pProperties)
2584{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002585 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002586 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002587 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002588 vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002589 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
2590}
2591static VkResult entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
2592 VkPhysicalDevice physicalDevice,
2593 uint32_t* pPropertyCount,
2594 VkDisplayPlanePropertiesKHR* pProperties)
2595{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002596 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002597 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002598 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002599 vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002600 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
2601}
2602static VkResult entry_vkGetDisplayPlaneSupportedDisplaysKHR(
2603 VkPhysicalDevice physicalDevice,
2604 uint32_t planeIndex,
2605 uint32_t* pDisplayCount,
2606 VkDisplayKHR* pDisplays)
2607{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002608 AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002609 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002610 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002611 vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = vkEnc->vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002612 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
2613}
2614static VkResult entry_vkGetDisplayModePropertiesKHR(
2615 VkPhysicalDevice physicalDevice,
2616 VkDisplayKHR display,
2617 uint32_t* pPropertyCount,
2618 VkDisplayModePropertiesKHR* pProperties)
2619{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002620 AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002621 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002622 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002623 vkGetDisplayModePropertiesKHR_VkResult_return = vkEnc->vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002624 return vkGetDisplayModePropertiesKHR_VkResult_return;
2625}
2626static VkResult entry_vkCreateDisplayModeKHR(
2627 VkPhysicalDevice physicalDevice,
2628 VkDisplayKHR display,
2629 const VkDisplayModeCreateInfoKHR* pCreateInfo,
2630 const VkAllocationCallbacks* pAllocator,
2631 VkDisplayModeKHR* pMode)
2632{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002633 AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002634 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002635 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002636 vkCreateDisplayModeKHR_VkResult_return = vkEnc->vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002637 return vkCreateDisplayModeKHR_VkResult_return;
2638}
2639static VkResult entry_vkGetDisplayPlaneCapabilitiesKHR(
2640 VkPhysicalDevice physicalDevice,
2641 VkDisplayModeKHR mode,
2642 uint32_t planeIndex,
2643 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
2644{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002645 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002646 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002647 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002648 vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002649 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
2650}
2651static VkResult entry_vkCreateDisplayPlaneSurfaceKHR(
2652 VkInstance instance,
2653 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
2654 const VkAllocationCallbacks* pAllocator,
2655 VkSurfaceKHR* pSurface)
2656{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002657 AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002658 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002659 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002660 vkCreateDisplayPlaneSurfaceKHR_VkResult_return = vkEnc->vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002661 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
2662}
2663#endif
2664#ifdef VK_KHR_display_swapchain
2665static VkResult entry_vkCreateSharedSwapchainsKHR(
2666 VkDevice device,
2667 uint32_t swapchainCount,
2668 const VkSwapchainCreateInfoKHR* pCreateInfos,
2669 const VkAllocationCallbacks* pAllocator,
2670 VkSwapchainKHR* pSwapchains)
2671{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002672 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002673 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002674 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002675 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002676 return vkCreateSharedSwapchainsKHR_VkResult_return;
2677}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002678static VkResult dynCheck_entry_vkCreateSharedSwapchainsKHR(
2679 VkDevice device,
2680 uint32_t swapchainCount,
2681 const VkSwapchainCreateInfoKHR* pCreateInfos,
2682 const VkAllocationCallbacks* pAllocator,
2683 VkSwapchainKHR* pSwapchains)
2684{
2685 auto resources = ResourceTracker::get();
2686 if (!resources->hasDeviceExtension(device, "VK_KHR_display_swapchain"))
2687 {
2688 sOnInvalidDynamicallyCheckedCall("vkCreateSharedSwapchainsKHR", "VK_KHR_display_swapchain");
2689 }
2690 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002691 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002692 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002693 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002694 return vkCreateSharedSwapchainsKHR_VkResult_return;
2695}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002696#endif
2697#ifdef VK_KHR_xlib_surface
2698static VkResult entry_vkCreateXlibSurfaceKHR(
2699 VkInstance instance,
2700 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
2701 const VkAllocationCallbacks* pAllocator,
2702 VkSurfaceKHR* pSurface)
2703{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002704 AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002705 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002706 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002707 vkCreateXlibSurfaceKHR_VkResult_return = vkEnc->vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002708 return vkCreateXlibSurfaceKHR_VkResult_return;
2709}
2710static VkBool32 entry_vkGetPhysicalDeviceXlibPresentationSupportKHR(
2711 VkPhysicalDevice physicalDevice,
2712 uint32_t queueFamilyIndex,
2713 Display* dpy,
2714 VisualID visualID)
2715{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002716 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002717 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002718 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002719 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002720 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
2721}
2722#endif
2723#ifdef VK_KHR_xcb_surface
2724static VkResult entry_vkCreateXcbSurfaceKHR(
2725 VkInstance instance,
2726 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
2727 const VkAllocationCallbacks* pAllocator,
2728 VkSurfaceKHR* pSurface)
2729{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002730 AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002731 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002732 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002733 vkCreateXcbSurfaceKHR_VkResult_return = vkEnc->vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002734 return vkCreateXcbSurfaceKHR_VkResult_return;
2735}
2736static VkBool32 entry_vkGetPhysicalDeviceXcbPresentationSupportKHR(
2737 VkPhysicalDevice physicalDevice,
2738 uint32_t queueFamilyIndex,
2739 xcb_connection_t* connection,
2740 xcb_visualid_t visual_id)
2741{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002742 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002743 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002744 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002745 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002746 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
2747}
2748#endif
2749#ifdef VK_KHR_wayland_surface
2750static VkResult entry_vkCreateWaylandSurfaceKHR(
2751 VkInstance instance,
2752 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
2753 const VkAllocationCallbacks* pAllocator,
2754 VkSurfaceKHR* pSurface)
2755{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002756 AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002757 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002758 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002759 vkCreateWaylandSurfaceKHR_VkResult_return = vkEnc->vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002760 return vkCreateWaylandSurfaceKHR_VkResult_return;
2761}
2762static VkBool32 entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
2763 VkPhysicalDevice physicalDevice,
2764 uint32_t queueFamilyIndex,
2765 wl_display* display)
2766{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002767 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002768 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002769 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002770 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002771 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
2772}
2773#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002774#ifdef VK_KHR_android_surface
2775static VkResult entry_vkCreateAndroidSurfaceKHR(
2776 VkInstance instance,
2777 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
2778 const VkAllocationCallbacks* pAllocator,
2779 VkSurfaceKHR* pSurface)
2780{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002781 AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002782 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002783 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002784 vkCreateAndroidSurfaceKHR_VkResult_return = vkEnc->vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002785 return vkCreateAndroidSurfaceKHR_VkResult_return;
2786}
2787#endif
2788#ifdef VK_KHR_win32_surface
2789static VkResult entry_vkCreateWin32SurfaceKHR(
2790 VkInstance instance,
2791 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
2792 const VkAllocationCallbacks* pAllocator,
2793 VkSurfaceKHR* pSurface)
2794{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002795 AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002796 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002797 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002798 vkCreateWin32SurfaceKHR_VkResult_return = vkEnc->vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002799 return vkCreateWin32SurfaceKHR_VkResult_return;
2800}
2801static VkBool32 entry_vkGetPhysicalDeviceWin32PresentationSupportKHR(
2802 VkPhysicalDevice physicalDevice,
2803 uint32_t queueFamilyIndex)
2804{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002805 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002806 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002807 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002808 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002809 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
2810}
2811#endif
2812#ifdef VK_KHR_sampler_mirror_clamp_to_edge
2813#endif
2814#ifdef VK_KHR_multiview
2815#endif
2816#ifdef VK_KHR_get_physical_device_properties2
2817static void entry_vkGetPhysicalDeviceFeatures2KHR(
2818 VkPhysicalDevice physicalDevice,
2819 VkPhysicalDeviceFeatures2* pFeatures)
2820{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002821 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002822 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002823 vkEnc->vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002824}
2825static void entry_vkGetPhysicalDeviceProperties2KHR(
2826 VkPhysicalDevice physicalDevice,
2827 VkPhysicalDeviceProperties2* pProperties)
2828{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002829 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002830 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002831 vkEnc->vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002832}
2833static void entry_vkGetPhysicalDeviceFormatProperties2KHR(
2834 VkPhysicalDevice physicalDevice,
2835 VkFormat format,
2836 VkFormatProperties2* pFormatProperties)
2837{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002838 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002839 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002840 vkEnc->vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002841}
2842static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2KHR(
2843 VkPhysicalDevice physicalDevice,
2844 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
2845 VkImageFormatProperties2* pImageFormatProperties)
2846{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002847 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002848 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002849 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07002850 auto resources = ResourceTracker::get();
2851 vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2KHR(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002852 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
2853}
2854static void entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
2855 VkPhysicalDevice physicalDevice,
2856 uint32_t* pQueueFamilyPropertyCount,
2857 VkQueueFamilyProperties2* pQueueFamilyProperties)
2858{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002859 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002860 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002861 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002862}
2863static void entry_vkGetPhysicalDeviceMemoryProperties2KHR(
2864 VkPhysicalDevice physicalDevice,
2865 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
2866{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002867 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002868 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002869 vkEnc->vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002870}
2871static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
2872 VkPhysicalDevice physicalDevice,
2873 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
2874 uint32_t* pPropertyCount,
2875 VkSparseImageFormatProperties2* pProperties)
2876{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002877 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002878 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002879 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002880}
2881#endif
2882#ifdef VK_KHR_device_group
2883static void entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2884 VkDevice device,
2885 uint32_t heapIndex,
2886 uint32_t localDeviceIndex,
2887 uint32_t remoteDeviceIndex,
2888 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2889{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002890 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002891 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002892 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002893}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002894static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2895 VkDevice device,
2896 uint32_t heapIndex,
2897 uint32_t localDeviceIndex,
2898 uint32_t remoteDeviceIndex,
2899 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2900{
2901 auto resources = ResourceTracker::get();
2902 if (!resources->hasDeviceExtension(device, "VK_KHR_device_group"))
2903 {
2904 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeaturesKHR", "VK_KHR_device_group");
2905 }
2906 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002907 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002908 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002909}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002910static void entry_vkCmdSetDeviceMaskKHR(
2911 VkCommandBuffer commandBuffer,
2912 uint32_t deviceMask)
2913{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002914 AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002915 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002916 vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002917}
2918static void entry_vkCmdDispatchBaseKHR(
2919 VkCommandBuffer commandBuffer,
2920 uint32_t baseGroupX,
2921 uint32_t baseGroupY,
2922 uint32_t baseGroupZ,
2923 uint32_t groupCountX,
2924 uint32_t groupCountY,
2925 uint32_t groupCountZ)
2926{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002927 AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002928 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002929 vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002930}
2931#endif
2932#ifdef VK_KHR_shader_draw_parameters
2933#endif
2934#ifdef VK_KHR_maintenance1
2935static void entry_vkTrimCommandPoolKHR(
2936 VkDevice device,
2937 VkCommandPool commandPool,
2938 VkCommandPoolTrimFlags flags)
2939{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002940 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002941 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002942 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002943}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002944static void dynCheck_entry_vkTrimCommandPoolKHR(
2945 VkDevice device,
2946 VkCommandPool commandPool,
2947 VkCommandPoolTrimFlags flags)
2948{
2949 auto resources = ResourceTracker::get();
2950 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance1"))
2951 {
2952 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPoolKHR", "VK_KHR_maintenance1");
2953 }
2954 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002955 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002956 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002957}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002958#endif
2959#ifdef VK_KHR_device_group_creation
2960static VkResult entry_vkEnumeratePhysicalDeviceGroupsKHR(
2961 VkInstance instance,
2962 uint32_t* pPhysicalDeviceGroupCount,
2963 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
2964{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002965 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002966 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002967 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002968 vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002969 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
2970}
2971#endif
2972#ifdef VK_KHR_external_memory_capabilities
2973static void entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
2974 VkPhysicalDevice physicalDevice,
2975 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
2976 VkExternalBufferProperties* pExternalBufferProperties)
2977{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002978 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002979 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002980 vkEnc->vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002981}
2982#endif
2983#ifdef VK_KHR_external_memory
2984#endif
2985#ifdef VK_KHR_external_memory_win32
2986static VkResult entry_vkGetMemoryWin32HandleKHR(
2987 VkDevice device,
2988 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2989 HANDLE* pHandle)
2990{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002991 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002992 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002993 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002994 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002995 return vkGetMemoryWin32HandleKHR_VkResult_return;
2996}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002997static VkResult dynCheck_entry_vkGetMemoryWin32HandleKHR(
2998 VkDevice device,
2999 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3000 HANDLE* pHandle)
3001{
3002 auto resources = ResourceTracker::get();
3003 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
3004 {
3005 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleKHR", "VK_KHR_external_memory_win32");
3006 }
3007 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003008 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003009 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003010 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003011 return vkGetMemoryWin32HandleKHR_VkResult_return;
3012}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003013static VkResult entry_vkGetMemoryWin32HandlePropertiesKHR(
3014 VkDevice device,
3015 VkExternalMemoryHandleTypeFlagBits handleType,
3016 HANDLE handle,
3017 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
3018{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003019 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003020 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003021 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003022 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003023 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
3024}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003025static VkResult dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR(
3026 VkDevice device,
3027 VkExternalMemoryHandleTypeFlagBits handleType,
3028 HANDLE handle,
3029 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
3030{
3031 auto resources = ResourceTracker::get();
3032 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
3033 {
3034 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandlePropertiesKHR", "VK_KHR_external_memory_win32");
3035 }
3036 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003037 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003038 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003039 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003040 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
3041}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003042#endif
3043#ifdef VK_KHR_external_memory_fd
3044static VkResult entry_vkGetMemoryFdKHR(
3045 VkDevice device,
3046 const VkMemoryGetFdInfoKHR* pGetFdInfo,
3047 int* pFd)
3048{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003049 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003050 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003051 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003052 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003053 return vkGetMemoryFdKHR_VkResult_return;
3054}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003055static VkResult dynCheck_entry_vkGetMemoryFdKHR(
3056 VkDevice device,
3057 const VkMemoryGetFdInfoKHR* pGetFdInfo,
3058 int* pFd)
3059{
3060 auto resources = ResourceTracker::get();
3061 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
3062 {
3063 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdKHR", "VK_KHR_external_memory_fd");
3064 }
3065 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003066 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003067 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003068 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003069 return vkGetMemoryFdKHR_VkResult_return;
3070}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003071static VkResult entry_vkGetMemoryFdPropertiesKHR(
3072 VkDevice device,
3073 VkExternalMemoryHandleTypeFlagBits handleType,
3074 int fd,
3075 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
3076{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003077 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003078 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003079 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003080 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003081 return vkGetMemoryFdPropertiesKHR_VkResult_return;
3082}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003083static VkResult dynCheck_entry_vkGetMemoryFdPropertiesKHR(
3084 VkDevice device,
3085 VkExternalMemoryHandleTypeFlagBits handleType,
3086 int fd,
3087 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
3088{
3089 auto resources = ResourceTracker::get();
3090 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
3091 {
3092 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdPropertiesKHR", "VK_KHR_external_memory_fd");
3093 }
3094 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003095 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003096 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003097 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003098 return vkGetMemoryFdPropertiesKHR_VkResult_return;
3099}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003100#endif
3101#ifdef VK_KHR_win32_keyed_mutex
3102#endif
3103#ifdef VK_KHR_external_semaphore_capabilities
3104static void entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
3105 VkPhysicalDevice physicalDevice,
3106 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
3107 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
3108{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003109 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003110 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003111 vkEnc->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003112}
3113#endif
3114#ifdef VK_KHR_external_semaphore
3115#endif
3116#ifdef VK_KHR_external_semaphore_win32
3117static VkResult entry_vkImportSemaphoreWin32HandleKHR(
3118 VkDevice device,
3119 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
3120{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003121 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003122 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003123 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003124 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003125 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
3126}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003127static VkResult dynCheck_entry_vkImportSemaphoreWin32HandleKHR(
3128 VkDevice device,
3129 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
3130{
3131 auto resources = ResourceTracker::get();
3132 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
3133 {
3134 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
3135 }
3136 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003137 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003138 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003139 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003140 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
3141}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003142static VkResult entry_vkGetSemaphoreWin32HandleKHR(
3143 VkDevice device,
3144 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3145 HANDLE* pHandle)
3146{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003147 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003148 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003149 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003150 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003151 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
3152}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003153static VkResult dynCheck_entry_vkGetSemaphoreWin32HandleKHR(
3154 VkDevice device,
3155 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3156 HANDLE* pHandle)
3157{
3158 auto resources = ResourceTracker::get();
3159 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
3160 {
3161 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
3162 }
3163 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003164 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003165 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003166 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003167 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
3168}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003169#endif
3170#ifdef VK_KHR_external_semaphore_fd
3171static VkResult entry_vkImportSemaphoreFdKHR(
3172 VkDevice device,
3173 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
3174{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003175 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003176 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003177 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08003178 auto resources = ResourceTracker::get();
3179 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003180 return vkImportSemaphoreFdKHR_VkResult_return;
3181}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003182static VkResult dynCheck_entry_vkImportSemaphoreFdKHR(
3183 VkDevice device,
3184 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
3185{
3186 auto resources = ResourceTracker::get();
3187 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3188 {
3189 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3190 }
3191 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003192 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003193 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
3194 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
3195 return vkImportSemaphoreFdKHR_VkResult_return;
3196}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003197static VkResult entry_vkGetSemaphoreFdKHR(
3198 VkDevice device,
3199 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3200 int* pFd)
3201{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003202 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003203 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003204 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08003205 auto resources = ResourceTracker::get();
3206 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003207 return vkGetSemaphoreFdKHR_VkResult_return;
3208}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003209static VkResult dynCheck_entry_vkGetSemaphoreFdKHR(
3210 VkDevice device,
3211 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3212 int* pFd)
3213{
3214 auto resources = ResourceTracker::get();
3215 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3216 {
3217 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3218 }
3219 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003220 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003221 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
3222 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3223 return vkGetSemaphoreFdKHR_VkResult_return;
3224}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003225#endif
3226#ifdef VK_KHR_push_descriptor
3227static void entry_vkCmdPushDescriptorSetKHR(
3228 VkCommandBuffer commandBuffer,
3229 VkPipelineBindPoint pipelineBindPoint,
3230 VkPipelineLayout layout,
3231 uint32_t set,
3232 uint32_t descriptorWriteCount,
3233 const VkWriteDescriptorSet* pDescriptorWrites)
3234{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003235 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003236 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003237 vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003238}
3239static void entry_vkCmdPushDescriptorSetWithTemplateKHR(
3240 VkCommandBuffer commandBuffer,
3241 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3242 VkPipelineLayout layout,
3243 uint32_t set,
3244 const void* pData)
3245{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003246 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003247 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003248 vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003249}
3250#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003251#ifdef VK_KHR_shader_float16_int8
3252#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003253#ifdef VK_KHR_16bit_storage
3254#endif
3255#ifdef VK_KHR_incremental_present
3256#endif
3257#ifdef VK_KHR_descriptor_update_template
3258static VkResult entry_vkCreateDescriptorUpdateTemplateKHR(
3259 VkDevice device,
3260 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3261 const VkAllocationCallbacks* pAllocator,
3262 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3263{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003264 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003265 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003266 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003267 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003268 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3269}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003270static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR(
3271 VkDevice device,
3272 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3273 const VkAllocationCallbacks* pAllocator,
3274 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3275{
3276 auto resources = ResourceTracker::get();
3277 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3278 {
3279 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3280 }
3281 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003282 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003283 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003284 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003285 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3286}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003287static void entry_vkDestroyDescriptorUpdateTemplateKHR(
3288 VkDevice device,
3289 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3290 const VkAllocationCallbacks* pAllocator)
3291{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003292 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003293 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003294 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003295}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003296static void dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR(
3297 VkDevice device,
3298 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3299 const VkAllocationCallbacks* pAllocator)
3300{
3301 auto resources = ResourceTracker::get();
3302 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3303 {
3304 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3305 }
3306 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003307 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003308 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003309}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003310static void entry_vkUpdateDescriptorSetWithTemplateKHR(
3311 VkDevice device,
3312 VkDescriptorSet descriptorSet,
3313 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3314 const void* pData)
3315{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003316 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003317 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003318 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003319}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003320static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR(
3321 VkDevice device,
3322 VkDescriptorSet descriptorSet,
3323 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3324 const void* pData)
3325{
3326 auto resources = ResourceTracker::get();
3327 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3328 {
3329 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateKHR", "VK_KHR_descriptor_update_template");
3330 }
3331 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003332 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003333 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003334}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003335#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003336#ifdef VK_KHR_imageless_framebuffer
3337#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003338#ifdef VK_KHR_create_renderpass2
3339static VkResult entry_vkCreateRenderPass2KHR(
3340 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08003341 const VkRenderPassCreateInfo2* pCreateInfo,
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003342 const VkAllocationCallbacks* pAllocator,
3343 VkRenderPass* pRenderPass)
3344{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003345 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003346 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003347 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003348 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003349 return vkCreateRenderPass2KHR_VkResult_return;
3350}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003351static VkResult dynCheck_entry_vkCreateRenderPass2KHR(
3352 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08003353 const VkRenderPassCreateInfo2* pCreateInfo,
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003354 const VkAllocationCallbacks* pAllocator,
3355 VkRenderPass* pRenderPass)
3356{
3357 auto resources = ResourceTracker::get();
3358 if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"))
3359 {
3360 sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2KHR", "VK_KHR_create_renderpass2");
3361 }
3362 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003363 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003364 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003365 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003366 return vkCreateRenderPass2KHR_VkResult_return;
3367}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003368static void entry_vkCmdBeginRenderPass2KHR(
3369 VkCommandBuffer commandBuffer,
3370 const VkRenderPassBeginInfo* pRenderPassBegin,
Yilong Lia8d45f12021-02-07 02:30:21 -08003371 const VkSubpassBeginInfo* pSubpassBeginInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003372{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003373 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003374 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003375 vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003376}
3377static void entry_vkCmdNextSubpass2KHR(
3378 VkCommandBuffer commandBuffer,
Yilong Lia8d45f12021-02-07 02:30:21 -08003379 const VkSubpassBeginInfo* pSubpassBeginInfo,
3380 const VkSubpassEndInfo* pSubpassEndInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003381{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003382 AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003383 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003384 vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003385}
3386static void entry_vkCmdEndRenderPass2KHR(
3387 VkCommandBuffer commandBuffer,
Yilong Lia8d45f12021-02-07 02:30:21 -08003388 const VkSubpassEndInfo* pSubpassEndInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003389{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003390 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003391 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003392 vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003393}
3394#endif
3395#ifdef VK_KHR_shared_presentable_image
3396static VkResult entry_vkGetSwapchainStatusKHR(
3397 VkDevice device,
3398 VkSwapchainKHR swapchain)
3399{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003400 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003401 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003402 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003403 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003404 return vkGetSwapchainStatusKHR_VkResult_return;
3405}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003406static VkResult dynCheck_entry_vkGetSwapchainStatusKHR(
3407 VkDevice device,
3408 VkSwapchainKHR swapchain)
3409{
3410 auto resources = ResourceTracker::get();
3411 if (!resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image"))
3412 {
3413 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainStatusKHR", "VK_KHR_shared_presentable_image");
3414 }
3415 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003416 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003417 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003418 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003419 return vkGetSwapchainStatusKHR_VkResult_return;
3420}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003421#endif
3422#ifdef VK_KHR_external_fence_capabilities
3423static void entry_vkGetPhysicalDeviceExternalFencePropertiesKHR(
3424 VkPhysicalDevice physicalDevice,
3425 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
3426 VkExternalFenceProperties* pExternalFenceProperties)
3427{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003428 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003429 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003430 auto resources = ResourceTracker::get();
3431 resources->on_vkGetPhysicalDeviceExternalFencePropertiesKHR(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003432}
3433#endif
3434#ifdef VK_KHR_external_fence
3435#endif
3436#ifdef VK_KHR_external_fence_win32
3437static VkResult entry_vkImportFenceWin32HandleKHR(
3438 VkDevice device,
3439 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3440{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003441 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003442 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003443 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003444 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003445 return vkImportFenceWin32HandleKHR_VkResult_return;
3446}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003447static VkResult dynCheck_entry_vkImportFenceWin32HandleKHR(
3448 VkDevice device,
3449 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3450{
3451 auto resources = ResourceTracker::get();
3452 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3453 {
3454 sOnInvalidDynamicallyCheckedCall("vkImportFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3455 }
3456 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003457 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003458 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003459 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003460 return vkImportFenceWin32HandleKHR_VkResult_return;
3461}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003462static VkResult entry_vkGetFenceWin32HandleKHR(
3463 VkDevice device,
3464 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3465 HANDLE* pHandle)
3466{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003467 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003468 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003469 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003470 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003471 return vkGetFenceWin32HandleKHR_VkResult_return;
3472}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003473static VkResult dynCheck_entry_vkGetFenceWin32HandleKHR(
3474 VkDevice device,
3475 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3476 HANDLE* pHandle)
3477{
3478 auto resources = ResourceTracker::get();
3479 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3480 {
3481 sOnInvalidDynamicallyCheckedCall("vkGetFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3482 }
3483 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003484 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003485 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003486 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003487 return vkGetFenceWin32HandleKHR_VkResult_return;
3488}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003489#endif
3490#ifdef VK_KHR_external_fence_fd
3491static VkResult entry_vkImportFenceFdKHR(
3492 VkDevice device,
3493 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3494{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003495 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003496 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003497 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003498 auto resources = ResourceTracker::get();
3499 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003500 return vkImportFenceFdKHR_VkResult_return;
3501}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003502static VkResult dynCheck_entry_vkImportFenceFdKHR(
3503 VkDevice device,
3504 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3505{
3506 auto resources = ResourceTracker::get();
3507 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3508 {
3509 sOnInvalidDynamicallyCheckedCall("vkImportFenceFdKHR", "VK_KHR_external_fence_fd");
3510 }
3511 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003512 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003513 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
3514 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
3515 return vkImportFenceFdKHR_VkResult_return;
3516}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003517static VkResult entry_vkGetFenceFdKHR(
3518 VkDevice device,
3519 const VkFenceGetFdInfoKHR* pGetFdInfo,
3520 int* pFd)
3521{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003522 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003523 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003524 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003525 auto resources = ResourceTracker::get();
3526 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003527 return vkGetFenceFdKHR_VkResult_return;
3528}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003529static VkResult dynCheck_entry_vkGetFenceFdKHR(
3530 VkDevice device,
3531 const VkFenceGetFdInfoKHR* pGetFdInfo,
3532 int* pFd)
3533{
3534 auto resources = ResourceTracker::get();
3535 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3536 {
3537 sOnInvalidDynamicallyCheckedCall("vkGetFenceFdKHR", "VK_KHR_external_fence_fd");
3538 }
3539 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003540 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003541 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
3542 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3543 return vkGetFenceFdKHR_VkResult_return;
3544}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003545#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003546#ifdef VK_KHR_performance_query
3547static VkResult entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
3548 VkPhysicalDevice physicalDevice,
3549 uint32_t queueFamilyIndex,
3550 uint32_t* pCounterCount,
3551 VkPerformanceCounterKHR* pCounters,
3552 VkPerformanceCounterDescriptionKHR* pCounterDescriptions)
3553{
3554 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
3555 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3556 VkResult vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return = (VkResult)0;
3557 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, true /* do lock */);
3558 return vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return;
3559}
3560static void entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
3561 VkPhysicalDevice physicalDevice,
3562 const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo,
3563 uint32_t* pNumPasses)
3564{
3565 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
3566 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3567 vkEnc->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, true /* do lock */);
3568}
3569static VkResult entry_vkAcquireProfilingLockKHR(
3570 VkDevice device,
3571 const VkAcquireProfilingLockInfoKHR* pInfo)
3572{
3573 AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
3574 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3575 VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
3576 vkAcquireProfilingLockKHR_VkResult_return = vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
3577 return vkAcquireProfilingLockKHR_VkResult_return;
3578}
3579static VkResult dynCheck_entry_vkAcquireProfilingLockKHR(
3580 VkDevice device,
3581 const VkAcquireProfilingLockInfoKHR* pInfo)
3582{
3583 auto resources = ResourceTracker::get();
3584 if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query"))
3585 {
3586 sOnInvalidDynamicallyCheckedCall("vkAcquireProfilingLockKHR", "VK_KHR_performance_query");
3587 }
3588 AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
3589 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3590 VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
3591 vkAcquireProfilingLockKHR_VkResult_return = vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
3592 return vkAcquireProfilingLockKHR_VkResult_return;
3593}
3594static void entry_vkReleaseProfilingLockKHR(
3595 VkDevice device)
3596{
3597 AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
3598 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3599 vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
3600}
3601static void dynCheck_entry_vkReleaseProfilingLockKHR(
3602 VkDevice device)
3603{
3604 auto resources = ResourceTracker::get();
3605 if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query"))
3606 {
3607 sOnInvalidDynamicallyCheckedCall("vkReleaseProfilingLockKHR", "VK_KHR_performance_query");
3608 }
3609 AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
3610 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3611 vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
3612}
3613#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003614#ifdef VK_KHR_maintenance2
3615#endif
3616#ifdef VK_KHR_get_surface_capabilities2
3617static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
3618 VkPhysicalDevice physicalDevice,
3619 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3620 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
3621{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003622 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003623 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003624 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003625 vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003626 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
3627}
3628static VkResult entry_vkGetPhysicalDeviceSurfaceFormats2KHR(
3629 VkPhysicalDevice physicalDevice,
3630 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3631 uint32_t* pSurfaceFormatCount,
3632 VkSurfaceFormat2KHR* pSurfaceFormats)
3633{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003634 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003635 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003636 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003637 vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003638 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
3639}
3640#endif
3641#ifdef VK_KHR_variable_pointers
3642#endif
3643#ifdef VK_KHR_get_display_properties2
3644static VkResult entry_vkGetPhysicalDeviceDisplayProperties2KHR(
3645 VkPhysicalDevice physicalDevice,
3646 uint32_t* pPropertyCount,
3647 VkDisplayProperties2KHR* pProperties)
3648{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003649 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003650 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003651 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003652 vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003653 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
3654}
3655static VkResult entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
3656 VkPhysicalDevice physicalDevice,
3657 uint32_t* pPropertyCount,
3658 VkDisplayPlaneProperties2KHR* pProperties)
3659{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003660 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003661 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003662 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003663 vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003664 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
3665}
3666static VkResult entry_vkGetDisplayModeProperties2KHR(
3667 VkPhysicalDevice physicalDevice,
3668 VkDisplayKHR display,
3669 uint32_t* pPropertyCount,
3670 VkDisplayModeProperties2KHR* pProperties)
3671{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003672 AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003673 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003674 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003675 vkGetDisplayModeProperties2KHR_VkResult_return = vkEnc->vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003676 return vkGetDisplayModeProperties2KHR_VkResult_return;
3677}
3678static VkResult entry_vkGetDisplayPlaneCapabilities2KHR(
3679 VkPhysicalDevice physicalDevice,
3680 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
3681 VkDisplayPlaneCapabilities2KHR* pCapabilities)
3682{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003683 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003684 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003685 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003686 vkGetDisplayPlaneCapabilities2KHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003687 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
3688}
3689#endif
3690#ifdef VK_KHR_dedicated_allocation
3691#endif
3692#ifdef VK_KHR_storage_buffer_storage_class
3693#endif
3694#ifdef VK_KHR_relaxed_block_layout
3695#endif
3696#ifdef VK_KHR_get_memory_requirements2
3697static void entry_vkGetImageMemoryRequirements2KHR(
3698 VkDevice device,
3699 const VkImageMemoryRequirementsInfo2* pInfo,
3700 VkMemoryRequirements2* pMemoryRequirements)
3701{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003702 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003703 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003704 auto resources = ResourceTracker::get();
3705 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003706}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003707static void dynCheck_entry_vkGetImageMemoryRequirements2KHR(
3708 VkDevice device,
3709 const VkImageMemoryRequirementsInfo2* pInfo,
3710 VkMemoryRequirements2* pMemoryRequirements)
3711{
3712 auto resources = ResourceTracker::get();
3713 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3714 {
3715 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3716 }
3717 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003718 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003719 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3720}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003721static void entry_vkGetBufferMemoryRequirements2KHR(
3722 VkDevice device,
3723 const VkBufferMemoryRequirementsInfo2* pInfo,
3724 VkMemoryRequirements2* pMemoryRequirements)
3725{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003726 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003727 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003728 auto resources = ResourceTracker::get();
3729 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003730}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003731static void dynCheck_entry_vkGetBufferMemoryRequirements2KHR(
3732 VkDevice device,
3733 const VkBufferMemoryRequirementsInfo2* pInfo,
3734 VkMemoryRequirements2* pMemoryRequirements)
3735{
3736 auto resources = ResourceTracker::get();
3737 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3738 {
3739 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3740 }
3741 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003742 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003743 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3744}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003745static void entry_vkGetImageSparseMemoryRequirements2KHR(
3746 VkDevice device,
3747 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3748 uint32_t* pSparseMemoryRequirementCount,
3749 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3750{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003751 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003752 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003753 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003754}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003755static void dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR(
3756 VkDevice device,
3757 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3758 uint32_t* pSparseMemoryRequirementCount,
3759 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3760{
3761 auto resources = ResourceTracker::get();
3762 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3763 {
3764 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3765 }
3766 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003767 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003768 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003769}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003770#endif
3771#ifdef VK_KHR_image_format_list
3772#endif
3773#ifdef VK_KHR_sampler_ycbcr_conversion
3774static VkResult entry_vkCreateSamplerYcbcrConversionKHR(
3775 VkDevice device,
3776 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3777 const VkAllocationCallbacks* pAllocator,
3778 VkSamplerYcbcrConversion* pYcbcrConversion)
3779{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003780 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003781 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003782 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08003783 auto resources = ResourceTracker::get();
3784 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003785 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3786}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003787static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversionKHR(
3788 VkDevice device,
3789 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3790 const VkAllocationCallbacks* pAllocator,
3791 VkSamplerYcbcrConversion* pYcbcrConversion)
3792{
3793 auto resources = ResourceTracker::get();
3794 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3795 {
3796 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3797 }
3798 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003799 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003800 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
3801 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
3802 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3803}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003804static void entry_vkDestroySamplerYcbcrConversionKHR(
3805 VkDevice device,
3806 VkSamplerYcbcrConversion ycbcrConversion,
3807 const VkAllocationCallbacks* pAllocator)
3808{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003809 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003810 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07003811 auto resources = ResourceTracker::get();
3812 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003813}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003814static void dynCheck_entry_vkDestroySamplerYcbcrConversionKHR(
3815 VkDevice device,
3816 VkSamplerYcbcrConversion ycbcrConversion,
3817 const VkAllocationCallbacks* pAllocator)
3818{
3819 auto resources = ResourceTracker::get();
3820 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3821 {
3822 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3823 }
3824 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003825 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003826 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
3827}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003828#endif
3829#ifdef VK_KHR_bind_memory2
3830static VkResult entry_vkBindBufferMemory2KHR(
3831 VkDevice device,
3832 uint32_t bindInfoCount,
3833 const VkBindBufferMemoryInfo* pBindInfos)
3834{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003835 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003836 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003837 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003838 auto resources = ResourceTracker::get();
3839 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003840 return vkBindBufferMemory2KHR_VkResult_return;
3841}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003842static VkResult dynCheck_entry_vkBindBufferMemory2KHR(
3843 VkDevice device,
3844 uint32_t bindInfoCount,
3845 const VkBindBufferMemoryInfo* pBindInfos)
3846{
3847 auto resources = ResourceTracker::get();
3848 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3849 {
3850 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2KHR", "VK_KHR_bind_memory2");
3851 }
3852 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003853 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003854 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
3855 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3856 return vkBindBufferMemory2KHR_VkResult_return;
3857}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003858static VkResult entry_vkBindImageMemory2KHR(
3859 VkDevice device,
3860 uint32_t bindInfoCount,
3861 const VkBindImageMemoryInfo* pBindInfos)
3862{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003863 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003864 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003865 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003866 auto resources = ResourceTracker::get();
3867 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003868 return vkBindImageMemory2KHR_VkResult_return;
3869}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003870static VkResult dynCheck_entry_vkBindImageMemory2KHR(
3871 VkDevice device,
3872 uint32_t bindInfoCount,
3873 const VkBindImageMemoryInfo* pBindInfos)
3874{
3875 auto resources = ResourceTracker::get();
3876 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3877 {
3878 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2KHR", "VK_KHR_bind_memory2");
3879 }
3880 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003881 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003882 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
3883 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3884 return vkBindImageMemory2KHR_VkResult_return;
3885}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003886#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003887#ifdef VK_KHR_portability_subset
3888#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003889#ifdef VK_KHR_maintenance3
3890static void entry_vkGetDescriptorSetLayoutSupportKHR(
3891 VkDevice device,
3892 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3893 VkDescriptorSetLayoutSupport* pSupport)
3894{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003895 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003896 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003897 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003898}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003899static void dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR(
3900 VkDevice device,
3901 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3902 VkDescriptorSetLayoutSupport* pSupport)
3903{
3904 auto resources = ResourceTracker::get();
3905 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance3"))
3906 {
3907 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupportKHR", "VK_KHR_maintenance3");
3908 }
3909 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003910 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003911 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003912}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003913#endif
3914#ifdef VK_KHR_draw_indirect_count
3915static void entry_vkCmdDrawIndirectCountKHR(
3916 VkCommandBuffer commandBuffer,
3917 VkBuffer buffer,
3918 VkDeviceSize offset,
3919 VkBuffer countBuffer,
3920 VkDeviceSize countBufferOffset,
3921 uint32_t maxDrawCount,
3922 uint32_t stride)
3923{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003924 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003925 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003926 vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003927}
3928static void entry_vkCmdDrawIndexedIndirectCountKHR(
3929 VkCommandBuffer commandBuffer,
3930 VkBuffer buffer,
3931 VkDeviceSize offset,
3932 VkBuffer countBuffer,
3933 VkDeviceSize countBufferOffset,
3934 uint32_t maxDrawCount,
3935 uint32_t stride)
3936{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003937 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003938 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003939 vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003940}
3941#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003942#ifdef VK_KHR_shader_subgroup_extended_types
3943#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003944#ifdef VK_KHR_8bit_storage
3945#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003946#ifdef VK_KHR_shader_atomic_int64
3947#endif
3948#ifdef VK_KHR_shader_clock
3949#endif
3950#ifdef VK_KHR_driver_properties
3951#endif
3952#ifdef VK_KHR_shader_float_controls
3953#endif
3954#ifdef VK_KHR_depth_stencil_resolve
3955#endif
3956#ifdef VK_KHR_swapchain_mutable_format
3957#endif
3958#ifdef VK_KHR_timeline_semaphore
3959static VkResult entry_vkGetSemaphoreCounterValueKHR(
3960 VkDevice device,
3961 VkSemaphore semaphore,
3962 uint64_t* pValue)
3963{
3964 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
3965 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3966 VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
3967 vkGetSemaphoreCounterValueKHR_VkResult_return = vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
3968 return vkGetSemaphoreCounterValueKHR_VkResult_return;
3969}
3970static VkResult dynCheck_entry_vkGetSemaphoreCounterValueKHR(
3971 VkDevice device,
3972 VkSemaphore semaphore,
3973 uint64_t* pValue)
3974{
3975 auto resources = ResourceTracker::get();
3976 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
3977 {
3978 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreCounterValueKHR", "VK_KHR_timeline_semaphore");
3979 }
3980 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
3981 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3982 VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
3983 vkGetSemaphoreCounterValueKHR_VkResult_return = vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
3984 return vkGetSemaphoreCounterValueKHR_VkResult_return;
3985}
3986static VkResult entry_vkWaitSemaphoresKHR(
3987 VkDevice device,
3988 const VkSemaphoreWaitInfo* pWaitInfo,
3989 uint64_t timeout)
3990{
3991 AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
3992 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3993 VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
3994 vkWaitSemaphoresKHR_VkResult_return = vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
3995 return vkWaitSemaphoresKHR_VkResult_return;
3996}
3997static VkResult dynCheck_entry_vkWaitSemaphoresKHR(
3998 VkDevice device,
3999 const VkSemaphoreWaitInfo* pWaitInfo,
4000 uint64_t timeout)
4001{
4002 auto resources = ResourceTracker::get();
4003 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
4004 {
4005 sOnInvalidDynamicallyCheckedCall("vkWaitSemaphoresKHR", "VK_KHR_timeline_semaphore");
4006 }
4007 AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
4008 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4009 VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
4010 vkWaitSemaphoresKHR_VkResult_return = vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
4011 return vkWaitSemaphoresKHR_VkResult_return;
4012}
4013static VkResult entry_vkSignalSemaphoreKHR(
4014 VkDevice device,
4015 const VkSemaphoreSignalInfo* pSignalInfo)
4016{
4017 AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
4018 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4019 VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
4020 vkSignalSemaphoreKHR_VkResult_return = vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
4021 return vkSignalSemaphoreKHR_VkResult_return;
4022}
4023static VkResult dynCheck_entry_vkSignalSemaphoreKHR(
4024 VkDevice device,
4025 const VkSemaphoreSignalInfo* pSignalInfo)
4026{
4027 auto resources = ResourceTracker::get();
4028 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
4029 {
4030 sOnInvalidDynamicallyCheckedCall("vkSignalSemaphoreKHR", "VK_KHR_timeline_semaphore");
4031 }
4032 AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
4033 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4034 VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
4035 vkSignalSemaphoreKHR_VkResult_return = vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
4036 return vkSignalSemaphoreKHR_VkResult_return;
4037}
4038#endif
4039#ifdef VK_KHR_vulkan_memory_model
4040#endif
4041#ifdef VK_KHR_shader_terminate_invocation
4042#endif
4043#ifdef VK_KHR_fragment_shading_rate
4044static VkResult entry_vkGetPhysicalDeviceFragmentShadingRatesKHR(
4045 VkPhysicalDevice physicalDevice,
4046 uint32_t* pFragmentShadingRateCount,
4047 VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates)
4048{
4049 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFragmentShadingRatesKHR");
4050 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4051 VkResult vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return = (VkResult)0;
4052 vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, true /* do lock */);
4053 return vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return;
4054}
4055static void entry_vkCmdSetFragmentShadingRateKHR(
4056 VkCommandBuffer commandBuffer,
4057 const VkExtent2D* pFragmentSize,
4058 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
4059{
4060 AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateKHR");
4061 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4062 vkEnc->vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, true /* do lock */);
4063}
4064#endif
4065#ifdef VK_KHR_spirv_1_4
4066#endif
4067#ifdef VK_KHR_surface_protected_capabilities
4068#endif
4069#ifdef VK_KHR_separate_depth_stencil_layouts
4070#endif
4071#ifdef VK_KHR_uniform_buffer_standard_layout
4072#endif
4073#ifdef VK_KHR_buffer_device_address
4074static VkDeviceAddress entry_vkGetBufferDeviceAddressKHR(
4075 VkDevice device,
4076 const VkBufferDeviceAddressInfo* pInfo)
4077{
4078 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
4079 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4080 VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
4081 vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
4082 return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
4083}
4084static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressKHR(
4085 VkDevice device,
4086 const VkBufferDeviceAddressInfo* pInfo)
4087{
4088 auto resources = ResourceTracker::get();
4089 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4090 {
4091 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressKHR", "VK_KHR_buffer_device_address");
4092 }
4093 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
4094 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4095 VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
4096 vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
4097 return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
4098}
4099static uint64_t entry_vkGetBufferOpaqueCaptureAddressKHR(
4100 VkDevice device,
4101 const VkBufferDeviceAddressInfo* pInfo)
4102{
4103 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
4104 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4105 uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4106 vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4107 return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
4108}
4109static uint64_t dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR(
4110 VkDevice device,
4111 const VkBufferDeviceAddressInfo* pInfo)
4112{
4113 auto resources = ResourceTracker::get();
4114 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4115 {
4116 sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureAddressKHR", "VK_KHR_buffer_device_address");
4117 }
4118 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
4119 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4120 uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4121 vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4122 return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
4123}
4124static uint64_t entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
4125 VkDevice device,
4126 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
4127{
4128 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
4129 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4130 uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4131 vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4132 return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
4133}
4134static uint64_t dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
4135 VkDevice device,
4136 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
4137{
4138 auto resources = ResourceTracker::get();
4139 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4140 {
4141 sOnInvalidDynamicallyCheckedCall("vkGetDeviceMemoryOpaqueCaptureAddressKHR", "VK_KHR_buffer_device_address");
4142 }
4143 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
4144 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4145 uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4146 vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4147 return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
4148}
4149#endif
4150#ifdef VK_KHR_deferred_host_operations
4151static VkResult entry_vkCreateDeferredOperationKHR(
4152 VkDevice device,
4153 const VkAllocationCallbacks* pAllocator,
4154 VkDeferredOperationKHR* pDeferredOperation)
4155{
4156 AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
4157 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4158 VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
4159 vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, true /* do lock */);
4160 return vkCreateDeferredOperationKHR_VkResult_return;
4161}
4162static VkResult dynCheck_entry_vkCreateDeferredOperationKHR(
4163 VkDevice device,
4164 const VkAllocationCallbacks* pAllocator,
4165 VkDeferredOperationKHR* pDeferredOperation)
4166{
4167 auto resources = ResourceTracker::get();
4168 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4169 {
4170 sOnInvalidDynamicallyCheckedCall("vkCreateDeferredOperationKHR", "VK_KHR_deferred_host_operations");
4171 }
4172 AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
4173 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4174 VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
4175 vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, true /* do lock */);
4176 return vkCreateDeferredOperationKHR_VkResult_return;
4177}
4178static void entry_vkDestroyDeferredOperationKHR(
4179 VkDevice device,
4180 VkDeferredOperationKHR operation,
4181 const VkAllocationCallbacks* pAllocator)
4182{
4183 AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
4184 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4185 vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
4186}
4187static void dynCheck_entry_vkDestroyDeferredOperationKHR(
4188 VkDevice device,
4189 VkDeferredOperationKHR operation,
4190 const VkAllocationCallbacks* pAllocator)
4191{
4192 auto resources = ResourceTracker::get();
4193 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4194 {
4195 sOnInvalidDynamicallyCheckedCall("vkDestroyDeferredOperationKHR", "VK_KHR_deferred_host_operations");
4196 }
4197 AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
4198 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4199 vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
4200}
4201static uint32_t entry_vkGetDeferredOperationMaxConcurrencyKHR(
4202 VkDevice device,
4203 VkDeferredOperationKHR operation)
4204{
4205 AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
4206 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4207 uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
4208 vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
4209 return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
4210}
4211static uint32_t dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR(
4212 VkDevice device,
4213 VkDeferredOperationKHR operation)
4214{
4215 auto resources = ResourceTracker::get();
4216 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4217 {
4218 sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationMaxConcurrencyKHR", "VK_KHR_deferred_host_operations");
4219 }
4220 AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
4221 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4222 uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
4223 vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
4224 return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
4225}
4226static VkResult entry_vkGetDeferredOperationResultKHR(
4227 VkDevice device,
4228 VkDeferredOperationKHR operation)
4229{
4230 AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
4231 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4232 VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
4233 vkGetDeferredOperationResultKHR_VkResult_return = vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
4234 return vkGetDeferredOperationResultKHR_VkResult_return;
4235}
4236static VkResult dynCheck_entry_vkGetDeferredOperationResultKHR(
4237 VkDevice device,
4238 VkDeferredOperationKHR operation)
4239{
4240 auto resources = ResourceTracker::get();
4241 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4242 {
4243 sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationResultKHR", "VK_KHR_deferred_host_operations");
4244 }
4245 AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
4246 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4247 VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
4248 vkGetDeferredOperationResultKHR_VkResult_return = vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
4249 return vkGetDeferredOperationResultKHR_VkResult_return;
4250}
4251static VkResult entry_vkDeferredOperationJoinKHR(
4252 VkDevice device,
4253 VkDeferredOperationKHR operation)
4254{
4255 AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
4256 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4257 VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
4258 vkDeferredOperationJoinKHR_VkResult_return = vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
4259 return vkDeferredOperationJoinKHR_VkResult_return;
4260}
4261static VkResult dynCheck_entry_vkDeferredOperationJoinKHR(
4262 VkDevice device,
4263 VkDeferredOperationKHR operation)
4264{
4265 auto resources = ResourceTracker::get();
4266 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4267 {
4268 sOnInvalidDynamicallyCheckedCall("vkDeferredOperationJoinKHR", "VK_KHR_deferred_host_operations");
4269 }
4270 AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
4271 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4272 VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
4273 vkDeferredOperationJoinKHR_VkResult_return = vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
4274 return vkDeferredOperationJoinKHR_VkResult_return;
4275}
4276#endif
4277#ifdef VK_KHR_pipeline_executable_properties
4278static VkResult entry_vkGetPipelineExecutablePropertiesKHR(
4279 VkDevice device,
4280 const VkPipelineInfoKHR* pPipelineInfo,
4281 uint32_t* pExecutableCount,
4282 VkPipelineExecutablePropertiesKHR* pProperties)
4283{
4284 AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
4285 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4286 VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
4287 vkGetPipelineExecutablePropertiesKHR_VkResult_return = vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, true /* do lock */);
4288 return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
4289}
4290static VkResult dynCheck_entry_vkGetPipelineExecutablePropertiesKHR(
4291 VkDevice device,
4292 const VkPipelineInfoKHR* pPipelineInfo,
4293 uint32_t* pExecutableCount,
4294 VkPipelineExecutablePropertiesKHR* pProperties)
4295{
4296 auto resources = ResourceTracker::get();
4297 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4298 {
4299 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutablePropertiesKHR", "VK_KHR_pipeline_executable_properties");
4300 }
4301 AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
4302 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4303 VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
4304 vkGetPipelineExecutablePropertiesKHR_VkResult_return = vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, true /* do lock */);
4305 return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
4306}
4307static VkResult entry_vkGetPipelineExecutableStatisticsKHR(
4308 VkDevice device,
4309 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4310 uint32_t* pStatisticCount,
4311 VkPipelineExecutableStatisticKHR* pStatistics)
4312{
4313 AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
4314 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4315 VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
4316 vkGetPipelineExecutableStatisticsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, true /* do lock */);
4317 return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
4318}
4319static VkResult dynCheck_entry_vkGetPipelineExecutableStatisticsKHR(
4320 VkDevice device,
4321 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4322 uint32_t* pStatisticCount,
4323 VkPipelineExecutableStatisticKHR* pStatistics)
4324{
4325 auto resources = ResourceTracker::get();
4326 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4327 {
4328 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableStatisticsKHR", "VK_KHR_pipeline_executable_properties");
4329 }
4330 AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
4331 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4332 VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
4333 vkGetPipelineExecutableStatisticsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, true /* do lock */);
4334 return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
4335}
4336static VkResult entry_vkGetPipelineExecutableInternalRepresentationsKHR(
4337 VkDevice device,
4338 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4339 uint32_t* pInternalRepresentationCount,
4340 VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
4341{
4342 AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
4343 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4344 VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
4345 vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, true /* do lock */);
4346 return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
4347}
4348static VkResult dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR(
4349 VkDevice device,
4350 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4351 uint32_t* pInternalRepresentationCount,
4352 VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
4353{
4354 auto resources = ResourceTracker::get();
4355 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4356 {
4357 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableInternalRepresentationsKHR", "VK_KHR_pipeline_executable_properties");
4358 }
4359 AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
4360 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4361 VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
4362 vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, true /* do lock */);
4363 return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
4364}
4365#endif
4366#ifdef VK_KHR_pipeline_library
4367#endif
4368#ifdef VK_KHR_shader_non_semantic_info
4369#endif
4370#ifdef VK_KHR_copy_commands2
4371static void entry_vkCmdCopyBuffer2KHR(
4372 VkCommandBuffer commandBuffer,
4373 const VkCopyBufferInfo2KHR* pCopyBufferInfo)
4374{
4375 AEMU_SCOPED_TRACE("vkCmdCopyBuffer2KHR");
4376 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4377 vkEnc->vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, true /* do lock */);
4378}
4379static void entry_vkCmdCopyImage2KHR(
4380 VkCommandBuffer commandBuffer,
4381 const VkCopyImageInfo2KHR* pCopyImageInfo)
4382{
4383 AEMU_SCOPED_TRACE("vkCmdCopyImage2KHR");
4384 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4385 vkEnc->vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, true /* do lock */);
4386}
4387static void entry_vkCmdCopyBufferToImage2KHR(
4388 VkCommandBuffer commandBuffer,
4389 const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo)
4390{
4391 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage2KHR");
4392 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4393 vkEnc->vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, true /* do lock */);
4394}
4395static void entry_vkCmdCopyImageToBuffer2KHR(
4396 VkCommandBuffer commandBuffer,
4397 const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo)
4398{
4399 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer2KHR");
4400 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4401 vkEnc->vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, true /* do lock */);
4402}
4403static void entry_vkCmdBlitImage2KHR(
4404 VkCommandBuffer commandBuffer,
4405 const VkBlitImageInfo2KHR* pBlitImageInfo)
4406{
4407 AEMU_SCOPED_TRACE("vkCmdBlitImage2KHR");
4408 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4409 vkEnc->vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, true /* do lock */);
4410}
4411static void entry_vkCmdResolveImage2KHR(
4412 VkCommandBuffer commandBuffer,
4413 const VkResolveImageInfo2KHR* pResolveImageInfo)
4414{
4415 AEMU_SCOPED_TRACE("vkCmdResolveImage2KHR");
4416 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4417 vkEnc->vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, true /* do lock */);
4418}
Lingfeng Yang4c056b22020-07-02 11:43:57 -07004419#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08004420#ifdef VK_ANDROID_native_buffer
4421static VkResult entry_vkGetSwapchainGrallocUsageANDROID(
4422 VkDevice device,
4423 VkFormat format,
4424 VkImageUsageFlags imageUsage,
4425 int* grallocUsage)
4426{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004427 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004428 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang808a6312018-11-13 21:06:15 -08004429 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004430 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004431 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
4432}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004433static VkResult dynCheck_entry_vkGetSwapchainGrallocUsageANDROID(
4434 VkDevice device,
4435 VkFormat format,
4436 VkImageUsageFlags imageUsage,
4437 int* grallocUsage)
4438{
4439 auto resources = ResourceTracker::get();
4440 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
4441 {
4442 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainGrallocUsageANDROID", "VK_ANDROID_native_buffer");
4443 }
4444 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004445 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004446 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004447 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004448 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
4449}
Lingfeng Yang808a6312018-11-13 21:06:15 -08004450static VkResult entry_vkAcquireImageANDROID(
4451 VkDevice device,
4452 VkImage image,
4453 int nativeFenceFd,
4454 VkSemaphore semaphore,
4455 VkFence fence)
4456{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004457 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004458 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang808a6312018-11-13 21:06:15 -08004459 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004460 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004461 return vkAcquireImageANDROID_VkResult_return;
4462}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004463static VkResult dynCheck_entry_vkAcquireImageANDROID(
4464 VkDevice device,
4465 VkImage image,
4466 int nativeFenceFd,
4467 VkSemaphore semaphore,
4468 VkFence fence)
4469{
4470 auto resources = ResourceTracker::get();
4471 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
4472 {
4473 sOnInvalidDynamicallyCheckedCall("vkAcquireImageANDROID", "VK_ANDROID_native_buffer");
4474 }
4475 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004476 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004477 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004478 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004479 return vkAcquireImageANDROID_VkResult_return;
4480}
Lingfeng Yang808a6312018-11-13 21:06:15 -08004481static VkResult entry_vkQueueSignalReleaseImageANDROID(
4482 VkQueue queue,
4483 uint32_t waitSemaphoreCount,
4484 const VkSemaphore* pWaitSemaphores,
4485 VkImage image,
4486 int* pNativeFenceFd)
4487{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004488 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004489 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004490 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004491 vkQueueSignalReleaseImageANDROID_VkResult_return = vkEnc->vkQueueSignalReleaseImageANDROID(queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004492 return vkQueueSignalReleaseImageANDROID_VkResult_return;
4493}
4494#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004495#ifdef VK_EXT_debug_report
4496static VkResult entry_vkCreateDebugReportCallbackEXT(
4497 VkInstance instance,
4498 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
4499 const VkAllocationCallbacks* pAllocator,
4500 VkDebugReportCallbackEXT* pCallback)
4501{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004502 AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004503 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004504 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004505 vkCreateDebugReportCallbackEXT_VkResult_return = vkEnc->vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004506 return vkCreateDebugReportCallbackEXT_VkResult_return;
4507}
4508static void entry_vkDestroyDebugReportCallbackEXT(
4509 VkInstance instance,
4510 VkDebugReportCallbackEXT callback,
4511 const VkAllocationCallbacks* pAllocator)
4512{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004513 AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004514 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004515 vkEnc->vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004516}
4517static void entry_vkDebugReportMessageEXT(
4518 VkInstance instance,
4519 VkDebugReportFlagsEXT flags,
4520 VkDebugReportObjectTypeEXT objectType,
4521 uint64_t object,
4522 size_t location,
4523 int32_t messageCode,
4524 const char* pLayerPrefix,
4525 const char* pMessage)
4526{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004527 AEMU_SCOPED_TRACE("vkDebugReportMessageEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004528 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004529 vkEnc->vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004530}
4531#endif
4532#ifdef VK_NV_glsl_shader
4533#endif
4534#ifdef VK_EXT_depth_range_unrestricted
4535#endif
4536#ifdef VK_IMG_filter_cubic
4537#endif
4538#ifdef VK_AMD_rasterization_order
4539#endif
4540#ifdef VK_AMD_shader_trinary_minmax
4541#endif
4542#ifdef VK_AMD_shader_explicit_vertex_parameter
4543#endif
4544#ifdef VK_EXT_debug_marker
4545static VkResult entry_vkDebugMarkerSetObjectTagEXT(
4546 VkDevice device,
4547 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
4548{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004549 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004550 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004551 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004552 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004553 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
4554}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004555static VkResult dynCheck_entry_vkDebugMarkerSetObjectTagEXT(
4556 VkDevice device,
4557 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
4558{
4559 auto resources = ResourceTracker::get();
4560 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
4561 {
4562 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectTagEXT", "VK_EXT_debug_marker");
4563 }
4564 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004565 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004566 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004567 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004568 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
4569}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004570static VkResult entry_vkDebugMarkerSetObjectNameEXT(
4571 VkDevice device,
4572 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
4573{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004574 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004575 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004576 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004577 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004578 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
4579}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004580static VkResult dynCheck_entry_vkDebugMarkerSetObjectNameEXT(
4581 VkDevice device,
4582 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
4583{
4584 auto resources = ResourceTracker::get();
4585 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
4586 {
4587 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectNameEXT", "VK_EXT_debug_marker");
4588 }
4589 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004590 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004591 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004592 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004593 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
4594}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004595static void entry_vkCmdDebugMarkerBeginEXT(
4596 VkCommandBuffer commandBuffer,
4597 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
4598{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004599 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004600 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004601 vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004602}
4603static void entry_vkCmdDebugMarkerEndEXT(
4604 VkCommandBuffer commandBuffer)
4605{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004606 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004607 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004608 vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004609}
4610static void entry_vkCmdDebugMarkerInsertEXT(
4611 VkCommandBuffer commandBuffer,
4612 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
4613{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004614 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004615 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004616 vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004617}
4618#endif
4619#ifdef VK_AMD_gcn_shader
4620#endif
4621#ifdef VK_NV_dedicated_allocation
4622#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004623#ifdef VK_EXT_transform_feedback
4624static void entry_vkCmdBindTransformFeedbackBuffersEXT(
4625 VkCommandBuffer commandBuffer,
4626 uint32_t firstBinding,
4627 uint32_t bindingCount,
4628 const VkBuffer* pBuffers,
4629 const VkDeviceSize* pOffsets,
4630 const VkDeviceSize* pSizes)
4631{
4632 AEMU_SCOPED_TRACE("vkCmdBindTransformFeedbackBuffersEXT");
4633 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4634 vkEnc->vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, true /* do lock */);
4635}
4636static void entry_vkCmdBeginTransformFeedbackEXT(
4637 VkCommandBuffer commandBuffer,
4638 uint32_t firstCounterBuffer,
4639 uint32_t counterBufferCount,
4640 const VkBuffer* pCounterBuffers,
4641 const VkDeviceSize* pCounterBufferOffsets)
4642{
4643 AEMU_SCOPED_TRACE("vkCmdBeginTransformFeedbackEXT");
4644 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4645 vkEnc->vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
4646}
4647static void entry_vkCmdEndTransformFeedbackEXT(
4648 VkCommandBuffer commandBuffer,
4649 uint32_t firstCounterBuffer,
4650 uint32_t counterBufferCount,
4651 const VkBuffer* pCounterBuffers,
4652 const VkDeviceSize* pCounterBufferOffsets)
4653{
4654 AEMU_SCOPED_TRACE("vkCmdEndTransformFeedbackEXT");
4655 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4656 vkEnc->vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
4657}
4658static void entry_vkCmdBeginQueryIndexedEXT(
4659 VkCommandBuffer commandBuffer,
4660 VkQueryPool queryPool,
4661 uint32_t query,
4662 VkQueryControlFlags flags,
4663 uint32_t index)
4664{
4665 AEMU_SCOPED_TRACE("vkCmdBeginQueryIndexedEXT");
4666 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4667 vkEnc->vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, true /* do lock */);
4668}
4669static void entry_vkCmdEndQueryIndexedEXT(
4670 VkCommandBuffer commandBuffer,
4671 VkQueryPool queryPool,
4672 uint32_t query,
4673 uint32_t index)
4674{
4675 AEMU_SCOPED_TRACE("vkCmdEndQueryIndexedEXT");
4676 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4677 vkEnc->vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, true /* do lock */);
4678}
4679static void entry_vkCmdDrawIndirectByteCountEXT(
4680 VkCommandBuffer commandBuffer,
4681 uint32_t instanceCount,
4682 uint32_t firstInstance,
4683 VkBuffer counterBuffer,
4684 VkDeviceSize counterBufferOffset,
4685 uint32_t counterOffset,
4686 uint32_t vertexStride)
4687{
4688 AEMU_SCOPED_TRACE("vkCmdDrawIndirectByteCountEXT");
4689 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4690 vkEnc->vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, true /* do lock */);
4691}
4692#endif
4693#ifdef VK_NVX_image_view_handle
4694static uint32_t entry_vkGetImageViewHandleNVX(
4695 VkDevice device,
4696 const VkImageViewHandleInfoNVX* pInfo)
4697{
4698 AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
4699 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4700 uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
4701 vkGetImageViewHandleNVX_uint32_t_return = vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
4702 return vkGetImageViewHandleNVX_uint32_t_return;
4703}
4704static uint32_t dynCheck_entry_vkGetImageViewHandleNVX(
4705 VkDevice device,
4706 const VkImageViewHandleInfoNVX* pInfo)
4707{
4708 auto resources = ResourceTracker::get();
4709 if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle"))
4710 {
4711 sOnInvalidDynamicallyCheckedCall("vkGetImageViewHandleNVX", "VK_NVX_image_view_handle");
4712 }
4713 AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
4714 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4715 uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
4716 vkGetImageViewHandleNVX_uint32_t_return = vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
4717 return vkGetImageViewHandleNVX_uint32_t_return;
4718}
4719static VkResult entry_vkGetImageViewAddressNVX(
4720 VkDevice device,
4721 VkImageView imageView,
4722 VkImageViewAddressPropertiesNVX* pProperties)
4723{
4724 AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
4725 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4726 VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
4727 vkGetImageViewAddressNVX_VkResult_return = vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
4728 return vkGetImageViewAddressNVX_VkResult_return;
4729}
4730static VkResult dynCheck_entry_vkGetImageViewAddressNVX(
4731 VkDevice device,
4732 VkImageView imageView,
4733 VkImageViewAddressPropertiesNVX* pProperties)
4734{
4735 auto resources = ResourceTracker::get();
4736 if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle"))
4737 {
4738 sOnInvalidDynamicallyCheckedCall("vkGetImageViewAddressNVX", "VK_NVX_image_view_handle");
4739 }
4740 AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
4741 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4742 VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
4743 vkGetImageViewAddressNVX_VkResult_return = vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
4744 return vkGetImageViewAddressNVX_VkResult_return;
4745}
4746#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004747#ifdef VK_AMD_draw_indirect_count
4748static void entry_vkCmdDrawIndirectCountAMD(
4749 VkCommandBuffer commandBuffer,
4750 VkBuffer buffer,
4751 VkDeviceSize offset,
4752 VkBuffer countBuffer,
4753 VkDeviceSize countBufferOffset,
4754 uint32_t maxDrawCount,
4755 uint32_t stride)
4756{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004757 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004758 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004759 vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004760}
4761static void entry_vkCmdDrawIndexedIndirectCountAMD(
4762 VkCommandBuffer commandBuffer,
4763 VkBuffer buffer,
4764 VkDeviceSize offset,
4765 VkBuffer countBuffer,
4766 VkDeviceSize countBufferOffset,
4767 uint32_t maxDrawCount,
4768 uint32_t stride)
4769{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004770 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004771 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004772 vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004773}
4774#endif
4775#ifdef VK_AMD_negative_viewport_height
4776#endif
4777#ifdef VK_AMD_gpu_shader_half_float
4778#endif
4779#ifdef VK_AMD_shader_ballot
4780#endif
4781#ifdef VK_AMD_texture_gather_bias_lod
4782#endif
4783#ifdef VK_AMD_shader_info
4784static VkResult entry_vkGetShaderInfoAMD(
4785 VkDevice device,
4786 VkPipeline pipeline,
4787 VkShaderStageFlagBits shaderStage,
4788 VkShaderInfoTypeAMD infoType,
4789 size_t* pInfoSize,
4790 void* pInfo)
4791{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004792 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004793 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004794 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004795 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004796 return vkGetShaderInfoAMD_VkResult_return;
4797}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004798static VkResult dynCheck_entry_vkGetShaderInfoAMD(
4799 VkDevice device,
4800 VkPipeline pipeline,
4801 VkShaderStageFlagBits shaderStage,
4802 VkShaderInfoTypeAMD infoType,
4803 size_t* pInfoSize,
4804 void* pInfo)
4805{
4806 auto resources = ResourceTracker::get();
4807 if (!resources->hasDeviceExtension(device, "VK_AMD_shader_info"))
4808 {
4809 sOnInvalidDynamicallyCheckedCall("vkGetShaderInfoAMD", "VK_AMD_shader_info");
4810 }
4811 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004812 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004813 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004814 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004815 return vkGetShaderInfoAMD_VkResult_return;
4816}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004817#endif
4818#ifdef VK_AMD_shader_image_load_store_lod
4819#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004820#ifdef VK_GGP_stream_descriptor_surface
4821static VkResult entry_vkCreateStreamDescriptorSurfaceGGP(
4822 VkInstance instance,
4823 const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
4824 const VkAllocationCallbacks* pAllocator,
4825 VkSurfaceKHR* pSurface)
4826{
4827 AEMU_SCOPED_TRACE("vkCreateStreamDescriptorSurfaceGGP");
4828 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4829 VkResult vkCreateStreamDescriptorSurfaceGGP_VkResult_return = (VkResult)0;
4830 vkCreateStreamDescriptorSurfaceGGP_VkResult_return = vkEnc->vkCreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
4831 return vkCreateStreamDescriptorSurfaceGGP_VkResult_return;
4832}
4833#endif
4834#ifdef VK_NV_corner_sampled_image
4835#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004836#ifdef VK_IMG_format_pvrtc
4837#endif
4838#ifdef VK_NV_external_memory_capabilities
4839static VkResult entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
4840 VkPhysicalDevice physicalDevice,
4841 VkFormat format,
4842 VkImageType type,
4843 VkImageTiling tiling,
4844 VkImageUsageFlags usage,
4845 VkImageCreateFlags flags,
4846 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
4847 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
4848{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004849 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004850 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004851 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004852 vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004853 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
4854}
4855#endif
4856#ifdef VK_NV_external_memory
4857#endif
4858#ifdef VK_NV_external_memory_win32
4859static VkResult entry_vkGetMemoryWin32HandleNV(
4860 VkDevice device,
4861 VkDeviceMemory memory,
4862 VkExternalMemoryHandleTypeFlagsNV handleType,
4863 HANDLE* pHandle)
4864{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004865 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004866 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004867 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004868 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004869 return vkGetMemoryWin32HandleNV_VkResult_return;
4870}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004871static VkResult dynCheck_entry_vkGetMemoryWin32HandleNV(
4872 VkDevice device,
4873 VkDeviceMemory memory,
4874 VkExternalMemoryHandleTypeFlagsNV handleType,
4875 HANDLE* pHandle)
4876{
4877 auto resources = ResourceTracker::get();
4878 if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_win32"))
4879 {
4880 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleNV", "VK_NV_external_memory_win32");
4881 }
4882 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004883 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004884 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004885 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004886 return vkGetMemoryWin32HandleNV_VkResult_return;
4887}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004888#endif
4889#ifdef VK_NV_win32_keyed_mutex
4890#endif
4891#ifdef VK_EXT_validation_flags
4892#endif
4893#ifdef VK_NN_vi_surface
4894static VkResult entry_vkCreateViSurfaceNN(
4895 VkInstance instance,
4896 const VkViSurfaceCreateInfoNN* pCreateInfo,
4897 const VkAllocationCallbacks* pAllocator,
4898 VkSurfaceKHR* pSurface)
4899{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004900 AEMU_SCOPED_TRACE("vkCreateViSurfaceNN");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004901 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004902 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004903 vkCreateViSurfaceNN_VkResult_return = vkEnc->vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004904 return vkCreateViSurfaceNN_VkResult_return;
4905}
4906#endif
4907#ifdef VK_EXT_shader_subgroup_ballot
4908#endif
4909#ifdef VK_EXT_shader_subgroup_vote
4910#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004911#ifdef VK_EXT_texture_compression_astc_hdr
4912#endif
4913#ifdef VK_EXT_astc_decode_mode
4914#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004915#ifdef VK_EXT_conditional_rendering
4916static void entry_vkCmdBeginConditionalRenderingEXT(
4917 VkCommandBuffer commandBuffer,
4918 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
4919{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004920 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004921 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004922 vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004923}
4924static void entry_vkCmdEndConditionalRenderingEXT(
4925 VkCommandBuffer commandBuffer)
4926{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004927 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004928 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004929 vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004930}
4931#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004932#ifdef VK_NV_clip_space_w_scaling
4933static void entry_vkCmdSetViewportWScalingNV(
4934 VkCommandBuffer commandBuffer,
4935 uint32_t firstViewport,
4936 uint32_t viewportCount,
4937 const VkViewportWScalingNV* pViewportWScalings)
4938{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004939 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004940 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004941 vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004942}
4943#endif
4944#ifdef VK_EXT_direct_mode_display
4945static VkResult entry_vkReleaseDisplayEXT(
4946 VkPhysicalDevice physicalDevice,
4947 VkDisplayKHR display)
4948{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004949 AEMU_SCOPED_TRACE("vkReleaseDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004950 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004951 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004952 vkReleaseDisplayEXT_VkResult_return = vkEnc->vkReleaseDisplayEXT(physicalDevice, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004953 return vkReleaseDisplayEXT_VkResult_return;
4954}
4955#endif
4956#ifdef VK_EXT_acquire_xlib_display
4957static VkResult entry_vkAcquireXlibDisplayEXT(
4958 VkPhysicalDevice physicalDevice,
4959 Display* dpy,
4960 VkDisplayKHR display)
4961{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004962 AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004963 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004964 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004965 vkAcquireXlibDisplayEXT_VkResult_return = vkEnc->vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004966 return vkAcquireXlibDisplayEXT_VkResult_return;
4967}
4968static VkResult entry_vkGetRandROutputDisplayEXT(
4969 VkPhysicalDevice physicalDevice,
4970 Display* dpy,
4971 RROutput rrOutput,
4972 VkDisplayKHR* pDisplay)
4973{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004974 AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004975 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004976 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004977 vkGetRandROutputDisplayEXT_VkResult_return = vkEnc->vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004978 return vkGetRandROutputDisplayEXT_VkResult_return;
4979}
4980#endif
4981#ifdef VK_EXT_display_surface_counter
4982static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
4983 VkPhysicalDevice physicalDevice,
4984 VkSurfaceKHR surface,
4985 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
4986{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004987 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004988 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004989 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004990 vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004991 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
4992}
4993#endif
4994#ifdef VK_EXT_display_control
4995static VkResult entry_vkDisplayPowerControlEXT(
4996 VkDevice device,
4997 VkDisplayKHR display,
4998 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
4999{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005000 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005001 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005002 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005003 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005004 return vkDisplayPowerControlEXT_VkResult_return;
5005}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005006static VkResult dynCheck_entry_vkDisplayPowerControlEXT(
5007 VkDevice device,
5008 VkDisplayKHR display,
5009 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
5010{
5011 auto resources = ResourceTracker::get();
5012 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5013 {
5014 sOnInvalidDynamicallyCheckedCall("vkDisplayPowerControlEXT", "VK_EXT_display_control");
5015 }
5016 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005017 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005018 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005019 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005020 return vkDisplayPowerControlEXT_VkResult_return;
5021}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005022static VkResult entry_vkRegisterDeviceEventEXT(
5023 VkDevice device,
5024 const VkDeviceEventInfoEXT* pDeviceEventInfo,
5025 const VkAllocationCallbacks* pAllocator,
5026 VkFence* pFence)
5027{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005028 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005029 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005030 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005031 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005032 return vkRegisterDeviceEventEXT_VkResult_return;
5033}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005034static VkResult dynCheck_entry_vkRegisterDeviceEventEXT(
5035 VkDevice device,
5036 const VkDeviceEventInfoEXT* pDeviceEventInfo,
5037 const VkAllocationCallbacks* pAllocator,
5038 VkFence* pFence)
5039{
5040 auto resources = ResourceTracker::get();
5041 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5042 {
5043 sOnInvalidDynamicallyCheckedCall("vkRegisterDeviceEventEXT", "VK_EXT_display_control");
5044 }
5045 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005046 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005047 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005048 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005049 return vkRegisterDeviceEventEXT_VkResult_return;
5050}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005051static VkResult entry_vkRegisterDisplayEventEXT(
5052 VkDevice device,
5053 VkDisplayKHR display,
5054 const VkDisplayEventInfoEXT* pDisplayEventInfo,
5055 const VkAllocationCallbacks* pAllocator,
5056 VkFence* pFence)
5057{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005058 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005059 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005060 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005061 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005062 return vkRegisterDisplayEventEXT_VkResult_return;
5063}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005064static VkResult dynCheck_entry_vkRegisterDisplayEventEXT(
5065 VkDevice device,
5066 VkDisplayKHR display,
5067 const VkDisplayEventInfoEXT* pDisplayEventInfo,
5068 const VkAllocationCallbacks* pAllocator,
5069 VkFence* pFence)
5070{
5071 auto resources = ResourceTracker::get();
5072 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5073 {
5074 sOnInvalidDynamicallyCheckedCall("vkRegisterDisplayEventEXT", "VK_EXT_display_control");
5075 }
5076 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005077 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005078 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005079 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005080 return vkRegisterDisplayEventEXT_VkResult_return;
5081}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005082static VkResult entry_vkGetSwapchainCounterEXT(
5083 VkDevice device,
5084 VkSwapchainKHR swapchain,
5085 VkSurfaceCounterFlagBitsEXT counter,
5086 uint64_t* pCounterValue)
5087{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005088 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005089 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005090 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005091 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005092 return vkGetSwapchainCounterEXT_VkResult_return;
5093}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005094static VkResult dynCheck_entry_vkGetSwapchainCounterEXT(
5095 VkDevice device,
5096 VkSwapchainKHR swapchain,
5097 VkSurfaceCounterFlagBitsEXT counter,
5098 uint64_t* pCounterValue)
5099{
5100 auto resources = ResourceTracker::get();
5101 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5102 {
5103 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainCounterEXT", "VK_EXT_display_control");
5104 }
5105 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005106 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005107 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005108 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005109 return vkGetSwapchainCounterEXT_VkResult_return;
5110}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005111#endif
5112#ifdef VK_GOOGLE_display_timing
5113static VkResult entry_vkGetRefreshCycleDurationGOOGLE(
5114 VkDevice device,
5115 VkSwapchainKHR swapchain,
5116 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
5117{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005118 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005119 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005120 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005121 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005122 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
5123}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005124static VkResult dynCheck_entry_vkGetRefreshCycleDurationGOOGLE(
5125 VkDevice device,
5126 VkSwapchainKHR swapchain,
5127 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
5128{
5129 auto resources = ResourceTracker::get();
5130 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
5131 {
5132 sOnInvalidDynamicallyCheckedCall("vkGetRefreshCycleDurationGOOGLE", "VK_GOOGLE_display_timing");
5133 }
5134 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005135 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005136 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005137 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005138 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
5139}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005140static VkResult entry_vkGetPastPresentationTimingGOOGLE(
5141 VkDevice device,
5142 VkSwapchainKHR swapchain,
5143 uint32_t* pPresentationTimingCount,
5144 VkPastPresentationTimingGOOGLE* pPresentationTimings)
5145{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005146 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005147 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005148 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005149 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005150 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
5151}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005152static VkResult dynCheck_entry_vkGetPastPresentationTimingGOOGLE(
5153 VkDevice device,
5154 VkSwapchainKHR swapchain,
5155 uint32_t* pPresentationTimingCount,
5156 VkPastPresentationTimingGOOGLE* pPresentationTimings)
5157{
5158 auto resources = ResourceTracker::get();
5159 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
5160 {
5161 sOnInvalidDynamicallyCheckedCall("vkGetPastPresentationTimingGOOGLE", "VK_GOOGLE_display_timing");
5162 }
5163 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005164 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005165 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005166 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005167 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
5168}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005169#endif
5170#ifdef VK_NV_sample_mask_override_coverage
5171#endif
5172#ifdef VK_NV_geometry_shader_passthrough
5173#endif
5174#ifdef VK_NV_viewport_array2
5175#endif
5176#ifdef VK_NVX_multiview_per_view_attributes
5177#endif
5178#ifdef VK_NV_viewport_swizzle
5179#endif
5180#ifdef VK_EXT_discard_rectangles
5181static void entry_vkCmdSetDiscardRectangleEXT(
5182 VkCommandBuffer commandBuffer,
5183 uint32_t firstDiscardRectangle,
5184 uint32_t discardRectangleCount,
5185 const VkRect2D* pDiscardRectangles)
5186{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005187 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005188 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005189 vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005190}
5191#endif
5192#ifdef VK_EXT_conservative_rasterization
5193#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005194#ifdef VK_EXT_depth_clip_enable
5195#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005196#ifdef VK_EXT_swapchain_colorspace
5197#endif
5198#ifdef VK_EXT_hdr_metadata
5199static void entry_vkSetHdrMetadataEXT(
5200 VkDevice device,
5201 uint32_t swapchainCount,
5202 const VkSwapchainKHR* pSwapchains,
5203 const VkHdrMetadataEXT* pMetadata)
5204{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005205 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005206 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005207 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005208}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005209static void dynCheck_entry_vkSetHdrMetadataEXT(
5210 VkDevice device,
5211 uint32_t swapchainCount,
5212 const VkSwapchainKHR* pSwapchains,
5213 const VkHdrMetadataEXT* pMetadata)
5214{
5215 auto resources = ResourceTracker::get();
5216 if (!resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata"))
5217 {
5218 sOnInvalidDynamicallyCheckedCall("vkSetHdrMetadataEXT", "VK_EXT_hdr_metadata");
5219 }
5220 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005221 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005222 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005223}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005224#endif
5225#ifdef VK_MVK_ios_surface
5226static VkResult entry_vkCreateIOSSurfaceMVK(
5227 VkInstance instance,
5228 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
5229 const VkAllocationCallbacks* pAllocator,
5230 VkSurfaceKHR* pSurface)
5231{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005232 AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005233 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005234 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005235 vkCreateIOSSurfaceMVK_VkResult_return = vkEnc->vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005236 return vkCreateIOSSurfaceMVK_VkResult_return;
5237}
5238#endif
5239#ifdef VK_MVK_macos_surface
5240static VkResult entry_vkCreateMacOSSurfaceMVK(
5241 VkInstance instance,
5242 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
5243 const VkAllocationCallbacks* pAllocator,
5244 VkSurfaceKHR* pSurface)
5245{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005246 AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005247 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005248 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005249 vkCreateMacOSSurfaceMVK_VkResult_return = vkEnc->vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005250 return vkCreateMacOSSurfaceMVK_VkResult_return;
5251}
5252#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005253#ifdef VK_MVK_moltenvk
5254static void entry_vkGetMTLDeviceMVK(
5255 VkPhysicalDevice physicalDevice,
5256 void** pMTLDevice)
5257{
5258 AEMU_SCOPED_TRACE("vkGetMTLDeviceMVK");
5259 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5260 vkEnc->vkGetMTLDeviceMVK(physicalDevice, pMTLDevice, true /* do lock */);
5261}
5262static VkResult entry_vkSetMTLTextureMVK(
5263 VkImage image,
5264 void* mtlTexture)
5265{
5266 AEMU_SCOPED_TRACE("vkSetMTLTextureMVK");
5267 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5268 VkResult vkSetMTLTextureMVK_VkResult_return = (VkResult)0;
5269 vkSetMTLTextureMVK_VkResult_return = vkEnc->vkSetMTLTextureMVK(image, mtlTexture, true /* do lock */);
5270 return vkSetMTLTextureMVK_VkResult_return;
5271}
5272static void entry_vkGetMTLTextureMVK(
5273 VkImage image,
5274 void** pMTLTexture)
5275{
5276 AEMU_SCOPED_TRACE("vkGetMTLTextureMVK");
5277 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5278 vkEnc->vkGetMTLTextureMVK(image, pMTLTexture, true /* do lock */);
5279}
5280static void entry_vkGetMTLBufferMVK(
5281 VkBuffer buffer,
5282 void** pMTLBuffer)
5283{
5284 AEMU_SCOPED_TRACE("vkGetMTLBufferMVK");
5285 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5286 vkEnc->vkGetMTLBufferMVK(buffer, pMTLBuffer, true /* do lock */);
5287}
5288static VkResult entry_vkUseIOSurfaceMVK(
5289 VkImage image,
5290 void* ioSurface)
5291{
5292 AEMU_SCOPED_TRACE("vkUseIOSurfaceMVK");
5293 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5294 VkResult vkUseIOSurfaceMVK_VkResult_return = (VkResult)0;
5295 vkUseIOSurfaceMVK_VkResult_return = vkEnc->vkUseIOSurfaceMVK(image, ioSurface, true /* do lock */);
5296 return vkUseIOSurfaceMVK_VkResult_return;
5297}
5298static void entry_vkGetIOSurfaceMVK(
5299 VkImage image,
5300 void** pIOSurface)
5301{
5302 AEMU_SCOPED_TRACE("vkGetIOSurfaceMVK");
5303 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5304 vkEnc->vkGetIOSurfaceMVK(image, pIOSurface, true /* do lock */);
5305}
5306#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005307#ifdef VK_EXT_external_memory_dma_buf
5308#endif
5309#ifdef VK_EXT_queue_family_foreign
5310#endif
5311#ifdef VK_EXT_debug_utils
5312static VkResult entry_vkSetDebugUtilsObjectNameEXT(
5313 VkDevice device,
5314 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
5315{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005316 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005317 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005318 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005319 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005320 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
5321}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005322static VkResult dynCheck_entry_vkSetDebugUtilsObjectNameEXT(
5323 VkDevice device,
5324 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
5325{
5326 auto resources = ResourceTracker::get();
5327 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
5328 {
5329 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectNameEXT", "VK_EXT_debug_utils");
5330 }
5331 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005332 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005333 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005334 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005335 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
5336}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005337static VkResult entry_vkSetDebugUtilsObjectTagEXT(
5338 VkDevice device,
5339 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
5340{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005341 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005342 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005343 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005344 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005345 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
5346}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005347static VkResult dynCheck_entry_vkSetDebugUtilsObjectTagEXT(
5348 VkDevice device,
5349 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
5350{
5351 auto resources = ResourceTracker::get();
5352 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
5353 {
5354 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectTagEXT", "VK_EXT_debug_utils");
5355 }
5356 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005357 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005358 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005359 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005360 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
5361}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005362static void entry_vkQueueBeginDebugUtilsLabelEXT(
5363 VkQueue queue,
5364 const VkDebugUtilsLabelEXT* pLabelInfo)
5365{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005366 AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005367 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005368 vkEnc->vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005369}
5370static void entry_vkQueueEndDebugUtilsLabelEXT(
5371 VkQueue queue)
5372{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005373 AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005374 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005375 vkEnc->vkQueueEndDebugUtilsLabelEXT(queue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005376}
5377static void entry_vkQueueInsertDebugUtilsLabelEXT(
5378 VkQueue queue,
5379 const VkDebugUtilsLabelEXT* pLabelInfo)
5380{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005381 AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005382 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005383 vkEnc->vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005384}
5385static void entry_vkCmdBeginDebugUtilsLabelEXT(
5386 VkCommandBuffer commandBuffer,
5387 const VkDebugUtilsLabelEXT* pLabelInfo)
5388{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005389 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005390 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005391 vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005392}
5393static void entry_vkCmdEndDebugUtilsLabelEXT(
5394 VkCommandBuffer commandBuffer)
5395{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005396 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005397 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005398 vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005399}
5400static void entry_vkCmdInsertDebugUtilsLabelEXT(
5401 VkCommandBuffer commandBuffer,
5402 const VkDebugUtilsLabelEXT* pLabelInfo)
5403{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005404 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005405 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005406 vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005407}
5408static VkResult entry_vkCreateDebugUtilsMessengerEXT(
5409 VkInstance instance,
5410 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
5411 const VkAllocationCallbacks* pAllocator,
5412 VkDebugUtilsMessengerEXT* pMessenger)
5413{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005414 AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005415 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005416 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005417 vkCreateDebugUtilsMessengerEXT_VkResult_return = vkEnc->vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005418 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
5419}
5420static void entry_vkDestroyDebugUtilsMessengerEXT(
5421 VkInstance instance,
5422 VkDebugUtilsMessengerEXT messenger,
5423 const VkAllocationCallbacks* pAllocator)
5424{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005425 AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005426 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005427 vkEnc->vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005428}
5429static void entry_vkSubmitDebugUtilsMessageEXT(
5430 VkInstance instance,
5431 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
5432 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
5433 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
5434{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005435 AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005436 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005437 vkEnc->vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005438}
5439#endif
5440#ifdef VK_ANDROID_external_memory_android_hardware_buffer
5441static VkResult entry_vkGetAndroidHardwareBufferPropertiesANDROID(
5442 VkDevice device,
5443 const AHardwareBuffer* buffer,
5444 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
5445{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005446 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005447 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005448 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08005449 auto resources = ResourceTracker::get();
5450 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005451 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
5452}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005453static VkResult dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID(
5454 VkDevice device,
5455 const AHardwareBuffer* buffer,
5456 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
5457{
5458 auto resources = ResourceTracker::get();
5459 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
5460 {
5461 sOnInvalidDynamicallyCheckedCall("vkGetAndroidHardwareBufferPropertiesANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
5462 }
5463 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005464 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005465 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
5466 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
5467 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
5468}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005469static VkResult entry_vkGetMemoryAndroidHardwareBufferANDROID(
5470 VkDevice device,
5471 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
5472 AHardwareBuffer** pBuffer)
5473{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005474 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005475 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005476 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08005477 auto resources = ResourceTracker::get();
5478 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005479 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
5480}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005481static VkResult dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID(
5482 VkDevice device,
5483 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
5484 AHardwareBuffer** pBuffer)
5485{
5486 auto resources = ResourceTracker::get();
5487 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
5488 {
5489 sOnInvalidDynamicallyCheckedCall("vkGetMemoryAndroidHardwareBufferANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
5490 }
5491 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005492 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005493 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
5494 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
5495 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
5496}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005497#endif
5498#ifdef VK_EXT_sampler_filter_minmax
5499#endif
5500#ifdef VK_AMD_gpu_shader_int16
5501#endif
5502#ifdef VK_AMD_mixed_attachment_samples
5503#endif
5504#ifdef VK_AMD_shader_fragment_mask
5505#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005506#ifdef VK_EXT_inline_uniform_block
5507#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005508#ifdef VK_EXT_shader_stencil_export
5509#endif
5510#ifdef VK_EXT_sample_locations
5511static void entry_vkCmdSetSampleLocationsEXT(
5512 VkCommandBuffer commandBuffer,
5513 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
5514{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005515 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005516 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005517 vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005518}
5519static void entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(
5520 VkPhysicalDevice physicalDevice,
5521 VkSampleCountFlagBits samples,
5522 VkMultisamplePropertiesEXT* pMultisampleProperties)
5523{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005524 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005525 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005526 vkEnc->vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005527}
5528#endif
5529#ifdef VK_EXT_blend_operation_advanced
5530#endif
5531#ifdef VK_NV_fragment_coverage_to_color
5532#endif
5533#ifdef VK_NV_framebuffer_mixed_samples
5534#endif
5535#ifdef VK_NV_fill_rectangle
5536#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005537#ifdef VK_NV_shader_sm_builtins
5538#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005539#ifdef VK_EXT_post_depth_coverage
5540#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005541#ifdef VK_EXT_image_drm_format_modifier
5542static VkResult entry_vkGetImageDrmFormatModifierPropertiesEXT(
5543 VkDevice device,
5544 VkImage image,
5545 VkImageDrmFormatModifierPropertiesEXT* pProperties)
5546{
5547 AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
5548 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5549 VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
5550 vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, true /* do lock */);
5551 return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
5552}
5553static VkResult dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT(
5554 VkDevice device,
5555 VkImage image,
5556 VkImageDrmFormatModifierPropertiesEXT* pProperties)
5557{
5558 auto resources = ResourceTracker::get();
5559 if (!resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier"))
5560 {
5561 sOnInvalidDynamicallyCheckedCall("vkGetImageDrmFormatModifierPropertiesEXT", "VK_EXT_image_drm_format_modifier");
5562 }
5563 AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
5564 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5565 VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
5566 vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, true /* do lock */);
5567 return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
5568}
5569#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005570#ifdef VK_EXT_validation_cache
5571static VkResult entry_vkCreateValidationCacheEXT(
5572 VkDevice device,
5573 const VkValidationCacheCreateInfoEXT* pCreateInfo,
5574 const VkAllocationCallbacks* pAllocator,
5575 VkValidationCacheEXT* pValidationCache)
5576{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005577 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005578 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005579 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005580 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005581 return vkCreateValidationCacheEXT_VkResult_return;
5582}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005583static VkResult dynCheck_entry_vkCreateValidationCacheEXT(
5584 VkDevice device,
5585 const VkValidationCacheCreateInfoEXT* pCreateInfo,
5586 const VkAllocationCallbacks* pAllocator,
5587 VkValidationCacheEXT* pValidationCache)
5588{
5589 auto resources = ResourceTracker::get();
5590 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5591 {
5592 sOnInvalidDynamicallyCheckedCall("vkCreateValidationCacheEXT", "VK_EXT_validation_cache");
5593 }
5594 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005595 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005596 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005597 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005598 return vkCreateValidationCacheEXT_VkResult_return;
5599}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005600static void entry_vkDestroyValidationCacheEXT(
5601 VkDevice device,
5602 VkValidationCacheEXT validationCache,
5603 const VkAllocationCallbacks* pAllocator)
5604{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005605 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005606 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005607 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005608}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005609static void dynCheck_entry_vkDestroyValidationCacheEXT(
5610 VkDevice device,
5611 VkValidationCacheEXT validationCache,
5612 const VkAllocationCallbacks* pAllocator)
5613{
5614 auto resources = ResourceTracker::get();
5615 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5616 {
5617 sOnInvalidDynamicallyCheckedCall("vkDestroyValidationCacheEXT", "VK_EXT_validation_cache");
5618 }
5619 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005620 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005621 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005622}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005623static VkResult entry_vkMergeValidationCachesEXT(
5624 VkDevice device,
5625 VkValidationCacheEXT dstCache,
5626 uint32_t srcCacheCount,
5627 const VkValidationCacheEXT* pSrcCaches)
5628{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005629 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005630 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005631 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005632 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005633 return vkMergeValidationCachesEXT_VkResult_return;
5634}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005635static VkResult dynCheck_entry_vkMergeValidationCachesEXT(
5636 VkDevice device,
5637 VkValidationCacheEXT dstCache,
5638 uint32_t srcCacheCount,
5639 const VkValidationCacheEXT* pSrcCaches)
5640{
5641 auto resources = ResourceTracker::get();
5642 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5643 {
5644 sOnInvalidDynamicallyCheckedCall("vkMergeValidationCachesEXT", "VK_EXT_validation_cache");
5645 }
5646 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005647 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005648 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005649 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005650 return vkMergeValidationCachesEXT_VkResult_return;
5651}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005652static VkResult entry_vkGetValidationCacheDataEXT(
5653 VkDevice device,
5654 VkValidationCacheEXT validationCache,
5655 size_t* pDataSize,
5656 void* pData)
5657{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005658 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005659 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005660 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005661 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005662 return vkGetValidationCacheDataEXT_VkResult_return;
5663}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005664static VkResult dynCheck_entry_vkGetValidationCacheDataEXT(
5665 VkDevice device,
5666 VkValidationCacheEXT validationCache,
5667 size_t* pDataSize,
5668 void* pData)
5669{
5670 auto resources = ResourceTracker::get();
5671 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5672 {
5673 sOnInvalidDynamicallyCheckedCall("vkGetValidationCacheDataEXT", "VK_EXT_validation_cache");
5674 }
5675 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005676 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005677 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005678 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005679 return vkGetValidationCacheDataEXT_VkResult_return;
5680}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005681#endif
5682#ifdef VK_EXT_descriptor_indexing
5683#endif
5684#ifdef VK_EXT_shader_viewport_index_layer
5685#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005686#ifdef VK_NV_shading_rate_image
5687static void entry_vkCmdBindShadingRateImageNV(
5688 VkCommandBuffer commandBuffer,
5689 VkImageView imageView,
5690 VkImageLayout imageLayout)
5691{
5692 AEMU_SCOPED_TRACE("vkCmdBindShadingRateImageNV");
5693 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5694 vkEnc->vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, true /* do lock */);
5695}
5696static void entry_vkCmdSetViewportShadingRatePaletteNV(
5697 VkCommandBuffer commandBuffer,
5698 uint32_t firstViewport,
5699 uint32_t viewportCount,
5700 const VkShadingRatePaletteNV* pShadingRatePalettes)
5701{
5702 AEMU_SCOPED_TRACE("vkCmdSetViewportShadingRatePaletteNV");
5703 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5704 vkEnc->vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, true /* do lock */);
5705}
5706static void entry_vkCmdSetCoarseSampleOrderNV(
5707 VkCommandBuffer commandBuffer,
5708 VkCoarseSampleOrderTypeNV sampleOrderType,
5709 uint32_t customSampleOrderCount,
5710 const VkCoarseSampleOrderCustomNV* pCustomSampleOrders)
5711{
5712 AEMU_SCOPED_TRACE("vkCmdSetCoarseSampleOrderNV");
5713 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5714 vkEnc->vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, true /* do lock */);
5715}
5716#endif
5717#ifdef VK_NV_ray_tracing
5718static VkResult entry_vkCreateAccelerationStructureNV(
5719 VkDevice device,
5720 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
5721 const VkAllocationCallbacks* pAllocator,
5722 VkAccelerationStructureNV* pAccelerationStructure)
5723{
5724 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
5725 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5726 VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
5727 vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
5728 return vkCreateAccelerationStructureNV_VkResult_return;
5729}
5730static VkResult dynCheck_entry_vkCreateAccelerationStructureNV(
5731 VkDevice device,
5732 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
5733 const VkAllocationCallbacks* pAllocator,
5734 VkAccelerationStructureNV* pAccelerationStructure)
5735{
5736 auto resources = ResourceTracker::get();
5737 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5738 {
5739 sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureNV", "VK_NV_ray_tracing");
5740 }
5741 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
5742 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5743 VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
5744 vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
5745 return vkCreateAccelerationStructureNV_VkResult_return;
5746}
5747static void entry_vkDestroyAccelerationStructureNV(
5748 VkDevice device,
5749 VkAccelerationStructureNV accelerationStructure,
5750 const VkAllocationCallbacks* pAllocator)
5751{
5752 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
5753 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5754 vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, true /* do lock */);
5755}
5756static void dynCheck_entry_vkDestroyAccelerationStructureNV(
5757 VkDevice device,
5758 VkAccelerationStructureNV accelerationStructure,
5759 const VkAllocationCallbacks* pAllocator)
5760{
5761 auto resources = ResourceTracker::get();
5762 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5763 {
5764 sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureNV", "VK_NV_ray_tracing");
5765 }
5766 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
5767 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5768 vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, true /* do lock */);
5769}
5770static void entry_vkGetAccelerationStructureMemoryRequirementsNV(
5771 VkDevice device,
5772 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
5773 VkMemoryRequirements2KHR* pMemoryRequirements)
5774{
5775 AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
5776 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5777 vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
5778}
5779static void dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV(
5780 VkDevice device,
5781 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
5782 VkMemoryRequirements2KHR* pMemoryRequirements)
5783{
5784 auto resources = ResourceTracker::get();
5785 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5786 {
5787 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureMemoryRequirementsNV", "VK_NV_ray_tracing");
5788 }
5789 AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
5790 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5791 vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
5792}
5793static VkResult entry_vkBindAccelerationStructureMemoryNV(
5794 VkDevice device,
5795 uint32_t bindInfoCount,
5796 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
5797{
5798 AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
5799 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5800 VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
5801 vkBindAccelerationStructureMemoryNV_VkResult_return = vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, true /* do lock */);
5802 return vkBindAccelerationStructureMemoryNV_VkResult_return;
5803}
5804static VkResult dynCheck_entry_vkBindAccelerationStructureMemoryNV(
5805 VkDevice device,
5806 uint32_t bindInfoCount,
5807 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
5808{
5809 auto resources = ResourceTracker::get();
5810 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5811 {
5812 sOnInvalidDynamicallyCheckedCall("vkBindAccelerationStructureMemoryNV", "VK_NV_ray_tracing");
5813 }
5814 AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
5815 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5816 VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
5817 vkBindAccelerationStructureMemoryNV_VkResult_return = vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, true /* do lock */);
5818 return vkBindAccelerationStructureMemoryNV_VkResult_return;
5819}
5820static void entry_vkCmdBuildAccelerationStructureNV(
5821 VkCommandBuffer commandBuffer,
5822 const VkAccelerationStructureInfoNV* pInfo,
5823 VkBuffer instanceData,
5824 VkDeviceSize instanceOffset,
5825 VkBool32 update,
5826 VkAccelerationStructureNV dst,
5827 VkAccelerationStructureNV src,
5828 VkBuffer scratch,
5829 VkDeviceSize scratchOffset)
5830{
5831 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructureNV");
5832 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5833 vkEnc->vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, true /* do lock */);
5834}
5835static void entry_vkCmdCopyAccelerationStructureNV(
5836 VkCommandBuffer commandBuffer,
5837 VkAccelerationStructureNV dst,
5838 VkAccelerationStructureNV src,
5839 VkCopyAccelerationStructureModeKHR mode)
5840{
5841 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureNV");
5842 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5843 vkEnc->vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, true /* do lock */);
5844}
5845static void entry_vkCmdTraceRaysNV(
5846 VkCommandBuffer commandBuffer,
5847 VkBuffer raygenShaderBindingTableBuffer,
5848 VkDeviceSize raygenShaderBindingOffset,
5849 VkBuffer missShaderBindingTableBuffer,
5850 VkDeviceSize missShaderBindingOffset,
5851 VkDeviceSize missShaderBindingStride,
5852 VkBuffer hitShaderBindingTableBuffer,
5853 VkDeviceSize hitShaderBindingOffset,
5854 VkDeviceSize hitShaderBindingStride,
5855 VkBuffer callableShaderBindingTableBuffer,
5856 VkDeviceSize callableShaderBindingOffset,
5857 VkDeviceSize callableShaderBindingStride,
5858 uint32_t width,
5859 uint32_t height,
5860 uint32_t depth)
5861{
5862 AEMU_SCOPED_TRACE("vkCmdTraceRaysNV");
5863 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5864 vkEnc->vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, true /* do lock */);
5865}
5866static VkResult entry_vkCreateRayTracingPipelinesNV(
5867 VkDevice device,
5868 VkPipelineCache pipelineCache,
5869 uint32_t createInfoCount,
5870 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
5871 const VkAllocationCallbacks* pAllocator,
5872 VkPipeline* pPipelines)
5873{
5874 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
5875 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5876 VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
5877 vkCreateRayTracingPipelinesNV_VkResult_return = vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
5878 return vkCreateRayTracingPipelinesNV_VkResult_return;
5879}
5880static VkResult dynCheck_entry_vkCreateRayTracingPipelinesNV(
5881 VkDevice device,
5882 VkPipelineCache pipelineCache,
5883 uint32_t createInfoCount,
5884 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
5885 const VkAllocationCallbacks* pAllocator,
5886 VkPipeline* pPipelines)
5887{
5888 auto resources = ResourceTracker::get();
5889 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5890 {
5891 sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesNV", "VK_NV_ray_tracing");
5892 }
5893 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
5894 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5895 VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
5896 vkCreateRayTracingPipelinesNV_VkResult_return = vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
5897 return vkCreateRayTracingPipelinesNV_VkResult_return;
5898}
5899static VkResult entry_vkGetRayTracingShaderGroupHandlesKHR(
5900 VkDevice device,
5901 VkPipeline pipeline,
5902 uint32_t firstGroup,
5903 uint32_t groupCount,
5904 size_t dataSize,
5905 void* pData)
5906{
5907 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
5908 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5909 VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
5910 vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5911 return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
5912}
5913static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR(
5914 VkDevice device,
5915 VkPipeline pipeline,
5916 uint32_t firstGroup,
5917 uint32_t groupCount,
5918 size_t dataSize,
5919 void* pData)
5920{
5921 auto resources = ResourceTracker::get();
5922 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5923 {
5924 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesKHR", "VK_NV_ray_tracing");
5925 }
5926 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
5927 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5928 VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
5929 vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5930 return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
5931}
5932static VkResult entry_vkGetRayTracingShaderGroupHandlesNV(
5933 VkDevice device,
5934 VkPipeline pipeline,
5935 uint32_t firstGroup,
5936 uint32_t groupCount,
5937 size_t dataSize,
5938 void* pData)
5939{
5940 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
5941 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5942 VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
5943 vkGetRayTracingShaderGroupHandlesNV_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5944 return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
5945}
5946static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV(
5947 VkDevice device,
5948 VkPipeline pipeline,
5949 uint32_t firstGroup,
5950 uint32_t groupCount,
5951 size_t dataSize,
5952 void* pData)
5953{
5954 auto resources = ResourceTracker::get();
5955 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5956 {
5957 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesNV", "VK_NV_ray_tracing");
5958 }
5959 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
5960 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5961 VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
5962 vkGetRayTracingShaderGroupHandlesNV_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5963 return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
5964}
5965static VkResult entry_vkGetAccelerationStructureHandleNV(
5966 VkDevice device,
5967 VkAccelerationStructureNV accelerationStructure,
5968 size_t dataSize,
5969 void* pData)
5970{
5971 AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
5972 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5973 VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
5974 vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, true /* do lock */);
5975 return vkGetAccelerationStructureHandleNV_VkResult_return;
5976}
5977static VkResult dynCheck_entry_vkGetAccelerationStructureHandleNV(
5978 VkDevice device,
5979 VkAccelerationStructureNV accelerationStructure,
5980 size_t dataSize,
5981 void* pData)
5982{
5983 auto resources = ResourceTracker::get();
5984 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5985 {
5986 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureHandleNV", "VK_NV_ray_tracing");
5987 }
5988 AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
5989 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5990 VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
5991 vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, true /* do lock */);
5992 return vkGetAccelerationStructureHandleNV_VkResult_return;
5993}
5994static void entry_vkCmdWriteAccelerationStructuresPropertiesNV(
5995 VkCommandBuffer commandBuffer,
5996 uint32_t accelerationStructureCount,
5997 const VkAccelerationStructureNV* pAccelerationStructures,
5998 VkQueryType queryType,
5999 VkQueryPool queryPool,
6000 uint32_t firstQuery)
6001{
6002 AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesNV");
6003 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6004 vkEnc->vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
6005}
6006static VkResult entry_vkCompileDeferredNV(
6007 VkDevice device,
6008 VkPipeline pipeline,
6009 uint32_t shader)
6010{
6011 AEMU_SCOPED_TRACE("vkCompileDeferredNV");
6012 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6013 VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
6014 vkCompileDeferredNV_VkResult_return = vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
6015 return vkCompileDeferredNV_VkResult_return;
6016}
6017static VkResult dynCheck_entry_vkCompileDeferredNV(
6018 VkDevice device,
6019 VkPipeline pipeline,
6020 uint32_t shader)
6021{
6022 auto resources = ResourceTracker::get();
6023 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6024 {
6025 sOnInvalidDynamicallyCheckedCall("vkCompileDeferredNV", "VK_NV_ray_tracing");
6026 }
6027 AEMU_SCOPED_TRACE("vkCompileDeferredNV");
6028 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6029 VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
6030 vkCompileDeferredNV_VkResult_return = vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
6031 return vkCompileDeferredNV_VkResult_return;
6032}
6033#endif
6034#ifdef VK_NV_representative_fragment_test
6035#endif
6036#ifdef VK_EXT_filter_cubic
6037#endif
6038#ifdef VK_QCOM_render_pass_shader_resolve
6039#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006040#ifdef VK_EXT_global_priority
6041#endif
6042#ifdef VK_EXT_external_memory_host
6043static VkResult entry_vkGetMemoryHostPointerPropertiesEXT(
6044 VkDevice device,
6045 VkExternalMemoryHandleTypeFlagBits handleType,
6046 const void* pHostPointer,
6047 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
6048{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006049 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006050 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006051 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006052 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006053 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
6054}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006055static VkResult dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT(
6056 VkDevice device,
6057 VkExternalMemoryHandleTypeFlagBits handleType,
6058 const void* pHostPointer,
6059 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
6060{
6061 auto resources = ResourceTracker::get();
6062 if (!resources->hasDeviceExtension(device, "VK_EXT_external_memory_host"))
6063 {
6064 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostPointerPropertiesEXT", "VK_EXT_external_memory_host");
6065 }
6066 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006067 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006068 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006069 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006070 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
6071}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006072#endif
6073#ifdef VK_AMD_buffer_marker
6074static void entry_vkCmdWriteBufferMarkerAMD(
6075 VkCommandBuffer commandBuffer,
6076 VkPipelineStageFlagBits pipelineStage,
6077 VkBuffer dstBuffer,
6078 VkDeviceSize dstOffset,
6079 uint32_t marker)
6080{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006081 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006082 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006083 vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006084}
6085#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006086#ifdef VK_AMD_pipeline_compiler_control
6087#endif
6088#ifdef VK_EXT_calibrated_timestamps
6089static VkResult entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
6090 VkPhysicalDevice physicalDevice,
6091 uint32_t* pTimeDomainCount,
6092 VkTimeDomainEXT* pTimeDomains)
6093{
6094 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCalibrateableTimeDomainsEXT");
6095 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6096 VkResult vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return = (VkResult)0;
6097 vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return = vkEnc->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, true /* do lock */);
6098 return vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return;
6099}
6100static VkResult entry_vkGetCalibratedTimestampsEXT(
6101 VkDevice device,
6102 uint32_t timestampCount,
6103 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
6104 uint64_t* pTimestamps,
6105 uint64_t* pMaxDeviation)
6106{
6107 AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
6108 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6109 VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
6110 vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
6111 return vkGetCalibratedTimestampsEXT_VkResult_return;
6112}
6113static VkResult dynCheck_entry_vkGetCalibratedTimestampsEXT(
6114 VkDevice device,
6115 uint32_t timestampCount,
6116 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
6117 uint64_t* pTimestamps,
6118 uint64_t* pMaxDeviation)
6119{
6120 auto resources = ResourceTracker::get();
6121 if (!resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps"))
6122 {
6123 sOnInvalidDynamicallyCheckedCall("vkGetCalibratedTimestampsEXT", "VK_EXT_calibrated_timestamps");
6124 }
6125 AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
6126 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6127 VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
6128 vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
6129 return vkGetCalibratedTimestampsEXT_VkResult_return;
6130}
6131#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006132#ifdef VK_AMD_shader_core_properties
6133#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006134#ifdef VK_AMD_memory_overallocation_behavior
6135#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006136#ifdef VK_EXT_vertex_attribute_divisor
6137#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006138#ifdef VK_GGP_frame_token
6139#endif
6140#ifdef VK_EXT_pipeline_creation_feedback
6141#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006142#ifdef VK_NV_shader_subgroup_partitioned
6143#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006144#ifdef VK_NV_compute_shader_derivatives
6145#endif
6146#ifdef VK_NV_mesh_shader
6147static void entry_vkCmdDrawMeshTasksNV(
6148 VkCommandBuffer commandBuffer,
6149 uint32_t taskCount,
6150 uint32_t firstTask)
6151{
6152 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksNV");
6153 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6154 vkEnc->vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, true /* do lock */);
6155}
6156static void entry_vkCmdDrawMeshTasksIndirectNV(
6157 VkCommandBuffer commandBuffer,
6158 VkBuffer buffer,
6159 VkDeviceSize offset,
6160 uint32_t drawCount,
6161 uint32_t stride)
6162{
6163 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectNV");
6164 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6165 vkEnc->vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
6166}
6167static void entry_vkCmdDrawMeshTasksIndirectCountNV(
6168 VkCommandBuffer commandBuffer,
6169 VkBuffer buffer,
6170 VkDeviceSize offset,
6171 VkBuffer countBuffer,
6172 VkDeviceSize countBufferOffset,
6173 uint32_t maxDrawCount,
6174 uint32_t stride)
6175{
6176 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectCountNV");
6177 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6178 vkEnc->vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
6179}
6180#endif
6181#ifdef VK_NV_fragment_shader_barycentric
6182#endif
6183#ifdef VK_NV_shader_image_footprint
6184#endif
6185#ifdef VK_NV_scissor_exclusive
6186static void entry_vkCmdSetExclusiveScissorNV(
6187 VkCommandBuffer commandBuffer,
6188 uint32_t firstExclusiveScissor,
6189 uint32_t exclusiveScissorCount,
6190 const VkRect2D* pExclusiveScissors)
6191{
6192 AEMU_SCOPED_TRACE("vkCmdSetExclusiveScissorNV");
6193 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6194 vkEnc->vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, true /* do lock */);
6195}
6196#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006197#ifdef VK_NV_device_diagnostic_checkpoints
6198static void entry_vkCmdSetCheckpointNV(
6199 VkCommandBuffer commandBuffer,
6200 const void* pCheckpointMarker)
6201{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006202 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006203 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006204 vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006205}
6206static void entry_vkGetQueueCheckpointDataNV(
6207 VkQueue queue,
6208 uint32_t* pCheckpointDataCount,
6209 VkCheckpointDataNV* pCheckpointData)
6210{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006211 AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006212 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006213 vkEnc->vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006214}
6215#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006216#ifdef VK_INTEL_shader_integer_functions2
6217#endif
6218#ifdef VK_INTEL_performance_query
6219static VkResult entry_vkInitializePerformanceApiINTEL(
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006220 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08006221 const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006222{
Yilong Lia8d45f12021-02-07 02:30:21 -08006223 AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006224 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Yilong Lia8d45f12021-02-07 02:30:21 -08006225 VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
6226 vkInitializePerformanceApiINTEL_VkResult_return = vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
6227 return vkInitializePerformanceApiINTEL_VkResult_return;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006228}
Yilong Lia8d45f12021-02-07 02:30:21 -08006229static VkResult dynCheck_entry_vkInitializePerformanceApiINTEL(
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006230 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08006231 const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006232{
6233 auto resources = ResourceTracker::get();
Yilong Lia8d45f12021-02-07 02:30:21 -08006234 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006235 {
Yilong Lia8d45f12021-02-07 02:30:21 -08006236 sOnInvalidDynamicallyCheckedCall("vkInitializePerformanceApiINTEL", "VK_INTEL_performance_query");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006237 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006238 AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006239 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Yilong Lia8d45f12021-02-07 02:30:21 -08006240 VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
6241 vkInitializePerformanceApiINTEL_VkResult_return = vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
6242 return vkInitializePerformanceApiINTEL_VkResult_return;
6243}
6244static void entry_vkUninitializePerformanceApiINTEL(
6245 VkDevice device)
6246{
6247 AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
6248 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6249 vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
6250}
6251static void dynCheck_entry_vkUninitializePerformanceApiINTEL(
6252 VkDevice device)
6253{
6254 auto resources = ResourceTracker::get();
6255 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6256 {
6257 sOnInvalidDynamicallyCheckedCall("vkUninitializePerformanceApiINTEL", "VK_INTEL_performance_query");
6258 }
6259 AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
6260 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6261 vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
6262}
6263static VkResult entry_vkCmdSetPerformanceMarkerINTEL(
6264 VkCommandBuffer commandBuffer,
6265 const VkPerformanceMarkerInfoINTEL* pMarkerInfo)
6266{
6267 AEMU_SCOPED_TRACE("vkCmdSetPerformanceMarkerINTEL");
6268 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6269 VkResult vkCmdSetPerformanceMarkerINTEL_VkResult_return = (VkResult)0;
6270 vkCmdSetPerformanceMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
6271 return vkCmdSetPerformanceMarkerINTEL_VkResult_return;
6272}
6273static VkResult entry_vkCmdSetPerformanceStreamMarkerINTEL(
6274 VkCommandBuffer commandBuffer,
6275 const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo)
6276{
6277 AEMU_SCOPED_TRACE("vkCmdSetPerformanceStreamMarkerINTEL");
6278 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6279 VkResult vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = (VkResult)0;
6280 vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
6281 return vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return;
6282}
6283static VkResult entry_vkCmdSetPerformanceOverrideINTEL(
6284 VkCommandBuffer commandBuffer,
6285 const VkPerformanceOverrideInfoINTEL* pOverrideInfo)
6286{
6287 AEMU_SCOPED_TRACE("vkCmdSetPerformanceOverrideINTEL");
6288 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6289 VkResult vkCmdSetPerformanceOverrideINTEL_VkResult_return = (VkResult)0;
6290 vkCmdSetPerformanceOverrideINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, true /* do lock */);
6291 return vkCmdSetPerformanceOverrideINTEL_VkResult_return;
6292}
6293static VkResult entry_vkAcquirePerformanceConfigurationINTEL(
6294 VkDevice device,
6295 const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
6296 VkPerformanceConfigurationINTEL* pConfiguration)
6297{
6298 AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
6299 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6300 VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6301 vkAcquirePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, true /* do lock */);
6302 return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
6303}
6304static VkResult dynCheck_entry_vkAcquirePerformanceConfigurationINTEL(
6305 VkDevice device,
6306 const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
6307 VkPerformanceConfigurationINTEL* pConfiguration)
6308{
6309 auto resources = ResourceTracker::get();
6310 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6311 {
6312 sOnInvalidDynamicallyCheckedCall("vkAcquirePerformanceConfigurationINTEL", "VK_INTEL_performance_query");
6313 }
6314 AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
6315 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6316 VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6317 vkAcquirePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, true /* do lock */);
6318 return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
6319}
6320static VkResult entry_vkReleasePerformanceConfigurationINTEL(
6321 VkDevice device,
6322 VkPerformanceConfigurationINTEL configuration)
6323{
6324 AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
6325 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6326 VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6327 vkReleasePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
6328 return vkReleasePerformanceConfigurationINTEL_VkResult_return;
6329}
6330static VkResult dynCheck_entry_vkReleasePerformanceConfigurationINTEL(
6331 VkDevice device,
6332 VkPerformanceConfigurationINTEL configuration)
6333{
6334 auto resources = ResourceTracker::get();
6335 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6336 {
6337 sOnInvalidDynamicallyCheckedCall("vkReleasePerformanceConfigurationINTEL", "VK_INTEL_performance_query");
6338 }
6339 AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
6340 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6341 VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6342 vkReleasePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
6343 return vkReleasePerformanceConfigurationINTEL_VkResult_return;
6344}
6345static VkResult entry_vkQueueSetPerformanceConfigurationINTEL(
6346 VkQueue queue,
6347 VkPerformanceConfigurationINTEL configuration)
6348{
6349 AEMU_SCOPED_TRACE("vkQueueSetPerformanceConfigurationINTEL");
6350 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
6351 VkResult vkQueueSetPerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6352 vkQueueSetPerformanceConfigurationINTEL_VkResult_return = vkEnc->vkQueueSetPerformanceConfigurationINTEL(queue, configuration, true /* do lock */);
6353 return vkQueueSetPerformanceConfigurationINTEL_VkResult_return;
6354}
6355static VkResult entry_vkGetPerformanceParameterINTEL(
6356 VkDevice device,
6357 VkPerformanceParameterTypeINTEL parameter,
6358 VkPerformanceValueINTEL* pValue)
6359{
6360 AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
6361 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6362 VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
6363 vkGetPerformanceParameterINTEL_VkResult_return = vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
6364 return vkGetPerformanceParameterINTEL_VkResult_return;
6365}
6366static VkResult dynCheck_entry_vkGetPerformanceParameterINTEL(
6367 VkDevice device,
6368 VkPerformanceParameterTypeINTEL parameter,
6369 VkPerformanceValueINTEL* pValue)
6370{
6371 auto resources = ResourceTracker::get();
6372 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6373 {
6374 sOnInvalidDynamicallyCheckedCall("vkGetPerformanceParameterINTEL", "VK_INTEL_performance_query");
6375 }
6376 AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
6377 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6378 VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
6379 vkGetPerformanceParameterINTEL_VkResult_return = vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
6380 return vkGetPerformanceParameterINTEL_VkResult_return;
6381}
6382#endif
6383#ifdef VK_EXT_pci_bus_info
6384#endif
6385#ifdef VK_AMD_display_native_hdr
6386static void entry_vkSetLocalDimmingAMD(
6387 VkDevice device,
6388 VkSwapchainKHR swapChain,
6389 VkBool32 localDimmingEnable)
6390{
6391 AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
6392 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6393 vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
6394}
6395static void dynCheck_entry_vkSetLocalDimmingAMD(
6396 VkDevice device,
6397 VkSwapchainKHR swapChain,
6398 VkBool32 localDimmingEnable)
6399{
6400 auto resources = ResourceTracker::get();
6401 if (!resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr"))
6402 {
6403 sOnInvalidDynamicallyCheckedCall("vkSetLocalDimmingAMD", "VK_AMD_display_native_hdr");
6404 }
6405 AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
6406 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6407 vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
6408}
6409#endif
6410#ifdef VK_FUCHSIA_imagepipe_surface
6411static VkResult entry_vkCreateImagePipeSurfaceFUCHSIA(
6412 VkInstance instance,
6413 const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
6414 const VkAllocationCallbacks* pAllocator,
6415 VkSurfaceKHR* pSurface)
6416{
6417 AEMU_SCOPED_TRACE("vkCreateImagePipeSurfaceFUCHSIA");
6418 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6419 VkResult vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = (VkResult)0;
6420 vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = vkEnc->vkCreateImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
6421 return vkCreateImagePipeSurfaceFUCHSIA_VkResult_return;
6422}
6423#endif
6424#ifdef VK_EXT_metal_surface
6425static VkResult entry_vkCreateMetalSurfaceEXT(
6426 VkInstance instance,
6427 const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
6428 const VkAllocationCallbacks* pAllocator,
6429 VkSurfaceKHR* pSurface)
6430{
6431 AEMU_SCOPED_TRACE("vkCreateMetalSurfaceEXT");
6432 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6433 VkResult vkCreateMetalSurfaceEXT_VkResult_return = (VkResult)0;
6434 vkCreateMetalSurfaceEXT_VkResult_return = vkEnc->vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
6435 return vkCreateMetalSurfaceEXT_VkResult_return;
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006436}
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006437#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006438#ifdef VK_GOOGLE_color_buffer
6439static VkResult entry_vkRegisterImageColorBufferGOOGLE(
6440 VkDevice device,
6441 VkImage image,
6442 uint32_t colorBuffer)
6443{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006444 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006445 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006446 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006447 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006448 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
6449}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006450static VkResult dynCheck_entry_vkRegisterImageColorBufferGOOGLE(
6451 VkDevice device,
6452 VkImage image,
6453 uint32_t colorBuffer)
6454{
6455 auto resources = ResourceTracker::get();
6456 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer"))
6457 {
6458 sOnInvalidDynamicallyCheckedCall("vkRegisterImageColorBufferGOOGLE", "VK_GOOGLE_color_buffer");
6459 }
6460 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006461 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006462 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006463 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006464 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
6465}
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006466static VkResult entry_vkRegisterBufferColorBufferGOOGLE(
6467 VkDevice device,
6468 VkBuffer buffer,
6469 uint32_t colorBuffer)
6470{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006471 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006472 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006473 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006474 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006475 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
6476}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006477static VkResult dynCheck_entry_vkRegisterBufferColorBufferGOOGLE(
6478 VkDevice device,
6479 VkBuffer buffer,
6480 uint32_t colorBuffer)
6481{
6482 auto resources = ResourceTracker::get();
6483 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer"))
6484 {
6485 sOnInvalidDynamicallyCheckedCall("vkRegisterBufferColorBufferGOOGLE", "VK_GOOGLE_color_buffer");
6486 }
6487 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006488 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006489 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006490 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006491 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
6492}
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006493#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006494#ifdef VK_EXT_scalar_block_layout
6495#endif
6496#ifdef VK_GOOGLE_hlsl_functionality1
6497#endif
6498#ifdef VK_GOOGLE_decorate_string
6499#endif
6500#ifdef VK_EXT_subgroup_size_control
6501#endif
6502#ifdef VK_AMD_shader_core_properties2
6503#endif
6504#ifdef VK_AMD_device_coherent_memory
6505#endif
6506#ifdef VK_EXT_shader_image_atomic_int64
6507#endif
6508#ifdef VK_EXT_memory_budget
6509#endif
6510#ifdef VK_EXT_memory_priority
6511#endif
6512#ifdef VK_NV_dedicated_allocation_image_aliasing
6513#endif
6514#ifdef VK_EXT_buffer_device_address
6515static VkDeviceAddress entry_vkGetBufferDeviceAddressEXT(
6516 VkDevice device,
6517 const VkBufferDeviceAddressInfo* pInfo)
6518{
6519 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
6520 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6521 VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
6522 vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
6523 return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
6524}
6525static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressEXT(
6526 VkDevice device,
6527 const VkBufferDeviceAddressInfo* pInfo)
6528{
6529 auto resources = ResourceTracker::get();
6530 if (!resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address"))
6531 {
6532 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressEXT", "VK_EXT_buffer_device_address");
6533 }
6534 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
6535 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6536 VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
6537 vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
6538 return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
6539}
6540#endif
6541#ifdef VK_EXT_tooling_info
6542static VkResult entry_vkGetPhysicalDeviceToolPropertiesEXT(
6543 VkPhysicalDevice physicalDevice,
6544 uint32_t* pToolCount,
6545 VkPhysicalDeviceToolPropertiesEXT* pToolProperties)
6546{
6547 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceToolPropertiesEXT");
6548 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6549 VkResult vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = (VkResult)0;
6550 vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = vkEnc->vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, true /* do lock */);
6551 return vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return;
6552}
6553#endif
6554#ifdef VK_EXT_separate_stencil_usage
6555#endif
6556#ifdef VK_EXT_validation_features
6557#endif
6558#ifdef VK_NV_cooperative_matrix
6559static VkResult entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
6560 VkPhysicalDevice physicalDevice,
6561 uint32_t* pPropertyCount,
6562 VkCooperativeMatrixPropertiesNV* pProperties)
6563{
6564 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
6565 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6566 VkResult vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return = (VkResult)0;
6567 vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
6568 return vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return;
6569}
6570#endif
6571#ifdef VK_NV_coverage_reduction_mode
6572static VkResult entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
6573 VkPhysicalDevice physicalDevice,
6574 uint32_t* pCombinationCount,
6575 VkFramebufferMixedSamplesCombinationNV* pCombinations)
6576{
6577 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
6578 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6579 VkResult vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return = (VkResult)0;
6580 vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return = vkEnc->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, true /* do lock */);
6581 return vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return;
6582}
6583#endif
6584#ifdef VK_EXT_fragment_shader_interlock
6585#endif
6586#ifdef VK_EXT_ycbcr_image_arrays
6587#endif
6588#ifdef VK_EXT_full_screen_exclusive
6589static VkResult entry_vkGetPhysicalDeviceSurfacePresentModes2EXT(
6590 VkPhysicalDevice physicalDevice,
6591 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
6592 uint32_t* pPresentModeCount,
6593 VkPresentModeKHR* pPresentModes)
6594{
6595 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModes2EXT");
6596 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6597 VkResult vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
6598 vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes, true /* do lock */);
6599 return vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return;
6600}
6601static VkResult entry_vkAcquireFullScreenExclusiveModeEXT(
6602 VkDevice device,
6603 VkSwapchainKHR swapchain)
6604{
6605 AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
6606 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6607 VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6608 vkAcquireFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6609 return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
6610}
6611static VkResult dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT(
6612 VkDevice device,
6613 VkSwapchainKHR swapchain)
6614{
6615 auto resources = ResourceTracker::get();
6616 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
6617 {
6618 sOnInvalidDynamicallyCheckedCall("vkAcquireFullScreenExclusiveModeEXT", "VK_EXT_full_screen_exclusive");
6619 }
6620 AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
6621 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6622 VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6623 vkAcquireFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6624 return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
6625}
6626static VkResult entry_vkReleaseFullScreenExclusiveModeEXT(
6627 VkDevice device,
6628 VkSwapchainKHR swapchain)
6629{
6630 AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
6631 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6632 VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6633 vkReleaseFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6634 return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
6635}
6636static VkResult dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT(
6637 VkDevice device,
6638 VkSwapchainKHR swapchain)
6639{
6640 auto resources = ResourceTracker::get();
6641 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
6642 {
6643 sOnInvalidDynamicallyCheckedCall("vkReleaseFullScreenExclusiveModeEXT", "VK_EXT_full_screen_exclusive");
6644 }
6645 AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
6646 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6647 VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6648 vkReleaseFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6649 return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
6650}
6651static VkResult entry_vkGetDeviceGroupSurfacePresentModes2EXT(
6652 VkDevice device,
6653 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
6654 VkDeviceGroupPresentModeFlagsKHR* pModes)
6655{
6656 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
6657 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6658 VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
6659 vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, true /* do lock */);
6660 return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
6661}
6662static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT(
6663 VkDevice device,
6664 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
6665 VkDeviceGroupPresentModeFlagsKHR* pModes)
6666{
6667 auto resources = ResourceTracker::get();
6668 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
6669 {
6670 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModes2EXT", "VK_EXT_full_screen_exclusive");
6671 }
6672 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
6673 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6674 VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
6675 vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, true /* do lock */);
6676 return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
6677}
6678#endif
6679#ifdef VK_EXT_headless_surface
6680static VkResult entry_vkCreateHeadlessSurfaceEXT(
6681 VkInstance instance,
6682 const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo,
6683 const VkAllocationCallbacks* pAllocator,
6684 VkSurfaceKHR* pSurface)
6685{
6686 AEMU_SCOPED_TRACE("vkCreateHeadlessSurfaceEXT");
6687 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6688 VkResult vkCreateHeadlessSurfaceEXT_VkResult_return = (VkResult)0;
6689 vkCreateHeadlessSurfaceEXT_VkResult_return = vkEnc->vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
6690 return vkCreateHeadlessSurfaceEXT_VkResult_return;
6691}
6692#endif
6693#ifdef VK_EXT_line_rasterization
6694static void entry_vkCmdSetLineStippleEXT(
6695 VkCommandBuffer commandBuffer,
6696 uint32_t lineStippleFactor,
6697 uint16_t lineStipplePattern)
6698{
6699 AEMU_SCOPED_TRACE("vkCmdSetLineStippleEXT");
6700 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6701 vkEnc->vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, true /* do lock */);
6702}
6703#endif
6704#ifdef VK_EXT_shader_atomic_float
6705#endif
6706#ifdef VK_EXT_host_query_reset
6707static void entry_vkResetQueryPoolEXT(
6708 VkDevice device,
6709 VkQueryPool queryPool,
6710 uint32_t firstQuery,
6711 uint32_t queryCount)
6712{
6713 AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
6714 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6715 vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
6716}
6717static void dynCheck_entry_vkResetQueryPoolEXT(
6718 VkDevice device,
6719 VkQueryPool queryPool,
6720 uint32_t firstQuery,
6721 uint32_t queryCount)
6722{
6723 auto resources = ResourceTracker::get();
6724 if (!resources->hasDeviceExtension(device, "VK_EXT_host_query_reset"))
6725 {
6726 sOnInvalidDynamicallyCheckedCall("vkResetQueryPoolEXT", "VK_EXT_host_query_reset");
6727 }
6728 AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
6729 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6730 vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
6731}
6732#endif
6733#ifdef VK_EXT_index_type_uint8
6734#endif
6735#ifdef VK_EXT_extended_dynamic_state
6736static void entry_vkCmdSetCullModeEXT(
6737 VkCommandBuffer commandBuffer,
6738 VkCullModeFlags cullMode)
6739{
6740 AEMU_SCOPED_TRACE("vkCmdSetCullModeEXT");
6741 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6742 vkEnc->vkCmdSetCullModeEXT(commandBuffer, cullMode, true /* do lock */);
6743}
6744static void entry_vkCmdSetFrontFaceEXT(
6745 VkCommandBuffer commandBuffer,
6746 VkFrontFace frontFace)
6747{
6748 AEMU_SCOPED_TRACE("vkCmdSetFrontFaceEXT");
6749 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6750 vkEnc->vkCmdSetFrontFaceEXT(commandBuffer, frontFace, true /* do lock */);
6751}
6752static void entry_vkCmdSetPrimitiveTopologyEXT(
6753 VkCommandBuffer commandBuffer,
6754 VkPrimitiveTopology primitiveTopology)
6755{
6756 AEMU_SCOPED_TRACE("vkCmdSetPrimitiveTopologyEXT");
6757 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6758 vkEnc->vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, true /* do lock */);
6759}
6760static void entry_vkCmdSetViewportWithCountEXT(
6761 VkCommandBuffer commandBuffer,
6762 uint32_t viewportCount,
6763 const VkViewport* pViewports)
6764{
6765 AEMU_SCOPED_TRACE("vkCmdSetViewportWithCountEXT");
6766 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6767 vkEnc->vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, true /* do lock */);
6768}
6769static void entry_vkCmdSetScissorWithCountEXT(
6770 VkCommandBuffer commandBuffer,
6771 uint32_t scissorCount,
6772 const VkRect2D* pScissors)
6773{
6774 AEMU_SCOPED_TRACE("vkCmdSetScissorWithCountEXT");
6775 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6776 vkEnc->vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, true /* do lock */);
6777}
6778static void entry_vkCmdBindVertexBuffers2EXT(
6779 VkCommandBuffer commandBuffer,
6780 uint32_t firstBinding,
6781 uint32_t bindingCount,
6782 const VkBuffer* pBuffers,
6783 const VkDeviceSize* pOffsets,
6784 const VkDeviceSize* pSizes,
6785 const VkDeviceSize* pStrides)
6786{
6787 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers2EXT");
6788 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6789 vkEnc->vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, true /* do lock */);
6790}
6791static void entry_vkCmdSetDepthTestEnableEXT(
6792 VkCommandBuffer commandBuffer,
6793 VkBool32 depthTestEnable)
6794{
6795 AEMU_SCOPED_TRACE("vkCmdSetDepthTestEnableEXT");
6796 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6797 vkEnc->vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, true /* do lock */);
6798}
6799static void entry_vkCmdSetDepthWriteEnableEXT(
6800 VkCommandBuffer commandBuffer,
6801 VkBool32 depthWriteEnable)
6802{
6803 AEMU_SCOPED_TRACE("vkCmdSetDepthWriteEnableEXT");
6804 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6805 vkEnc->vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, true /* do lock */);
6806}
6807static void entry_vkCmdSetDepthCompareOpEXT(
6808 VkCommandBuffer commandBuffer,
6809 VkCompareOp depthCompareOp)
6810{
6811 AEMU_SCOPED_TRACE("vkCmdSetDepthCompareOpEXT");
6812 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6813 vkEnc->vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, true /* do lock */);
6814}
6815static void entry_vkCmdSetDepthBoundsTestEnableEXT(
6816 VkCommandBuffer commandBuffer,
6817 VkBool32 depthBoundsTestEnable)
6818{
6819 AEMU_SCOPED_TRACE("vkCmdSetDepthBoundsTestEnableEXT");
6820 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6821 vkEnc->vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, true /* do lock */);
6822}
6823static void entry_vkCmdSetStencilTestEnableEXT(
6824 VkCommandBuffer commandBuffer,
6825 VkBool32 stencilTestEnable)
6826{
6827 AEMU_SCOPED_TRACE("vkCmdSetStencilTestEnableEXT");
6828 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6829 vkEnc->vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, true /* do lock */);
6830}
6831static void entry_vkCmdSetStencilOpEXT(
6832 VkCommandBuffer commandBuffer,
6833 VkStencilFaceFlags faceMask,
6834 VkStencilOp failOp,
6835 VkStencilOp passOp,
6836 VkStencilOp depthFailOp,
6837 VkCompareOp compareOp)
6838{
6839 AEMU_SCOPED_TRACE("vkCmdSetStencilOpEXT");
6840 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6841 vkEnc->vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, true /* do lock */);
6842}
6843#endif
6844#ifdef VK_EXT_shader_demote_to_helper_invocation
6845#endif
6846#ifdef VK_NV_device_generated_commands
6847static void entry_vkGetGeneratedCommandsMemoryRequirementsNV(
6848 VkDevice device,
6849 const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
6850 VkMemoryRequirements2* pMemoryRequirements)
6851{
6852 AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
6853 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6854 vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
6855}
6856static void dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV(
6857 VkDevice device,
6858 const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
6859 VkMemoryRequirements2* pMemoryRequirements)
6860{
6861 auto resources = ResourceTracker::get();
6862 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
6863 {
6864 sOnInvalidDynamicallyCheckedCall("vkGetGeneratedCommandsMemoryRequirementsNV", "VK_NV_device_generated_commands");
6865 }
6866 AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
6867 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6868 vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
6869}
6870static void entry_vkCmdPreprocessGeneratedCommandsNV(
6871 VkCommandBuffer commandBuffer,
6872 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
6873{
6874 AEMU_SCOPED_TRACE("vkCmdPreprocessGeneratedCommandsNV");
6875 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6876 vkEnc->vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, true /* do lock */);
6877}
6878static void entry_vkCmdExecuteGeneratedCommandsNV(
6879 VkCommandBuffer commandBuffer,
6880 VkBool32 isPreprocessed,
6881 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
6882{
6883 AEMU_SCOPED_TRACE("vkCmdExecuteGeneratedCommandsNV");
6884 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6885 vkEnc->vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, true /* do lock */);
6886}
6887static void entry_vkCmdBindPipelineShaderGroupNV(
6888 VkCommandBuffer commandBuffer,
6889 VkPipelineBindPoint pipelineBindPoint,
6890 VkPipeline pipeline,
6891 uint32_t groupIndex)
6892{
6893 AEMU_SCOPED_TRACE("vkCmdBindPipelineShaderGroupNV");
6894 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6895 vkEnc->vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, true /* do lock */);
6896}
6897static VkResult entry_vkCreateIndirectCommandsLayoutNV(
6898 VkDevice device,
6899 const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
6900 const VkAllocationCallbacks* pAllocator,
6901 VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
6902{
6903 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
6904 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6905 VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
6906 vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
6907 return vkCreateIndirectCommandsLayoutNV_VkResult_return;
6908}
6909static VkResult dynCheck_entry_vkCreateIndirectCommandsLayoutNV(
6910 VkDevice device,
6911 const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
6912 const VkAllocationCallbacks* pAllocator,
6913 VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
6914{
6915 auto resources = ResourceTracker::get();
6916 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
6917 {
6918 sOnInvalidDynamicallyCheckedCall("vkCreateIndirectCommandsLayoutNV", "VK_NV_device_generated_commands");
6919 }
6920 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
6921 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6922 VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
6923 vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
6924 return vkCreateIndirectCommandsLayoutNV_VkResult_return;
6925}
6926static void entry_vkDestroyIndirectCommandsLayoutNV(
6927 VkDevice device,
6928 VkIndirectCommandsLayoutNV indirectCommandsLayout,
6929 const VkAllocationCallbacks* pAllocator)
6930{
6931 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
6932 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6933 vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, true /* do lock */);
6934}
6935static void dynCheck_entry_vkDestroyIndirectCommandsLayoutNV(
6936 VkDevice device,
6937 VkIndirectCommandsLayoutNV indirectCommandsLayout,
6938 const VkAllocationCallbacks* pAllocator)
6939{
6940 auto resources = ResourceTracker::get();
6941 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
6942 {
6943 sOnInvalidDynamicallyCheckedCall("vkDestroyIndirectCommandsLayoutNV", "VK_NV_device_generated_commands");
6944 }
6945 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
6946 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6947 vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, true /* do lock */);
6948}
6949#endif
6950#ifdef VK_EXT_texel_buffer_alignment
6951#endif
6952#ifdef VK_QCOM_render_pass_transform
6953#endif
6954#ifdef VK_EXT_device_memory_report
6955#endif
6956#ifdef VK_EXT_robustness2
6957#endif
6958#ifdef VK_EXT_custom_border_color
6959#endif
6960#ifdef VK_GOOGLE_user_type
6961#endif
6962#ifdef VK_EXT_private_data
6963static VkResult entry_vkCreatePrivateDataSlotEXT(
6964 VkDevice device,
6965 const VkPrivateDataSlotCreateInfoEXT* pCreateInfo,
6966 const VkAllocationCallbacks* pAllocator,
6967 VkPrivateDataSlotEXT* pPrivateDataSlot)
6968{
6969 AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
6970 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6971 VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
6972 vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
6973 return vkCreatePrivateDataSlotEXT_VkResult_return;
6974}
6975static VkResult dynCheck_entry_vkCreatePrivateDataSlotEXT(
6976 VkDevice device,
6977 const VkPrivateDataSlotCreateInfoEXT* pCreateInfo,
6978 const VkAllocationCallbacks* pAllocator,
6979 VkPrivateDataSlotEXT* pPrivateDataSlot)
6980{
6981 auto resources = ResourceTracker::get();
6982 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
6983 {
6984 sOnInvalidDynamicallyCheckedCall("vkCreatePrivateDataSlotEXT", "VK_EXT_private_data");
6985 }
6986 AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
6987 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6988 VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
6989 vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
6990 return vkCreatePrivateDataSlotEXT_VkResult_return;
6991}
6992static void entry_vkDestroyPrivateDataSlotEXT(
6993 VkDevice device,
6994 VkPrivateDataSlotEXT privateDataSlot,
6995 const VkAllocationCallbacks* pAllocator)
6996{
6997 AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
6998 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6999 vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
7000}
7001static void dynCheck_entry_vkDestroyPrivateDataSlotEXT(
7002 VkDevice device,
7003 VkPrivateDataSlotEXT privateDataSlot,
7004 const VkAllocationCallbacks* pAllocator)
7005{
7006 auto resources = ResourceTracker::get();
7007 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
7008 {
7009 sOnInvalidDynamicallyCheckedCall("vkDestroyPrivateDataSlotEXT", "VK_EXT_private_data");
7010 }
7011 AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
7012 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7013 vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
7014}
7015static VkResult entry_vkSetPrivateDataEXT(
7016 VkDevice device,
7017 VkObjectType objectType,
7018 uint64_t objectHandle,
7019 VkPrivateDataSlotEXT privateDataSlot,
7020 uint64_t data)
7021{
7022 AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
7023 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7024 VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
7025 vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
7026 return vkSetPrivateDataEXT_VkResult_return;
7027}
7028static VkResult dynCheck_entry_vkSetPrivateDataEXT(
7029 VkDevice device,
7030 VkObjectType objectType,
7031 uint64_t objectHandle,
7032 VkPrivateDataSlotEXT privateDataSlot,
7033 uint64_t data)
7034{
7035 auto resources = ResourceTracker::get();
7036 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
7037 {
7038 sOnInvalidDynamicallyCheckedCall("vkSetPrivateDataEXT", "VK_EXT_private_data");
7039 }
7040 AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
7041 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7042 VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
7043 vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
7044 return vkSetPrivateDataEXT_VkResult_return;
7045}
7046static void entry_vkGetPrivateDataEXT(
7047 VkDevice device,
7048 VkObjectType objectType,
7049 uint64_t objectHandle,
7050 VkPrivateDataSlotEXT privateDataSlot,
7051 uint64_t* pData)
7052{
7053 AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
7054 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7055 vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, true /* do lock */);
7056}
7057static void dynCheck_entry_vkGetPrivateDataEXT(
7058 VkDevice device,
7059 VkObjectType objectType,
7060 uint64_t objectHandle,
7061 VkPrivateDataSlotEXT privateDataSlot,
7062 uint64_t* pData)
7063{
7064 auto resources = ResourceTracker::get();
7065 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
7066 {
7067 sOnInvalidDynamicallyCheckedCall("vkGetPrivateDataEXT", "VK_EXT_private_data");
7068 }
7069 AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
7070 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7071 vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, true /* do lock */);
7072}
7073#endif
7074#ifdef VK_EXT_pipeline_creation_cache_control
7075#endif
7076#ifdef VK_NV_device_diagnostics_config
7077#endif
7078#ifdef VK_QCOM_render_pass_store_ops
7079#endif
7080#ifdef VK_NV_fragment_shading_rate_enums
7081static void entry_vkCmdSetFragmentShadingRateEnumNV(
7082 VkCommandBuffer commandBuffer,
7083 VkFragmentShadingRateNV shadingRate,
7084 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
7085{
7086 AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateEnumNV");
7087 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7088 vkEnc->vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, true /* do lock */);
7089}
7090#endif
7091#ifdef VK_EXT_fragment_density_map2
7092#endif
7093#ifdef VK_QCOM_rotated_copy_commands
7094#endif
7095#ifdef VK_EXT_image_robustness
7096#endif
7097#ifdef VK_EXT_4444_formats
7098#endif
7099#ifdef VK_EXT_directfb_surface
7100static VkResult entry_vkCreateDirectFBSurfaceEXT(
7101 VkInstance instance,
7102 const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo,
7103 const VkAllocationCallbacks* pAllocator,
7104 VkSurfaceKHR* pSurface)
7105{
7106 AEMU_SCOPED_TRACE("vkCreateDirectFBSurfaceEXT");
7107 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7108 VkResult vkCreateDirectFBSurfaceEXT_VkResult_return = (VkResult)0;
7109 vkCreateDirectFBSurfaceEXT_VkResult_return = vkEnc->vkCreateDirectFBSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
7110 return vkCreateDirectFBSurfaceEXT_VkResult_return;
7111}
7112static VkBool32 entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT(
7113 VkPhysicalDevice physicalDevice,
7114 uint32_t queueFamilyIndex,
7115 IDirectFB* dfb)
7116{
7117 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDirectFBPresentationSupportEXT");
7118 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7119 VkBool32 vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return = (VkBool32)0;
7120 vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return = vkEnc->vkGetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice, queueFamilyIndex, dfb, true /* do lock */);
7121 return vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return;
7122}
7123#endif
Yilong Li71c43c52021-02-10 02:50:43 -08007124#ifdef VK_GOOGLE_gfxstream
Yilong Lia8d45f12021-02-07 02:30:21 -08007125static VkResult entry_vkMapMemoryIntoAddressSpaceGOOGLE(
7126 VkDevice device,
7127 VkDeviceMemory memory,
7128 uint64_t* pAddress)
7129{
7130 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
7131 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7132 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
7133 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
7134 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
7135}
7136static VkResult dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE(
7137 VkDevice device,
7138 VkDeviceMemory memory,
7139 uint64_t* pAddress)
7140{
7141 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007142 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Yilong Lia8d45f12021-02-07 02:30:21 -08007143 {
Yilong Li71c43c52021-02-10 02:50:43 -08007144 sOnInvalidDynamicallyCheckedCall("vkMapMemoryIntoAddressSpaceGOOGLE", "VK_GOOGLE_gfxstream");
Yilong Lia8d45f12021-02-07 02:30:21 -08007145 }
7146 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
7147 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7148 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
7149 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
7150 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
7151}
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07007152static 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();
Yilong Li71c43c52021-02-10 02:50:43 -08007185 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007186 {
Yilong Li71c43c52021-02-10 02:50:43 -08007187 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateSizedGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007188 }
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 Yangc53e7472019-03-27 08:50:55 -07007193static void entry_vkBeginCommandBufferAsyncGOOGLE(
7194 VkCommandBuffer commandBuffer,
7195 const VkCommandBufferBeginInfo* pBeginInfo)
7196{
7197 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007198 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007199 vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007200}
7201static void entry_vkEndCommandBufferAsyncGOOGLE(
7202 VkCommandBuffer commandBuffer)
7203{
7204 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007205 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007206 vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007207}
7208static void entry_vkResetCommandBufferAsyncGOOGLE(
7209 VkCommandBuffer commandBuffer,
7210 VkCommandBufferResetFlags flags)
7211{
7212 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007213 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007214 vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007215}
Lingfeng Yang39a276e2019-06-17 13:27:22 -07007216static void entry_vkCommandBufferHostSyncGOOGLE(
7217 VkCommandBuffer commandBuffer,
7218 uint32_t needHostSync,
7219 uint32_t sequenceNumber)
7220{
7221 AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007222 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007223 vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber, true /* do lock */);
Lingfeng Yang39a276e2019-06-17 13:27:22 -07007224}
Lingfeng Yang87f11962019-06-27 16:28:53 +00007225static VkResult entry_vkCreateImageWithRequirementsGOOGLE(
7226 VkDevice device,
7227 const VkImageCreateInfo* pCreateInfo,
7228 const VkAllocationCallbacks* pAllocator,
7229 VkImage* pImage,
7230 VkMemoryRequirements* pMemoryRequirements)
7231{
7232 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007233 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang87f11962019-06-27 16:28:53 +00007234 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007235 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
Lingfeng Yang87f11962019-06-27 16:28:53 +00007236 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
7237}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007238static VkResult dynCheck_entry_vkCreateImageWithRequirementsGOOGLE(
7239 VkDevice device,
7240 const VkImageCreateInfo* pCreateInfo,
7241 const VkAllocationCallbacks* pAllocator,
7242 VkImage* pImage,
7243 VkMemoryRequirements* pMemoryRequirements)
7244{
7245 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007246 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007247 {
Yilong Li71c43c52021-02-10 02:50:43 -08007248 sOnInvalidDynamicallyCheckedCall("vkCreateImageWithRequirementsGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007249 }
7250 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007251 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007252 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007253 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007254 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
7255}
Lingfeng Yang87f11962019-06-27 16:28:53 +00007256static VkResult entry_vkCreateBufferWithRequirementsGOOGLE(
7257 VkDevice device,
7258 const VkBufferCreateInfo* pCreateInfo,
7259 const VkAllocationCallbacks* pAllocator,
7260 VkBuffer* pBuffer,
7261 VkMemoryRequirements* pMemoryRequirements)
7262{
7263 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007264 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang87f11962019-06-27 16:28:53 +00007265 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007266 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
Lingfeng Yang87f11962019-06-27 16:28:53 +00007267 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
7268}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007269static VkResult dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE(
7270 VkDevice device,
7271 const VkBufferCreateInfo* pCreateInfo,
7272 const VkAllocationCallbacks* pAllocator,
7273 VkBuffer* pBuffer,
7274 VkMemoryRequirements* pMemoryRequirements)
7275{
7276 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007277 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007278 {
Yilong Li71c43c52021-02-10 02:50:43 -08007279 sOnInvalidDynamicallyCheckedCall("vkCreateBufferWithRequirementsGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007280 }
7281 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007282 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007283 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007284 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007285 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
7286}
Lingfeng Yang4c542412020-02-04 18:18:32 -08007287static VkResult entry_vkGetMemoryHostAddressInfoGOOGLE(
7288 VkDevice device,
7289 VkDeviceMemory memory,
7290 uint64_t* pAddress,
7291 uint64_t* pSize,
7292 uint64_t* pHostmemId)
7293{
7294 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007295 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4c542412020-02-04 18:18:32 -08007296 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007297 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
Lingfeng Yang4c542412020-02-04 18:18:32 -08007298 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
7299}
7300static VkResult dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE(
7301 VkDevice device,
7302 VkDeviceMemory memory,
7303 uint64_t* pAddress,
7304 uint64_t* pSize,
7305 uint64_t* pHostmemId)
7306{
7307 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007308 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang4c542412020-02-04 18:18:32 -08007309 {
Yilong Li71c43c52021-02-10 02:50:43 -08007310 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostAddressInfoGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang4c542412020-02-04 18:18:32 -08007311 }
7312 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007313 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4c542412020-02-04 18:18:32 -08007314 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007315 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
Lingfeng Yang4c542412020-02-04 18:18:32 -08007316 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
7317}
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007318static VkResult entry_vkFreeMemorySyncGOOGLE(
7319 VkDevice device,
7320 VkDeviceMemory memory,
7321 const VkAllocationCallbacks* pAllocator)
7322{
7323 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007324 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007325 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007326 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007327 return vkFreeMemorySyncGOOGLE_VkResult_return;
7328}
7329static VkResult dynCheck_entry_vkFreeMemorySyncGOOGLE(
7330 VkDevice device,
7331 VkDeviceMemory memory,
7332 const VkAllocationCallbacks* pAllocator)
7333{
7334 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007335 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007336 {
Yilong Li71c43c52021-02-10 02:50:43 -08007337 sOnInvalidDynamicallyCheckedCall("vkFreeMemorySyncGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007338 }
7339 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007340 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007341 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007342 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007343 return vkFreeMemorySyncGOOGLE_VkResult_return;
7344}
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007345static void entry_vkQueueHostSyncGOOGLE(
7346 VkQueue queue,
7347 uint32_t needHostSync,
7348 uint32_t sequenceNumber)
7349{
7350 AEMU_SCOPED_TRACE("vkQueueHostSyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007351 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007352 vkEnc->vkQueueHostSyncGOOGLE(queue, needHostSync, sequenceNumber, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007353}
7354static void entry_vkQueueSubmitAsyncGOOGLE(
7355 VkQueue queue,
7356 uint32_t submitCount,
7357 const VkSubmitInfo* pSubmits,
7358 VkFence fence)
7359{
7360 AEMU_SCOPED_TRACE("vkQueueSubmitAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007361 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007362 vkEnc->vkQueueSubmitAsyncGOOGLE(queue, submitCount, pSubmits, fence, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007363}
7364static void entry_vkQueueWaitIdleAsyncGOOGLE(
7365 VkQueue queue)
7366{
7367 AEMU_SCOPED_TRACE("vkQueueWaitIdleAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007368 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007369 vkEnc->vkQueueWaitIdleAsyncGOOGLE(queue, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007370}
7371static void entry_vkQueueBindSparseAsyncGOOGLE(
7372 VkQueue queue,
7373 uint32_t bindInfoCount,
7374 const VkBindSparseInfo* pBindInfo,
7375 VkFence fence)
7376{
7377 AEMU_SCOPED_TRACE("vkQueueBindSparseAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007378 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007379 vkEnc->vkQueueBindSparseAsyncGOOGLE(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007380}
Yilong Lia48b0102020-09-15 15:08:28 -07007381static void entry_vkGetLinearImageLayoutGOOGLE(
7382 VkDevice device,
7383 VkFormat format,
7384 VkDeviceSize* pOffset,
7385 VkDeviceSize* pRowPitchAlignment)
7386{
7387 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007388 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007389 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
Yilong Lia48b0102020-09-15 15:08:28 -07007390}
7391static void dynCheck_entry_vkGetLinearImageLayoutGOOGLE(
7392 VkDevice device,
7393 VkFormat format,
7394 VkDeviceSize* pOffset,
7395 VkDeviceSize* pRowPitchAlignment)
7396{
7397 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007398 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Yilong Lia48b0102020-09-15 15:08:28 -07007399 {
Yilong Li71c43c52021-02-10 02:50:43 -08007400 sOnInvalidDynamicallyCheckedCall("vkGetLinearImageLayoutGOOGLE", "VK_GOOGLE_gfxstream");
Yilong Lia48b0102020-09-15 15:08:28 -07007401 }
7402 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007403 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007404 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
Yilong Lia48b0102020-09-15 15:08:28 -07007405}
Lingfeng Yangded34672021-01-22 23:17:47 -08007406static void entry_vkQueueFlushCommandsGOOGLE(
7407 VkQueue queue,
7408 VkCommandBuffer commandBuffer,
7409 VkDeviceSize dataSize,
7410 const void* pData)
7411{
7412 AEMU_SCOPED_TRACE("vkQueueFlushCommandsGOOGLE");
7413 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
7414 vkEnc->vkQueueFlushCommandsGOOGLE(queue, commandBuffer, dataSize, pData, true /* do lock */);
7415}
Lingfeng Yang55676e02021-02-08 08:39:45 -08007416static void entry_vkQueueCommitDescriptorSetUpdatesGOOGLE(
7417 VkQueue queue,
7418 uint32_t descriptorPoolCount,
7419 const VkDescriptorPool* pDescriptorPools,
7420 uint32_t descriptorSetCount,
7421 const VkDescriptorSetLayout* pSetLayouts,
7422 const uint64_t* pDescriptorSetPoolIds,
7423 const uint32_t* pDescriptorSetWhichPool,
7424 const uint32_t* pDescriptorSetPendingAllocation,
7425 const uint32_t* pDescriptorWriteStartingIndices,
7426 uint32_t pendingDescriptorWriteCount,
7427 const VkWriteDescriptorSet* pPendingDescriptorWrites)
7428{
7429 AEMU_SCOPED_TRACE("vkQueueCommitDescriptorSetUpdatesGOOGLE");
7430 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
7431 vkEnc->vkQueueCommitDescriptorSetUpdatesGOOGLE(queue, descriptorPoolCount, pDescriptorPools, descriptorSetCount, pSetLayouts, pDescriptorSetPoolIds, pDescriptorSetWhichPool, pDescriptorSetPendingAllocation, pDescriptorWriteStartingIndices, pendingDescriptorWriteCount, pPendingDescriptorWrites, true /* do lock */);
7432}
7433static void entry_vkCollectDescriptorPoolIdsGOOGLE(
7434 VkDevice device,
7435 VkDescriptorPool descriptorPool,
7436 uint32_t* pPoolIdCount,
7437 uint64_t* pPoolIds)
7438{
7439 AEMU_SCOPED_TRACE("vkCollectDescriptorPoolIdsGOOGLE");
7440 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7441 vkEnc->vkCollectDescriptorPoolIdsGOOGLE(device, descriptorPool, pPoolIdCount, pPoolIds, true /* do lock */);
7442}
7443static void dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE(
7444 VkDevice device,
7445 VkDescriptorPool descriptorPool,
7446 uint32_t* pPoolIdCount,
7447 uint64_t* pPoolIds)
7448{
7449 auto resources = ResourceTracker::get();
7450 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
7451 {
7452 sOnInvalidDynamicallyCheckedCall("vkCollectDescriptorPoolIdsGOOGLE", "VK_GOOGLE_gfxstream");
7453 }
7454 AEMU_SCOPED_TRACE("vkCollectDescriptorPoolIdsGOOGLE");
7455 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7456 vkEnc->vkCollectDescriptorPoolIdsGOOGLE(device, descriptorPool, pPoolIdCount, pPoolIds, true /* do lock */);
7457}
Lingfeng Yangded34672021-01-22 23:17:47 -08007458#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007459#ifdef VK_KHR_acceleration_structure
7460static VkResult entry_vkCreateAccelerationStructureKHR(
7461 VkDevice device,
7462 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
7463 const VkAllocationCallbacks* pAllocator,
7464 VkAccelerationStructureKHR* pAccelerationStructure)
7465{
7466 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
7467 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7468 VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
7469 vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
7470 return vkCreateAccelerationStructureKHR_VkResult_return;
7471}
7472static VkResult dynCheck_entry_vkCreateAccelerationStructureKHR(
7473 VkDevice device,
7474 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
7475 const VkAllocationCallbacks* pAllocator,
7476 VkAccelerationStructureKHR* pAccelerationStructure)
7477{
7478 auto resources = ResourceTracker::get();
7479 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7480 {
7481 sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7482 }
7483 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
7484 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7485 VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
7486 vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
7487 return vkCreateAccelerationStructureKHR_VkResult_return;
7488}
7489static void entry_vkDestroyAccelerationStructureKHR(
7490 VkDevice device,
7491 VkAccelerationStructureKHR accelerationStructure,
7492 const VkAllocationCallbacks* pAllocator)
7493{
7494 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
7495 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7496 vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
7497}
7498static void dynCheck_entry_vkDestroyAccelerationStructureKHR(
7499 VkDevice device,
7500 VkAccelerationStructureKHR accelerationStructure,
7501 const VkAllocationCallbacks* pAllocator)
7502{
7503 auto resources = ResourceTracker::get();
7504 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7505 {
7506 sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7507 }
7508 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
7509 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7510 vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
7511}
7512static void entry_vkCmdBuildAccelerationStructuresKHR(
7513 VkCommandBuffer commandBuffer,
7514 uint32_t infoCount,
7515 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7516 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
7517{
7518 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresKHR");
7519 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7520 vkEnc->vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
7521}
7522static void entry_vkCmdBuildAccelerationStructuresIndirectKHR(
7523 VkCommandBuffer commandBuffer,
7524 uint32_t infoCount,
7525 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7526 const VkDeviceAddress* pIndirectDeviceAddresses,
7527 const uint32_t* pIndirectStrides,
7528 const uint32_t* const* ppMaxPrimitiveCounts)
7529{
7530 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresIndirectKHR");
7531 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7532 vkEnc->vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, true /* do lock */);
7533}
7534static VkResult entry_vkBuildAccelerationStructuresKHR(
7535 VkDevice device,
7536 VkDeferredOperationKHR deferredOperation,
7537 uint32_t infoCount,
7538 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7539 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
7540{
7541 AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
7542 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7543 VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
7544 vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
7545 return vkBuildAccelerationStructuresKHR_VkResult_return;
7546}
7547static VkResult dynCheck_entry_vkBuildAccelerationStructuresKHR(
7548 VkDevice device,
7549 VkDeferredOperationKHR deferredOperation,
7550 uint32_t infoCount,
7551 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7552 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
7553{
7554 auto resources = ResourceTracker::get();
7555 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7556 {
7557 sOnInvalidDynamicallyCheckedCall("vkBuildAccelerationStructuresKHR", "VK_KHR_acceleration_structure");
7558 }
7559 AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
7560 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7561 VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
7562 vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
7563 return vkBuildAccelerationStructuresKHR_VkResult_return;
7564}
7565static VkResult entry_vkCopyAccelerationStructureKHR(
7566 VkDevice device,
7567 VkDeferredOperationKHR deferredOperation,
7568 const VkCopyAccelerationStructureInfoKHR* pInfo)
7569{
7570 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
7571 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7572 VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
7573 vkCopyAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7574 return vkCopyAccelerationStructureKHR_VkResult_return;
7575}
7576static VkResult dynCheck_entry_vkCopyAccelerationStructureKHR(
7577 VkDevice device,
7578 VkDeferredOperationKHR deferredOperation,
7579 const VkCopyAccelerationStructureInfoKHR* pInfo)
7580{
7581 auto resources = ResourceTracker::get();
7582 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7583 {
7584 sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7585 }
7586 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
7587 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7588 VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
7589 vkCopyAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7590 return vkCopyAccelerationStructureKHR_VkResult_return;
7591}
7592static VkResult entry_vkCopyAccelerationStructureToMemoryKHR(
7593 VkDevice device,
7594 VkDeferredOperationKHR deferredOperation,
7595 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
7596{
7597 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
7598 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7599 VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
7600 vkCopyAccelerationStructureToMemoryKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, true /* do lock */);
7601 return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
7602}
7603static VkResult dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR(
7604 VkDevice device,
7605 VkDeferredOperationKHR deferredOperation,
7606 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
7607{
7608 auto resources = ResourceTracker::get();
7609 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7610 {
7611 sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureToMemoryKHR", "VK_KHR_acceleration_structure");
7612 }
7613 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
7614 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7615 VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
7616 vkCopyAccelerationStructureToMemoryKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, true /* do lock */);
7617 return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
7618}
7619static VkResult entry_vkCopyMemoryToAccelerationStructureKHR(
7620 VkDevice device,
7621 VkDeferredOperationKHR deferredOperation,
7622 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
7623{
7624 AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
7625 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7626 VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
7627 vkCopyMemoryToAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7628 return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
7629}
7630static VkResult dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR(
7631 VkDevice device,
7632 VkDeferredOperationKHR deferredOperation,
7633 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
7634{
7635 auto resources = ResourceTracker::get();
7636 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7637 {
7638 sOnInvalidDynamicallyCheckedCall("vkCopyMemoryToAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7639 }
7640 AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
7641 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7642 VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
7643 vkCopyMemoryToAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7644 return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
7645}
7646static VkResult entry_vkWriteAccelerationStructuresPropertiesKHR(
7647 VkDevice device,
7648 uint32_t accelerationStructureCount,
7649 const VkAccelerationStructureKHR* pAccelerationStructures,
7650 VkQueryType queryType,
7651 size_t dataSize,
7652 void* pData,
7653 size_t stride)
7654{
7655 AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
7656 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7657 VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
7658 vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
7659 return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
7660}
7661static VkResult dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR(
7662 VkDevice device,
7663 uint32_t accelerationStructureCount,
7664 const VkAccelerationStructureKHR* pAccelerationStructures,
7665 VkQueryType queryType,
7666 size_t dataSize,
7667 void* pData,
7668 size_t stride)
7669{
7670 auto resources = ResourceTracker::get();
7671 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7672 {
7673 sOnInvalidDynamicallyCheckedCall("vkWriteAccelerationStructuresPropertiesKHR", "VK_KHR_acceleration_structure");
7674 }
7675 AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
7676 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7677 VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
7678 vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
7679 return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
7680}
7681static void entry_vkCmdCopyAccelerationStructureKHR(
7682 VkCommandBuffer commandBuffer,
7683 const VkCopyAccelerationStructureInfoKHR* pInfo)
7684{
7685 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureKHR");
7686 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7687 vkEnc->vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
7688}
7689static void entry_vkCmdCopyAccelerationStructureToMemoryKHR(
7690 VkCommandBuffer commandBuffer,
7691 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
7692{
7693 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureToMemoryKHR");
7694 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7695 vkEnc->vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, true /* do lock */);
7696}
7697static void entry_vkCmdCopyMemoryToAccelerationStructureKHR(
7698 VkCommandBuffer commandBuffer,
7699 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
7700{
7701 AEMU_SCOPED_TRACE("vkCmdCopyMemoryToAccelerationStructureKHR");
7702 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7703 vkEnc->vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
7704}
7705static VkDeviceAddress entry_vkGetAccelerationStructureDeviceAddressKHR(
7706 VkDevice device,
7707 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
7708{
7709 AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
7710 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7711 VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
7712 vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
7713 return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
7714}
7715static VkDeviceAddress dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR(
7716 VkDevice device,
7717 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
7718{
7719 auto resources = ResourceTracker::get();
7720 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7721 {
7722 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureDeviceAddressKHR", "VK_KHR_acceleration_structure");
7723 }
7724 AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
7725 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7726 VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
7727 vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
7728 return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
7729}
7730static void entry_vkCmdWriteAccelerationStructuresPropertiesKHR(
7731 VkCommandBuffer commandBuffer,
7732 uint32_t accelerationStructureCount,
7733 const VkAccelerationStructureKHR* pAccelerationStructures,
7734 VkQueryType queryType,
7735 VkQueryPool queryPool,
7736 uint32_t firstQuery)
7737{
7738 AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesKHR");
7739 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7740 vkEnc->vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
7741}
7742static void entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
7743 VkDevice device,
7744 const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
7745 VkAccelerationStructureCompatibilityKHR* pCompatibility)
7746{
7747 AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
7748 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7749 vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
7750}
7751static void dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
7752 VkDevice device,
7753 const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
7754 VkAccelerationStructureCompatibilityKHR* pCompatibility)
7755{
7756 auto resources = ResourceTracker::get();
7757 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7758 {
7759 sOnInvalidDynamicallyCheckedCall("vkGetDeviceAccelerationStructureCompatibilityKHR", "VK_KHR_acceleration_structure");
7760 }
7761 AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
7762 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7763 vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
7764}
7765static void entry_vkGetAccelerationStructureBuildSizesKHR(
7766 VkDevice device,
7767 VkAccelerationStructureBuildTypeKHR buildType,
7768 const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
7769 const uint32_t* pMaxPrimitiveCounts,
7770 VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
7771{
7772 AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
7773 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7774 vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
7775}
7776static void dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR(
7777 VkDevice device,
7778 VkAccelerationStructureBuildTypeKHR buildType,
7779 const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
7780 const uint32_t* pMaxPrimitiveCounts,
7781 VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
7782{
7783 auto resources = ResourceTracker::get();
7784 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7785 {
7786 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureBuildSizesKHR", "VK_KHR_acceleration_structure");
7787 }
7788 AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
7789 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7790 vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
7791}
7792#endif
7793#ifdef VK_KHR_ray_tracing_pipeline
7794static void entry_vkCmdTraceRaysKHR(
7795 VkCommandBuffer commandBuffer,
7796 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
7797 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
7798 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
7799 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
7800 uint32_t width,
7801 uint32_t height,
7802 uint32_t depth)
7803{
7804 AEMU_SCOPED_TRACE("vkCmdTraceRaysKHR");
7805 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7806 vkEnc->vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, true /* do lock */);
7807}
7808static VkResult entry_vkCreateRayTracingPipelinesKHR(
7809 VkDevice device,
7810 VkDeferredOperationKHR deferredOperation,
7811 VkPipelineCache pipelineCache,
7812 uint32_t createInfoCount,
7813 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
7814 const VkAllocationCallbacks* pAllocator,
7815 VkPipeline* pPipelines)
7816{
7817 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
7818 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7819 VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
7820 vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
7821 return vkCreateRayTracingPipelinesKHR_VkResult_return;
7822}
7823static VkResult dynCheck_entry_vkCreateRayTracingPipelinesKHR(
7824 VkDevice device,
7825 VkDeferredOperationKHR deferredOperation,
7826 VkPipelineCache pipelineCache,
7827 uint32_t createInfoCount,
7828 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
7829 const VkAllocationCallbacks* pAllocator,
7830 VkPipeline* pPipelines)
7831{
7832 auto resources = ResourceTracker::get();
7833 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
7834 {
7835 sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesKHR", "VK_KHR_ray_tracing_pipeline");
7836 }
7837 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
7838 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7839 VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
7840 vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
7841 return vkCreateRayTracingPipelinesKHR_VkResult_return;
7842}
7843static VkResult entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
7844 VkDevice device,
7845 VkPipeline pipeline,
7846 uint32_t firstGroup,
7847 uint32_t groupCount,
7848 size_t dataSize,
7849 void* pData)
7850{
7851 AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
7852 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7853 VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
7854 vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
7855 return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
7856}
7857static VkResult dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
7858 VkDevice device,
7859 VkPipeline pipeline,
7860 uint32_t firstGroup,
7861 uint32_t groupCount,
7862 size_t dataSize,
7863 void* pData)
7864{
7865 auto resources = ResourceTracker::get();
7866 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
7867 {
7868 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR", "VK_KHR_ray_tracing_pipeline");
7869 }
7870 AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
7871 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7872 VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
7873 vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
7874 return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
7875}
7876static void entry_vkCmdTraceRaysIndirectKHR(
7877 VkCommandBuffer commandBuffer,
7878 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
7879 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
7880 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
7881 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
7882 VkDeviceAddress indirectDeviceAddress)
7883{
7884 AEMU_SCOPED_TRACE("vkCmdTraceRaysIndirectKHR");
7885 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7886 vkEnc->vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, true /* do lock */);
7887}
7888static VkDeviceSize entry_vkGetRayTracingShaderGroupStackSizeKHR(
7889 VkDevice device,
7890 VkPipeline pipeline,
7891 uint32_t group,
7892 VkShaderGroupShaderKHR groupShader)
7893{
7894 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
7895 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7896 VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
7897 vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
7898 return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
7899}
7900static VkDeviceSize dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR(
7901 VkDevice device,
7902 VkPipeline pipeline,
7903 uint32_t group,
7904 VkShaderGroupShaderKHR groupShader)
7905{
7906 auto resources = ResourceTracker::get();
7907 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
7908 {
7909 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupStackSizeKHR", "VK_KHR_ray_tracing_pipeline");
7910 }
7911 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
7912 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7913 VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
7914 vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
7915 return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
7916}
7917static void entry_vkCmdSetRayTracingPipelineStackSizeKHR(
7918 VkCommandBuffer commandBuffer,
7919 uint32_t pipelineStackSize)
7920{
7921 AEMU_SCOPED_TRACE("vkCmdSetRayTracingPipelineStackSizeKHR");
7922 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7923 vkEnc->vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, true /* do lock */);
7924}
7925#endif
7926#ifdef VK_KHR_ray_query
7927#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007928void* goldfish_vulkan_get_proc_address(const char* name){
7929#ifdef VK_VERSION_1_0
7930 if (!strcmp(name, "vkCreateInstance"))
7931 {
7932 return (void*)entry_vkCreateInstance;
7933 }
7934 if (!strcmp(name, "vkDestroyInstance"))
7935 {
7936 return (void*)entry_vkDestroyInstance;
7937 }
7938 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
7939 {
7940 return (void*)entry_vkEnumeratePhysicalDevices;
7941 }
7942 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
7943 {
7944 return (void*)entry_vkGetPhysicalDeviceFeatures;
7945 }
7946 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
7947 {
7948 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
7949 }
7950 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
7951 {
7952 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
7953 }
7954 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
7955 {
7956 return (void*)entry_vkGetPhysicalDeviceProperties;
7957 }
7958 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
7959 {
7960 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
7961 }
7962 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
7963 {
7964 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
7965 }
7966 if (!strcmp(name, "vkGetInstanceProcAddr"))
7967 {
7968 return (void*)entry_vkGetInstanceProcAddr;
7969 }
7970 if (!strcmp(name, "vkGetDeviceProcAddr"))
7971 {
7972 return (void*)entry_vkGetDeviceProcAddr;
7973 }
7974 if (!strcmp(name, "vkCreateDevice"))
7975 {
7976 return (void*)entry_vkCreateDevice;
7977 }
7978 if (!strcmp(name, "vkDestroyDevice"))
7979 {
7980 return (void*)entry_vkDestroyDevice;
7981 }
7982 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
7983 {
7984 return (void*)entry_vkEnumerateInstanceExtensionProperties;
7985 }
7986 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
7987 {
7988 return (void*)entry_vkEnumerateDeviceExtensionProperties;
7989 }
7990 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
7991 {
7992 return (void*)entry_vkEnumerateInstanceLayerProperties;
7993 }
7994 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
7995 {
7996 return (void*)entry_vkEnumerateDeviceLayerProperties;
7997 }
7998 if (!strcmp(name, "vkGetDeviceQueue"))
7999 {
8000 return (void*)entry_vkGetDeviceQueue;
8001 }
8002 if (!strcmp(name, "vkQueueSubmit"))
8003 {
8004 return (void*)entry_vkQueueSubmit;
8005 }
8006 if (!strcmp(name, "vkQueueWaitIdle"))
8007 {
8008 return (void*)entry_vkQueueWaitIdle;
8009 }
8010 if (!strcmp(name, "vkDeviceWaitIdle"))
8011 {
8012 return (void*)entry_vkDeviceWaitIdle;
8013 }
8014 if (!strcmp(name, "vkAllocateMemory"))
8015 {
8016 return (void*)entry_vkAllocateMemory;
8017 }
8018 if (!strcmp(name, "vkFreeMemory"))
8019 {
8020 return (void*)entry_vkFreeMemory;
8021 }
8022 if (!strcmp(name, "vkMapMemory"))
8023 {
8024 return (void*)entry_vkMapMemory;
8025 }
8026 if (!strcmp(name, "vkUnmapMemory"))
8027 {
8028 return (void*)entry_vkUnmapMemory;
8029 }
8030 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
8031 {
8032 return (void*)entry_vkFlushMappedMemoryRanges;
8033 }
8034 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
8035 {
8036 return (void*)entry_vkInvalidateMappedMemoryRanges;
8037 }
8038 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
8039 {
8040 return (void*)entry_vkGetDeviceMemoryCommitment;
8041 }
8042 if (!strcmp(name, "vkBindBufferMemory"))
8043 {
8044 return (void*)entry_vkBindBufferMemory;
8045 }
8046 if (!strcmp(name, "vkBindImageMemory"))
8047 {
8048 return (void*)entry_vkBindImageMemory;
8049 }
8050 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
8051 {
8052 return (void*)entry_vkGetBufferMemoryRequirements;
8053 }
8054 if (!strcmp(name, "vkGetImageMemoryRequirements"))
8055 {
8056 return (void*)entry_vkGetImageMemoryRequirements;
8057 }
8058 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
8059 {
8060 return (void*)entry_vkGetImageSparseMemoryRequirements;
8061 }
8062 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
8063 {
8064 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
8065 }
8066 if (!strcmp(name, "vkQueueBindSparse"))
8067 {
8068 return (void*)entry_vkQueueBindSparse;
8069 }
8070 if (!strcmp(name, "vkCreateFence"))
8071 {
8072 return (void*)entry_vkCreateFence;
8073 }
8074 if (!strcmp(name, "vkDestroyFence"))
8075 {
8076 return (void*)entry_vkDestroyFence;
8077 }
8078 if (!strcmp(name, "vkResetFences"))
8079 {
8080 return (void*)entry_vkResetFences;
8081 }
8082 if (!strcmp(name, "vkGetFenceStatus"))
8083 {
8084 return (void*)entry_vkGetFenceStatus;
8085 }
8086 if (!strcmp(name, "vkWaitForFences"))
8087 {
8088 return (void*)entry_vkWaitForFences;
8089 }
8090 if (!strcmp(name, "vkCreateSemaphore"))
8091 {
8092 return (void*)entry_vkCreateSemaphore;
8093 }
8094 if (!strcmp(name, "vkDestroySemaphore"))
8095 {
8096 return (void*)entry_vkDestroySemaphore;
8097 }
8098 if (!strcmp(name, "vkCreateEvent"))
8099 {
8100 return (void*)entry_vkCreateEvent;
8101 }
8102 if (!strcmp(name, "vkDestroyEvent"))
8103 {
8104 return (void*)entry_vkDestroyEvent;
8105 }
8106 if (!strcmp(name, "vkGetEventStatus"))
8107 {
8108 return (void*)entry_vkGetEventStatus;
8109 }
8110 if (!strcmp(name, "vkSetEvent"))
8111 {
8112 return (void*)entry_vkSetEvent;
8113 }
8114 if (!strcmp(name, "vkResetEvent"))
8115 {
8116 return (void*)entry_vkResetEvent;
8117 }
8118 if (!strcmp(name, "vkCreateQueryPool"))
8119 {
8120 return (void*)entry_vkCreateQueryPool;
8121 }
8122 if (!strcmp(name, "vkDestroyQueryPool"))
8123 {
8124 return (void*)entry_vkDestroyQueryPool;
8125 }
8126 if (!strcmp(name, "vkGetQueryPoolResults"))
8127 {
8128 return (void*)entry_vkGetQueryPoolResults;
8129 }
8130 if (!strcmp(name, "vkCreateBuffer"))
8131 {
8132 return (void*)entry_vkCreateBuffer;
8133 }
8134 if (!strcmp(name, "vkDestroyBuffer"))
8135 {
8136 return (void*)entry_vkDestroyBuffer;
8137 }
8138 if (!strcmp(name, "vkCreateBufferView"))
8139 {
8140 return (void*)entry_vkCreateBufferView;
8141 }
8142 if (!strcmp(name, "vkDestroyBufferView"))
8143 {
8144 return (void*)entry_vkDestroyBufferView;
8145 }
8146 if (!strcmp(name, "vkCreateImage"))
8147 {
8148 return (void*)entry_vkCreateImage;
8149 }
8150 if (!strcmp(name, "vkDestroyImage"))
8151 {
8152 return (void*)entry_vkDestroyImage;
8153 }
8154 if (!strcmp(name, "vkGetImageSubresourceLayout"))
8155 {
8156 return (void*)entry_vkGetImageSubresourceLayout;
8157 }
8158 if (!strcmp(name, "vkCreateImageView"))
8159 {
8160 return (void*)entry_vkCreateImageView;
8161 }
8162 if (!strcmp(name, "vkDestroyImageView"))
8163 {
8164 return (void*)entry_vkDestroyImageView;
8165 }
8166 if (!strcmp(name, "vkCreateShaderModule"))
8167 {
8168 return (void*)entry_vkCreateShaderModule;
8169 }
8170 if (!strcmp(name, "vkDestroyShaderModule"))
8171 {
8172 return (void*)entry_vkDestroyShaderModule;
8173 }
8174 if (!strcmp(name, "vkCreatePipelineCache"))
8175 {
8176 return (void*)entry_vkCreatePipelineCache;
8177 }
8178 if (!strcmp(name, "vkDestroyPipelineCache"))
8179 {
8180 return (void*)entry_vkDestroyPipelineCache;
8181 }
8182 if (!strcmp(name, "vkGetPipelineCacheData"))
8183 {
8184 return (void*)entry_vkGetPipelineCacheData;
8185 }
8186 if (!strcmp(name, "vkMergePipelineCaches"))
8187 {
8188 return (void*)entry_vkMergePipelineCaches;
8189 }
8190 if (!strcmp(name, "vkCreateGraphicsPipelines"))
8191 {
8192 return (void*)entry_vkCreateGraphicsPipelines;
8193 }
8194 if (!strcmp(name, "vkCreateComputePipelines"))
8195 {
8196 return (void*)entry_vkCreateComputePipelines;
8197 }
8198 if (!strcmp(name, "vkDestroyPipeline"))
8199 {
8200 return (void*)entry_vkDestroyPipeline;
8201 }
8202 if (!strcmp(name, "vkCreatePipelineLayout"))
8203 {
8204 return (void*)entry_vkCreatePipelineLayout;
8205 }
8206 if (!strcmp(name, "vkDestroyPipelineLayout"))
8207 {
8208 return (void*)entry_vkDestroyPipelineLayout;
8209 }
8210 if (!strcmp(name, "vkCreateSampler"))
8211 {
8212 return (void*)entry_vkCreateSampler;
8213 }
8214 if (!strcmp(name, "vkDestroySampler"))
8215 {
8216 return (void*)entry_vkDestroySampler;
8217 }
8218 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
8219 {
8220 return (void*)entry_vkCreateDescriptorSetLayout;
8221 }
8222 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
8223 {
8224 return (void*)entry_vkDestroyDescriptorSetLayout;
8225 }
8226 if (!strcmp(name, "vkCreateDescriptorPool"))
8227 {
8228 return (void*)entry_vkCreateDescriptorPool;
8229 }
8230 if (!strcmp(name, "vkDestroyDescriptorPool"))
8231 {
8232 return (void*)entry_vkDestroyDescriptorPool;
8233 }
8234 if (!strcmp(name, "vkResetDescriptorPool"))
8235 {
8236 return (void*)entry_vkResetDescriptorPool;
8237 }
8238 if (!strcmp(name, "vkAllocateDescriptorSets"))
8239 {
8240 return (void*)entry_vkAllocateDescriptorSets;
8241 }
8242 if (!strcmp(name, "vkFreeDescriptorSets"))
8243 {
8244 return (void*)entry_vkFreeDescriptorSets;
8245 }
8246 if (!strcmp(name, "vkUpdateDescriptorSets"))
8247 {
8248 return (void*)entry_vkUpdateDescriptorSets;
8249 }
8250 if (!strcmp(name, "vkCreateFramebuffer"))
8251 {
8252 return (void*)entry_vkCreateFramebuffer;
8253 }
8254 if (!strcmp(name, "vkDestroyFramebuffer"))
8255 {
8256 return (void*)entry_vkDestroyFramebuffer;
8257 }
8258 if (!strcmp(name, "vkCreateRenderPass"))
8259 {
8260 return (void*)entry_vkCreateRenderPass;
8261 }
8262 if (!strcmp(name, "vkDestroyRenderPass"))
8263 {
8264 return (void*)entry_vkDestroyRenderPass;
8265 }
8266 if (!strcmp(name, "vkGetRenderAreaGranularity"))
8267 {
8268 return (void*)entry_vkGetRenderAreaGranularity;
8269 }
8270 if (!strcmp(name, "vkCreateCommandPool"))
8271 {
8272 return (void*)entry_vkCreateCommandPool;
8273 }
8274 if (!strcmp(name, "vkDestroyCommandPool"))
8275 {
8276 return (void*)entry_vkDestroyCommandPool;
8277 }
8278 if (!strcmp(name, "vkResetCommandPool"))
8279 {
8280 return (void*)entry_vkResetCommandPool;
8281 }
8282 if (!strcmp(name, "vkAllocateCommandBuffers"))
8283 {
8284 return (void*)entry_vkAllocateCommandBuffers;
8285 }
8286 if (!strcmp(name, "vkFreeCommandBuffers"))
8287 {
8288 return (void*)entry_vkFreeCommandBuffers;
8289 }
8290 if (!strcmp(name, "vkBeginCommandBuffer"))
8291 {
8292 return (void*)entry_vkBeginCommandBuffer;
8293 }
8294 if (!strcmp(name, "vkEndCommandBuffer"))
8295 {
8296 return (void*)entry_vkEndCommandBuffer;
8297 }
8298 if (!strcmp(name, "vkResetCommandBuffer"))
8299 {
8300 return (void*)entry_vkResetCommandBuffer;
8301 }
8302 if (!strcmp(name, "vkCmdBindPipeline"))
8303 {
8304 return (void*)entry_vkCmdBindPipeline;
8305 }
8306 if (!strcmp(name, "vkCmdSetViewport"))
8307 {
8308 return (void*)entry_vkCmdSetViewport;
8309 }
8310 if (!strcmp(name, "vkCmdSetScissor"))
8311 {
8312 return (void*)entry_vkCmdSetScissor;
8313 }
8314 if (!strcmp(name, "vkCmdSetLineWidth"))
8315 {
8316 return (void*)entry_vkCmdSetLineWidth;
8317 }
8318 if (!strcmp(name, "vkCmdSetDepthBias"))
8319 {
8320 return (void*)entry_vkCmdSetDepthBias;
8321 }
8322 if (!strcmp(name, "vkCmdSetBlendConstants"))
8323 {
8324 return (void*)entry_vkCmdSetBlendConstants;
8325 }
8326 if (!strcmp(name, "vkCmdSetDepthBounds"))
8327 {
8328 return (void*)entry_vkCmdSetDepthBounds;
8329 }
8330 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
8331 {
8332 return (void*)entry_vkCmdSetStencilCompareMask;
8333 }
8334 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
8335 {
8336 return (void*)entry_vkCmdSetStencilWriteMask;
8337 }
8338 if (!strcmp(name, "vkCmdSetStencilReference"))
8339 {
8340 return (void*)entry_vkCmdSetStencilReference;
8341 }
8342 if (!strcmp(name, "vkCmdBindDescriptorSets"))
8343 {
8344 return (void*)entry_vkCmdBindDescriptorSets;
8345 }
8346 if (!strcmp(name, "vkCmdBindIndexBuffer"))
8347 {
8348 return (void*)entry_vkCmdBindIndexBuffer;
8349 }
8350 if (!strcmp(name, "vkCmdBindVertexBuffers"))
8351 {
8352 return (void*)entry_vkCmdBindVertexBuffers;
8353 }
8354 if (!strcmp(name, "vkCmdDraw"))
8355 {
8356 return (void*)entry_vkCmdDraw;
8357 }
8358 if (!strcmp(name, "vkCmdDrawIndexed"))
8359 {
8360 return (void*)entry_vkCmdDrawIndexed;
8361 }
8362 if (!strcmp(name, "vkCmdDrawIndirect"))
8363 {
8364 return (void*)entry_vkCmdDrawIndirect;
8365 }
8366 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
8367 {
8368 return (void*)entry_vkCmdDrawIndexedIndirect;
8369 }
8370 if (!strcmp(name, "vkCmdDispatch"))
8371 {
8372 return (void*)entry_vkCmdDispatch;
8373 }
8374 if (!strcmp(name, "vkCmdDispatchIndirect"))
8375 {
8376 return (void*)entry_vkCmdDispatchIndirect;
8377 }
8378 if (!strcmp(name, "vkCmdCopyBuffer"))
8379 {
8380 return (void*)entry_vkCmdCopyBuffer;
8381 }
8382 if (!strcmp(name, "vkCmdCopyImage"))
8383 {
8384 return (void*)entry_vkCmdCopyImage;
8385 }
8386 if (!strcmp(name, "vkCmdBlitImage"))
8387 {
8388 return (void*)entry_vkCmdBlitImage;
8389 }
8390 if (!strcmp(name, "vkCmdCopyBufferToImage"))
8391 {
8392 return (void*)entry_vkCmdCopyBufferToImage;
8393 }
8394 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
8395 {
8396 return (void*)entry_vkCmdCopyImageToBuffer;
8397 }
8398 if (!strcmp(name, "vkCmdUpdateBuffer"))
8399 {
8400 return (void*)entry_vkCmdUpdateBuffer;
8401 }
8402 if (!strcmp(name, "vkCmdFillBuffer"))
8403 {
8404 return (void*)entry_vkCmdFillBuffer;
8405 }
8406 if (!strcmp(name, "vkCmdClearColorImage"))
8407 {
8408 return (void*)entry_vkCmdClearColorImage;
8409 }
8410 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
8411 {
8412 return (void*)entry_vkCmdClearDepthStencilImage;
8413 }
8414 if (!strcmp(name, "vkCmdClearAttachments"))
8415 {
8416 return (void*)entry_vkCmdClearAttachments;
8417 }
8418 if (!strcmp(name, "vkCmdResolveImage"))
8419 {
8420 return (void*)entry_vkCmdResolveImage;
8421 }
8422 if (!strcmp(name, "vkCmdSetEvent"))
8423 {
8424 return (void*)entry_vkCmdSetEvent;
8425 }
8426 if (!strcmp(name, "vkCmdResetEvent"))
8427 {
8428 return (void*)entry_vkCmdResetEvent;
8429 }
8430 if (!strcmp(name, "vkCmdWaitEvents"))
8431 {
8432 return (void*)entry_vkCmdWaitEvents;
8433 }
8434 if (!strcmp(name, "vkCmdPipelineBarrier"))
8435 {
8436 return (void*)entry_vkCmdPipelineBarrier;
8437 }
8438 if (!strcmp(name, "vkCmdBeginQuery"))
8439 {
8440 return (void*)entry_vkCmdBeginQuery;
8441 }
8442 if (!strcmp(name, "vkCmdEndQuery"))
8443 {
8444 return (void*)entry_vkCmdEndQuery;
8445 }
8446 if (!strcmp(name, "vkCmdResetQueryPool"))
8447 {
8448 return (void*)entry_vkCmdResetQueryPool;
8449 }
8450 if (!strcmp(name, "vkCmdWriteTimestamp"))
8451 {
8452 return (void*)entry_vkCmdWriteTimestamp;
8453 }
8454 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
8455 {
8456 return (void*)entry_vkCmdCopyQueryPoolResults;
8457 }
8458 if (!strcmp(name, "vkCmdPushConstants"))
8459 {
8460 return (void*)entry_vkCmdPushConstants;
8461 }
8462 if (!strcmp(name, "vkCmdBeginRenderPass"))
8463 {
8464 return (void*)entry_vkCmdBeginRenderPass;
8465 }
8466 if (!strcmp(name, "vkCmdNextSubpass"))
8467 {
8468 return (void*)entry_vkCmdNextSubpass;
8469 }
8470 if (!strcmp(name, "vkCmdEndRenderPass"))
8471 {
8472 return (void*)entry_vkCmdEndRenderPass;
8473 }
8474 if (!strcmp(name, "vkCmdExecuteCommands"))
8475 {
8476 return (void*)entry_vkCmdExecuteCommands;
8477 }
8478#endif
8479#ifdef VK_VERSION_1_1
8480 if (!strcmp(name, "vkEnumerateInstanceVersion"))
8481 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008482 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008483 }
8484 if (!strcmp(name, "vkBindBufferMemory2"))
8485 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008486 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008487 }
8488 if (!strcmp(name, "vkBindImageMemory2"))
8489 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008490 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008491 }
8492 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
8493 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008494 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008495 }
8496 if (!strcmp(name, "vkCmdSetDeviceMask"))
8497 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008498 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008499 }
8500 if (!strcmp(name, "vkCmdDispatchBase"))
8501 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008502 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008503 }
8504 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
8505 {
Lingfeng Yang113689e2018-11-11 16:48:50 -08008506 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008507 }
8508 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
8509 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008510 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008511 }
8512 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
8513 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008514 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008515 }
8516 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
8517 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008518 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008519 }
8520 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
8521 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008522 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008523 }
8524 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
8525 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008526 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008527 }
8528 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
8529 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008530 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008531 }
8532 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
8533 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008534 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008535 }
8536 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
8537 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008538 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008539 }
8540 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
8541 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008542 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008543 }
8544 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
8545 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008546 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008547 }
8548 if (!strcmp(name, "vkTrimCommandPool"))
8549 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008550 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008551 }
8552 if (!strcmp(name, "vkGetDeviceQueue2"))
8553 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008554 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008555 }
8556 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
8557 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008558 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008559 }
8560 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
8561 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008562 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008563 }
8564 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
8565 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008566 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008567 }
8568 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
8569 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008570 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008571 }
8572 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
8573 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008574 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008575 }
8576 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
8577 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008578 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008579 }
8580 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
8581 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008582 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008583 }
8584 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
8585 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008586 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008587 }
8588 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
8589 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008590 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008591 }
8592#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008593#ifdef VK_VERSION_1_2
8594 if (!strcmp(name, "vkCmdDrawIndirectCount"))
8595 {
8596 return nullptr;
8597 }
8598 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
8599 {
8600 return nullptr;
8601 }
8602 if (!strcmp(name, "vkCreateRenderPass2"))
8603 {
8604 return nullptr;
8605 }
8606 if (!strcmp(name, "vkCmdBeginRenderPass2"))
8607 {
8608 return nullptr;
8609 }
8610 if (!strcmp(name, "vkCmdNextSubpass2"))
8611 {
8612 return nullptr;
8613 }
8614 if (!strcmp(name, "vkCmdEndRenderPass2"))
8615 {
8616 return nullptr;
8617 }
8618 if (!strcmp(name, "vkResetQueryPool"))
8619 {
8620 return nullptr;
8621 }
8622 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
8623 {
8624 return nullptr;
8625 }
8626 if (!strcmp(name, "vkWaitSemaphores"))
8627 {
8628 return nullptr;
8629 }
8630 if (!strcmp(name, "vkSignalSemaphore"))
8631 {
8632 return nullptr;
8633 }
8634 if (!strcmp(name, "vkGetBufferDeviceAddress"))
8635 {
8636 return nullptr;
8637 }
8638 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
8639 {
8640 return nullptr;
8641 }
8642 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
8643 {
8644 return nullptr;
8645 }
8646#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008647#ifdef VK_KHR_surface
8648 if (!strcmp(name, "vkDestroySurfaceKHR"))
8649 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008650 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008651 }
8652 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
8653 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008654 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008655 }
8656 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
8657 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008658 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008659 }
8660 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
8661 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008662 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008663 }
8664 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
8665 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008666 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008667 }
8668#endif
8669#ifdef VK_KHR_swapchain
8670 if (!strcmp(name, "vkCreateSwapchainKHR"))
8671 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008672 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008673 }
8674 if (!strcmp(name, "vkDestroySwapchainKHR"))
8675 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008676 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008677 }
8678 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
8679 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008680 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008681 }
8682 if (!strcmp(name, "vkAcquireNextImageKHR"))
8683 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008684 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008685 }
8686 if (!strcmp(name, "vkQueuePresentKHR"))
8687 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008688 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008689 }
8690 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
8691 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008692 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008693 }
8694 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
8695 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008696 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008697 }
8698 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
8699 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008700 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008701 }
8702 if (!strcmp(name, "vkAcquireNextImage2KHR"))
8703 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008704 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008705 }
8706#endif
8707#ifdef VK_KHR_display
8708 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
8709 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008710 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008711 }
8712 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
8713 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008714 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008715 }
8716 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
8717 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008718 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008719 }
8720 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
8721 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008722 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008723 }
8724 if (!strcmp(name, "vkCreateDisplayModeKHR"))
8725 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008726 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008727 }
8728 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
8729 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008730 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008731 }
8732 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
8733 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008734 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008735 }
8736#endif
8737#ifdef VK_KHR_display_swapchain
8738 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
8739 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008740 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008741 }
8742#endif
8743#ifdef VK_KHR_xlib_surface
8744 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
8745 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008746 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008747 }
8748 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
8749 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008750 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008751 }
8752#endif
8753#ifdef VK_KHR_xcb_surface
8754 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
8755 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008756 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008757 }
8758 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
8759 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008760 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008761 }
8762#endif
8763#ifdef VK_KHR_wayland_surface
8764 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
8765 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008766 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008767 }
8768 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
8769 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008770 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008771 }
8772#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008773#ifdef VK_KHR_android_surface
8774 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
8775 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008776 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008777 }
8778#endif
8779#ifdef VK_KHR_win32_surface
8780 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
8781 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008782 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008783 }
8784 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
8785 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008786 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008787 }
8788#endif
8789#ifdef VK_KHR_get_physical_device_properties2
8790 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
8791 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008792 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008793 }
8794 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
8795 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008796 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008797 }
8798 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
8799 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008800 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008801 }
8802 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
8803 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008804 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008805 }
8806 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
8807 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008808 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008809 }
8810 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
8811 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008812 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008813 }
8814 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
8815 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008816 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008817 }
8818#endif
8819#ifdef VK_KHR_device_group
8820 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
8821 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008822 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008823 }
8824 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
8825 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008826 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008827 }
8828 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
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_maintenance1
8834 if (!strcmp(name, "vkTrimCommandPoolKHR"))
8835 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008836 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008837 }
8838#endif
8839#ifdef VK_KHR_device_group_creation
8840 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
8841 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008842 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008843 }
8844#endif
8845#ifdef VK_KHR_external_memory_capabilities
8846 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
8847 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008848 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008849 }
8850#endif
8851#ifdef VK_KHR_external_memory_win32
8852 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
8853 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008854 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008855 }
8856 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
8857 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008858 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008859 }
8860#endif
8861#ifdef VK_KHR_external_memory_fd
8862 if (!strcmp(name, "vkGetMemoryFdKHR"))
8863 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008864 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008865 }
8866 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
8867 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008868 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008869 }
8870#endif
8871#ifdef VK_KHR_external_semaphore_capabilities
8872 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
8873 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008874 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008875 }
8876#endif
8877#ifdef VK_KHR_external_semaphore_win32
8878 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
8879 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008880 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008881 }
8882 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
8883 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008884 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008885 }
8886#endif
8887#ifdef VK_KHR_external_semaphore_fd
8888 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
8889 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008890 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008891 }
8892 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
8893 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008894 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008895 }
8896#endif
8897#ifdef VK_KHR_push_descriptor
8898 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
8899 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008900 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008901 }
8902 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
8903 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008904 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008905 }
8906#endif
8907#ifdef VK_KHR_descriptor_update_template
8908 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
8909 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008910 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008911 }
8912 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
8913 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008914 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008915 }
8916 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
8917 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008918 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008919 }
8920#endif
8921#ifdef VK_KHR_create_renderpass2
8922 if (!strcmp(name, "vkCreateRenderPass2KHR"))
8923 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008924 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008925 }
8926 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
8927 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008928 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008929 }
8930 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
8931 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008932 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008933 }
8934 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
8935 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008936 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008937 }
8938#endif
8939#ifdef VK_KHR_shared_presentable_image
8940 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
8941 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008942 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008943 }
8944#endif
8945#ifdef VK_KHR_external_fence_capabilities
8946 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
8947 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008948 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008949 }
8950#endif
8951#ifdef VK_KHR_external_fence_win32
8952 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
8953 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008954 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008955 }
8956 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
8957 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008958 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008959 }
8960#endif
8961#ifdef VK_KHR_external_fence_fd
8962 if (!strcmp(name, "vkImportFenceFdKHR"))
8963 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008964 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008965 }
8966 if (!strcmp(name, "vkGetFenceFdKHR"))
8967 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008968 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008969 }
8970#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008971#ifdef VK_KHR_performance_query
8972 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
8973 {
8974 return nullptr;
8975 }
8976 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
8977 {
8978 return nullptr;
8979 }
8980 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
8981 {
8982 return nullptr;
8983 }
8984 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
8985 {
8986 return nullptr;
8987 }
8988#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008989#ifdef VK_KHR_get_surface_capabilities2
8990 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
8991 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008992 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008993 }
8994 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
8995 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008996 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008997 }
8998#endif
8999#ifdef VK_KHR_get_display_properties2
9000 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
9001 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009002 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009003 }
9004 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
9005 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009006 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009007 }
9008 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
9009 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009010 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009011 }
9012 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
9013 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009014 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009015 }
9016#endif
9017#ifdef VK_KHR_get_memory_requirements2
9018 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
9019 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009020 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009021 }
9022 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
9023 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009024 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009025 }
9026 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
9027 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009028 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009029 }
9030#endif
9031#ifdef VK_KHR_sampler_ycbcr_conversion
9032 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
9033 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009034 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009035 }
9036 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
9037 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009038 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009039 }
9040#endif
9041#ifdef VK_KHR_bind_memory2
9042 if (!strcmp(name, "vkBindBufferMemory2KHR"))
9043 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009044 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009045 }
9046 if (!strcmp(name, "vkBindImageMemory2KHR"))
9047 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009048 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009049 }
9050#endif
9051#ifdef VK_KHR_maintenance3
9052 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
9053 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009054 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009055 }
9056#endif
9057#ifdef VK_KHR_draw_indirect_count
9058 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
9059 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009060 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009061 }
9062 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
9063 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009064 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009065 }
9066#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009067#ifdef VK_KHR_timeline_semaphore
9068 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
9069 {
9070 return nullptr;
9071 }
9072 if (!strcmp(name, "vkWaitSemaphoresKHR"))
9073 {
9074 return nullptr;
9075 }
9076 if (!strcmp(name, "vkSignalSemaphoreKHR"))
9077 {
9078 return nullptr;
9079 }
9080#endif
9081#ifdef VK_KHR_fragment_shading_rate
9082 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
9083 {
9084 return nullptr;
9085 }
9086 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
9087 {
9088 return nullptr;
9089 }
9090#endif
9091#ifdef VK_KHR_buffer_device_address
9092 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
9093 {
9094 return nullptr;
9095 }
9096 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
9097 {
9098 return nullptr;
9099 }
9100 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
9101 {
9102 return nullptr;
9103 }
9104#endif
9105#ifdef VK_KHR_deferred_host_operations
9106 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
9107 {
9108 return nullptr;
9109 }
9110 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
9111 {
9112 return nullptr;
9113 }
9114 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
9115 {
9116 return nullptr;
9117 }
9118 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
9119 {
9120 return nullptr;
9121 }
9122 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
9123 {
9124 return nullptr;
9125 }
9126#endif
9127#ifdef VK_KHR_pipeline_executable_properties
9128 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
9129 {
9130 return nullptr;
9131 }
9132 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
9133 {
9134 return nullptr;
9135 }
9136 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
9137 {
9138 return nullptr;
9139 }
9140#endif
9141#ifdef VK_KHR_copy_commands2
9142 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
9143 {
9144 return nullptr;
9145 }
9146 if (!strcmp(name, "vkCmdCopyImage2KHR"))
9147 {
9148 return nullptr;
9149 }
9150 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
9151 {
9152 return nullptr;
9153 }
9154 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
9155 {
9156 return nullptr;
9157 }
9158 if (!strcmp(name, "vkCmdBlitImage2KHR"))
9159 {
9160 return nullptr;
9161 }
9162 if (!strcmp(name, "vkCmdResolveImage2KHR"))
9163 {
9164 return nullptr;
9165 }
9166#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08009167#ifdef VK_ANDROID_native_buffer
9168 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
9169 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009170 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08009171 }
9172 if (!strcmp(name, "vkAcquireImageANDROID"))
9173 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009174 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08009175 }
9176 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
9177 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009178 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08009179 }
9180#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009181#ifdef VK_EXT_debug_report
9182 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
9183 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009184 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009185 }
9186 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
9187 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009188 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009189 }
9190 if (!strcmp(name, "vkDebugReportMessageEXT"))
9191 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009192 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009193 }
9194#endif
9195#ifdef VK_EXT_debug_marker
9196 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
9197 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009198 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009199 }
9200 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
9201 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009202 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009203 }
9204 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
9205 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009206 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009207 }
9208 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
9209 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009210 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009211 }
9212 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
9213 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009214 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009215 }
9216#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009217#ifdef VK_EXT_transform_feedback
9218 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
9219 {
9220 return nullptr;
9221 }
9222 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
9223 {
9224 return nullptr;
9225 }
9226 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
9227 {
9228 return nullptr;
9229 }
9230 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
9231 {
9232 return nullptr;
9233 }
9234 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
9235 {
9236 return nullptr;
9237 }
9238 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
9239 {
9240 return nullptr;
9241 }
9242#endif
9243#ifdef VK_NVX_image_view_handle
9244 if (!strcmp(name, "vkGetImageViewHandleNVX"))
9245 {
9246 return nullptr;
9247 }
9248 if (!strcmp(name, "vkGetImageViewAddressNVX"))
9249 {
9250 return nullptr;
9251 }
9252#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009253#ifdef VK_AMD_draw_indirect_count
9254 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
9255 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009256 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009257 }
9258 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
9259 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009260 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009261 }
9262#endif
9263#ifdef VK_AMD_shader_info
9264 if (!strcmp(name, "vkGetShaderInfoAMD"))
9265 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009266 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009267 }
9268#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009269#ifdef VK_GGP_stream_descriptor_surface
9270 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
9271 {
9272 return nullptr;
9273 }
9274#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009275#ifdef VK_NV_external_memory_capabilities
9276 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
9277 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009278 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009279 }
9280#endif
9281#ifdef VK_NV_external_memory_win32
9282 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
9283 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009284 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009285 }
9286#endif
9287#ifdef VK_NN_vi_surface
9288 if (!strcmp(name, "vkCreateViSurfaceNN"))
9289 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009290 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009291 }
9292#endif
9293#ifdef VK_EXT_conditional_rendering
9294 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
9295 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009296 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009297 }
9298 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
9299 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009300 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009301 }
9302#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009303#ifdef VK_NV_clip_space_w_scaling
9304 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
9305 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009306 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009307 }
9308#endif
9309#ifdef VK_EXT_direct_mode_display
9310 if (!strcmp(name, "vkReleaseDisplayEXT"))
9311 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009312 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009313 }
9314#endif
9315#ifdef VK_EXT_acquire_xlib_display
9316 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
9317 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009318 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009319 }
9320 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
9321 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009322 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009323 }
9324#endif
9325#ifdef VK_EXT_display_surface_counter
9326 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
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_display_control
9332 if (!strcmp(name, "vkDisplayPowerControlEXT"))
9333 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009334 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009335 }
9336 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
9337 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009338 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009339 }
9340 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
9341 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009342 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009343 }
9344 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
9345 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009346 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009347 }
9348#endif
9349#ifdef VK_GOOGLE_display_timing
9350 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
9351 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009352 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009353 }
9354 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
9355 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009356 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009357 }
9358#endif
9359#ifdef VK_EXT_discard_rectangles
9360 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
9361 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009362 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009363 }
9364#endif
9365#ifdef VK_EXT_hdr_metadata
9366 if (!strcmp(name, "vkSetHdrMetadataEXT"))
9367 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009368 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009369 }
9370#endif
9371#ifdef VK_MVK_ios_surface
9372 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
9373 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009374 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009375 }
9376#endif
9377#ifdef VK_MVK_macos_surface
9378 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
9379 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009380 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009381 }
9382#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009383#ifdef VK_MVK_moltenvk
9384 if (!strcmp(name, "vkGetMTLDeviceMVK"))
9385 {
9386 return nullptr;
9387 }
9388 if (!strcmp(name, "vkSetMTLTextureMVK"))
9389 {
9390 return nullptr;
9391 }
9392 if (!strcmp(name, "vkGetMTLTextureMVK"))
9393 {
9394 return nullptr;
9395 }
9396 if (!strcmp(name, "vkGetMTLBufferMVK"))
9397 {
9398 return nullptr;
9399 }
9400 if (!strcmp(name, "vkUseIOSurfaceMVK"))
9401 {
9402 return nullptr;
9403 }
9404 if (!strcmp(name, "vkGetIOSurfaceMVK"))
9405 {
9406 return nullptr;
9407 }
9408#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009409#ifdef VK_EXT_debug_utils
9410 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
9411 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009412 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009413 }
9414 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
9415 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009416 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009417 }
9418 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
9419 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009420 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009421 }
9422 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
9423 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009424 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009425 }
9426 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
9427 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009428 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009429 }
9430 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
9431 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009432 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009433 }
9434 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
9435 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009436 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009437 }
9438 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
9439 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009440 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009441 }
9442 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
9443 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009444 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009445 }
9446 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
9447 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009448 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009449 }
9450 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
9451 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009452 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009453 }
9454#endif
9455#ifdef VK_ANDROID_external_memory_android_hardware_buffer
9456 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
9457 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009458 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009459 }
9460 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
9461 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009462 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009463 }
9464#endif
9465#ifdef VK_EXT_sample_locations
9466 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
9467 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009468 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009469 }
9470 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
9471 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009472 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009473 }
9474#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009475#ifdef VK_EXT_image_drm_format_modifier
9476 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
9477 {
9478 return nullptr;
9479 }
9480#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009481#ifdef VK_EXT_validation_cache
9482 if (!strcmp(name, "vkCreateValidationCacheEXT"))
9483 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009484 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009485 }
9486 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
9487 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009488 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009489 }
9490 if (!strcmp(name, "vkMergeValidationCachesEXT"))
9491 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009492 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009493 }
9494 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
9495 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009496 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009497 }
9498#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009499#ifdef VK_NV_shading_rate_image
9500 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
9501 {
9502 return nullptr;
9503 }
9504 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
9505 {
9506 return nullptr;
9507 }
9508 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
9509 {
9510 return nullptr;
9511 }
9512#endif
9513#ifdef VK_NV_ray_tracing
9514 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
9515 {
9516 return nullptr;
9517 }
9518 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
9519 {
9520 return nullptr;
9521 }
9522 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
9523 {
9524 return nullptr;
9525 }
9526 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
9527 {
9528 return nullptr;
9529 }
9530 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
9531 {
9532 return nullptr;
9533 }
9534 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
9535 {
9536 return nullptr;
9537 }
9538 if (!strcmp(name, "vkCmdTraceRaysNV"))
9539 {
9540 return nullptr;
9541 }
9542 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
9543 {
9544 return nullptr;
9545 }
9546 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
9547 {
9548 return nullptr;
9549 }
9550 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
9551 {
9552 return nullptr;
9553 }
9554 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
9555 {
9556 return nullptr;
9557 }
9558 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
9559 {
9560 return nullptr;
9561 }
9562 if (!strcmp(name, "vkCompileDeferredNV"))
9563 {
9564 return nullptr;
9565 }
9566#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009567#ifdef VK_EXT_external_memory_host
9568 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
9569 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009570 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009571 }
9572#endif
9573#ifdef VK_AMD_buffer_marker
9574 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
9575 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009576 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009577 }
9578#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009579#ifdef VK_EXT_calibrated_timestamps
9580 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
9581 {
9582 return nullptr;
9583 }
9584 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
9585 {
9586 return nullptr;
9587 }
9588#endif
9589#ifdef VK_NV_mesh_shader
9590 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
9591 {
9592 return nullptr;
9593 }
9594 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
9595 {
9596 return nullptr;
9597 }
9598 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
9599 {
9600 return nullptr;
9601 }
9602#endif
9603#ifdef VK_NV_scissor_exclusive
9604 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
9605 {
9606 return nullptr;
9607 }
9608#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009609#ifdef VK_NV_device_diagnostic_checkpoints
9610 if (!strcmp(name, "vkCmdSetCheckpointNV"))
9611 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009612 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009613 }
9614 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
9615 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009616 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009617 }
9618#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009619#ifdef VK_INTEL_performance_query
9620 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
9621 {
9622 return nullptr;
9623 }
9624 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
9625 {
9626 return nullptr;
9627 }
9628 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
9629 {
9630 return nullptr;
9631 }
9632 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
9633 {
9634 return nullptr;
9635 }
9636 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
9637 {
9638 return nullptr;
9639 }
9640 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
9641 {
9642 return nullptr;
9643 }
9644 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
9645 {
9646 return nullptr;
9647 }
9648 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
9649 {
9650 return nullptr;
9651 }
9652 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
9653 {
9654 return nullptr;
9655 }
9656#endif
9657#ifdef VK_AMD_display_native_hdr
9658 if (!strcmp(name, "vkSetLocalDimmingAMD"))
9659 {
9660 return nullptr;
9661 }
9662#endif
9663#ifdef VK_FUCHSIA_imagepipe_surface
9664 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
9665 {
9666 return nullptr;
9667 }
9668#endif
9669#ifdef VK_EXT_metal_surface
9670 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08009671 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009672 return nullptr;
9673 }
9674#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08009675#ifdef VK_GOOGLE_color_buffer
9676 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
9677 {
9678 return nullptr;
9679 }
9680 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
9681 {
9682 return nullptr;
9683 }
9684#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009685#ifdef VK_EXT_buffer_device_address
9686 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
9687 {
9688 return nullptr;
9689 }
9690#endif
9691#ifdef VK_EXT_tooling_info
9692 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
9693 {
9694 return nullptr;
9695 }
9696#endif
9697#ifdef VK_NV_cooperative_matrix
9698 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
9699 {
9700 return nullptr;
9701 }
9702#endif
9703#ifdef VK_NV_coverage_reduction_mode
9704 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
9705 {
9706 return nullptr;
9707 }
9708#endif
9709#ifdef VK_EXT_full_screen_exclusive
9710 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
9711 {
9712 return nullptr;
9713 }
9714 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
9715 {
9716 return nullptr;
9717 }
9718 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
9719 {
9720 return nullptr;
9721 }
9722 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
9723 {
9724 return nullptr;
9725 }
9726#endif
9727#ifdef VK_EXT_headless_surface
9728 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
9729 {
9730 return nullptr;
9731 }
9732#endif
9733#ifdef VK_EXT_line_rasterization
9734 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
9735 {
9736 return nullptr;
9737 }
9738#endif
9739#ifdef VK_EXT_host_query_reset
9740 if (!strcmp(name, "vkResetQueryPoolEXT"))
9741 {
9742 return nullptr;
9743 }
9744#endif
9745#ifdef VK_EXT_extended_dynamic_state
9746 if (!strcmp(name, "vkCmdSetCullModeEXT"))
9747 {
9748 return nullptr;
9749 }
9750 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
9751 {
9752 return nullptr;
9753 }
9754 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
9755 {
9756 return nullptr;
9757 }
9758 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
9759 {
9760 return nullptr;
9761 }
9762 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
9763 {
9764 return nullptr;
9765 }
9766 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
9767 {
9768 return nullptr;
9769 }
9770 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
9771 {
9772 return nullptr;
9773 }
9774 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
9775 {
9776 return nullptr;
9777 }
9778 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
9779 {
9780 return nullptr;
9781 }
9782 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
9783 {
9784 return nullptr;
9785 }
9786 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
9787 {
9788 return nullptr;
9789 }
9790 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
9791 {
9792 return nullptr;
9793 }
9794#endif
9795#ifdef VK_NV_device_generated_commands
9796 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
9797 {
9798 return nullptr;
9799 }
9800 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
9801 {
9802 return nullptr;
9803 }
9804 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
9805 {
9806 return nullptr;
9807 }
9808 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
9809 {
9810 return nullptr;
9811 }
9812 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
9813 {
9814 return nullptr;
9815 }
9816 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
9817 {
9818 return nullptr;
9819 }
9820#endif
9821#ifdef VK_EXT_private_data
9822 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
9823 {
9824 return nullptr;
9825 }
9826 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
9827 {
9828 return nullptr;
9829 }
9830 if (!strcmp(name, "vkSetPrivateDataEXT"))
9831 {
9832 return nullptr;
9833 }
9834 if (!strcmp(name, "vkGetPrivateDataEXT"))
9835 {
9836 return nullptr;
9837 }
9838#endif
9839#ifdef VK_NV_fragment_shading_rate_enums
9840 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
9841 {
9842 return nullptr;
9843 }
9844#endif
9845#ifdef VK_EXT_directfb_surface
9846 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
9847 {
9848 return nullptr;
9849 }
9850 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
9851 {
9852 return nullptr;
9853 }
9854#endif
Yilong Li71c43c52021-02-10 02:50:43 -08009855#ifdef VK_GOOGLE_gfxstream
Yilong Lia8d45f12021-02-07 02:30:21 -08009856 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
9857 {
9858 return nullptr;
9859 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07009860 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
9861 {
9862 return nullptr;
9863 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009864 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
9865 {
9866 return nullptr;
9867 }
9868 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
9869 {
9870 return nullptr;
9871 }
9872 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
9873 {
9874 return nullptr;
9875 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07009876 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
9877 {
9878 return nullptr;
9879 }
Lingfeng Yang87f11962019-06-27 16:28:53 +00009880 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
9881 {
9882 return nullptr;
9883 }
9884 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
9885 {
9886 return nullptr;
9887 }
Lingfeng Yang4c542412020-02-04 18:18:32 -08009888 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
9889 {
9890 return nullptr;
9891 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07009892 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
9893 {
9894 return nullptr;
9895 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07009896 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
9897 {
9898 return nullptr;
9899 }
9900 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
9901 {
9902 return nullptr;
9903 }
9904 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
9905 {
9906 return nullptr;
9907 }
9908 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
9909 {
9910 return nullptr;
9911 }
Yilong Lia48b0102020-09-15 15:08:28 -07009912 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
9913 {
9914 return nullptr;
9915 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009916 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
Lingfeng Yang2178dc72021-01-08 14:01:47 -08009917 {
9918 return nullptr;
9919 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08009920 if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
9921 {
9922 return nullptr;
9923 }
9924 if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
9925 {
9926 return nullptr;
9927 }
Lingfeng Yang2178dc72021-01-08 14:01:47 -08009928#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009929#ifdef VK_KHR_acceleration_structure
9930 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
9931 {
9932 return nullptr;
9933 }
9934 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
9935 {
9936 return nullptr;
9937 }
9938 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
9939 {
9940 return nullptr;
9941 }
9942 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
9943 {
9944 return nullptr;
9945 }
9946 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
9947 {
9948 return nullptr;
9949 }
9950 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
9951 {
9952 return nullptr;
9953 }
9954 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
9955 {
9956 return nullptr;
9957 }
9958 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
9959 {
9960 return nullptr;
9961 }
9962 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
9963 {
9964 return nullptr;
9965 }
9966 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
9967 {
9968 return nullptr;
9969 }
9970 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
9971 {
9972 return nullptr;
9973 }
9974 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
9975 {
9976 return nullptr;
9977 }
9978 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
9979 {
9980 return nullptr;
9981 }
9982 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
9983 {
9984 return nullptr;
9985 }
9986 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
9987 {
9988 return nullptr;
9989 }
9990 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
9991 {
9992 return nullptr;
9993 }
9994#endif
9995#ifdef VK_KHR_ray_tracing_pipeline
9996 if (!strcmp(name, "vkCmdTraceRaysKHR"))
9997 {
9998 return nullptr;
9999 }
10000 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
10001 {
10002 return nullptr;
10003 }
10004 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
10005 {
10006 return nullptr;
10007 }
10008 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
10009 {
10010 return nullptr;
10011 }
10012 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
10013 {
10014 return nullptr;
10015 }
10016 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
Lingfeng Yangded34672021-01-22 23:17:47 -080010017 {
10018 return nullptr;
10019 }
10020#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010021 return nullptr;
10022}
10023void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
10024 auto resources = ResourceTracker::get();
10025 bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
10026#ifdef VK_VERSION_1_0
10027 if (!strcmp(name, "vkCreateInstance"))
10028 {
10029 return (void*)entry_vkCreateInstance;
10030 }
10031 if (!strcmp(name, "vkDestroyInstance"))
10032 {
10033 return (void*)entry_vkDestroyInstance;
10034 }
10035 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
10036 {
10037 return (void*)entry_vkEnumeratePhysicalDevices;
10038 }
10039 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
10040 {
10041 return (void*)entry_vkGetPhysicalDeviceFeatures;
10042 }
10043 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
10044 {
10045 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
10046 }
10047 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
10048 {
10049 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
10050 }
10051 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
10052 {
10053 return (void*)entry_vkGetPhysicalDeviceProperties;
10054 }
10055 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
10056 {
10057 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
10058 }
10059 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
10060 {
10061 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
10062 }
10063 if (!strcmp(name, "vkGetInstanceProcAddr"))
10064 {
10065 return (void*)entry_vkGetInstanceProcAddr;
10066 }
10067 if (!strcmp(name, "vkGetDeviceProcAddr"))
10068 {
10069 return (void*)entry_vkGetDeviceProcAddr;
10070 }
10071 if (!strcmp(name, "vkCreateDevice"))
10072 {
10073 return (void*)entry_vkCreateDevice;
10074 }
10075 if (!strcmp(name, "vkDestroyDevice"))
10076 {
10077 return (void*)entry_vkDestroyDevice;
10078 }
10079 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
10080 {
10081 return (void*)entry_vkEnumerateInstanceExtensionProperties;
10082 }
10083 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
10084 {
10085 return (void*)entry_vkEnumerateDeviceExtensionProperties;
10086 }
10087 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
10088 {
10089 return (void*)entry_vkEnumerateInstanceLayerProperties;
10090 }
10091 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
10092 {
10093 return (void*)entry_vkEnumerateDeviceLayerProperties;
10094 }
10095 if (!strcmp(name, "vkGetDeviceQueue"))
10096 {
10097 return (void*)entry_vkGetDeviceQueue;
10098 }
10099 if (!strcmp(name, "vkQueueSubmit"))
10100 {
10101 return (void*)entry_vkQueueSubmit;
10102 }
10103 if (!strcmp(name, "vkQueueWaitIdle"))
10104 {
10105 return (void*)entry_vkQueueWaitIdle;
10106 }
10107 if (!strcmp(name, "vkDeviceWaitIdle"))
10108 {
10109 return (void*)entry_vkDeviceWaitIdle;
10110 }
10111 if (!strcmp(name, "vkAllocateMemory"))
10112 {
10113 return (void*)entry_vkAllocateMemory;
10114 }
10115 if (!strcmp(name, "vkFreeMemory"))
10116 {
10117 return (void*)entry_vkFreeMemory;
10118 }
10119 if (!strcmp(name, "vkMapMemory"))
10120 {
10121 return (void*)entry_vkMapMemory;
10122 }
10123 if (!strcmp(name, "vkUnmapMemory"))
10124 {
10125 return (void*)entry_vkUnmapMemory;
10126 }
10127 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
10128 {
10129 return (void*)entry_vkFlushMappedMemoryRanges;
10130 }
10131 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
10132 {
10133 return (void*)entry_vkInvalidateMappedMemoryRanges;
10134 }
10135 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
10136 {
10137 return (void*)entry_vkGetDeviceMemoryCommitment;
10138 }
10139 if (!strcmp(name, "vkBindBufferMemory"))
10140 {
10141 return (void*)entry_vkBindBufferMemory;
10142 }
10143 if (!strcmp(name, "vkBindImageMemory"))
10144 {
10145 return (void*)entry_vkBindImageMemory;
10146 }
10147 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
10148 {
10149 return (void*)entry_vkGetBufferMemoryRequirements;
10150 }
10151 if (!strcmp(name, "vkGetImageMemoryRequirements"))
10152 {
10153 return (void*)entry_vkGetImageMemoryRequirements;
10154 }
10155 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
10156 {
10157 return (void*)entry_vkGetImageSparseMemoryRequirements;
10158 }
10159 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
10160 {
10161 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
10162 }
10163 if (!strcmp(name, "vkQueueBindSparse"))
10164 {
10165 return (void*)entry_vkQueueBindSparse;
10166 }
10167 if (!strcmp(name, "vkCreateFence"))
10168 {
10169 return (void*)entry_vkCreateFence;
10170 }
10171 if (!strcmp(name, "vkDestroyFence"))
10172 {
10173 return (void*)entry_vkDestroyFence;
10174 }
10175 if (!strcmp(name, "vkResetFences"))
10176 {
10177 return (void*)entry_vkResetFences;
10178 }
10179 if (!strcmp(name, "vkGetFenceStatus"))
10180 {
10181 return (void*)entry_vkGetFenceStatus;
10182 }
10183 if (!strcmp(name, "vkWaitForFences"))
10184 {
10185 return (void*)entry_vkWaitForFences;
10186 }
10187 if (!strcmp(name, "vkCreateSemaphore"))
10188 {
10189 return (void*)entry_vkCreateSemaphore;
10190 }
10191 if (!strcmp(name, "vkDestroySemaphore"))
10192 {
10193 return (void*)entry_vkDestroySemaphore;
10194 }
10195 if (!strcmp(name, "vkCreateEvent"))
10196 {
10197 return (void*)entry_vkCreateEvent;
10198 }
10199 if (!strcmp(name, "vkDestroyEvent"))
10200 {
10201 return (void*)entry_vkDestroyEvent;
10202 }
10203 if (!strcmp(name, "vkGetEventStatus"))
10204 {
10205 return (void*)entry_vkGetEventStatus;
10206 }
10207 if (!strcmp(name, "vkSetEvent"))
10208 {
10209 return (void*)entry_vkSetEvent;
10210 }
10211 if (!strcmp(name, "vkResetEvent"))
10212 {
10213 return (void*)entry_vkResetEvent;
10214 }
10215 if (!strcmp(name, "vkCreateQueryPool"))
10216 {
10217 return (void*)entry_vkCreateQueryPool;
10218 }
10219 if (!strcmp(name, "vkDestroyQueryPool"))
10220 {
10221 return (void*)entry_vkDestroyQueryPool;
10222 }
10223 if (!strcmp(name, "vkGetQueryPoolResults"))
10224 {
10225 return (void*)entry_vkGetQueryPoolResults;
10226 }
10227 if (!strcmp(name, "vkCreateBuffer"))
10228 {
10229 return (void*)entry_vkCreateBuffer;
10230 }
10231 if (!strcmp(name, "vkDestroyBuffer"))
10232 {
10233 return (void*)entry_vkDestroyBuffer;
10234 }
10235 if (!strcmp(name, "vkCreateBufferView"))
10236 {
10237 return (void*)entry_vkCreateBufferView;
10238 }
10239 if (!strcmp(name, "vkDestroyBufferView"))
10240 {
10241 return (void*)entry_vkDestroyBufferView;
10242 }
10243 if (!strcmp(name, "vkCreateImage"))
10244 {
10245 return (void*)entry_vkCreateImage;
10246 }
10247 if (!strcmp(name, "vkDestroyImage"))
10248 {
10249 return (void*)entry_vkDestroyImage;
10250 }
10251 if (!strcmp(name, "vkGetImageSubresourceLayout"))
10252 {
10253 return (void*)entry_vkGetImageSubresourceLayout;
10254 }
10255 if (!strcmp(name, "vkCreateImageView"))
10256 {
10257 return (void*)entry_vkCreateImageView;
10258 }
10259 if (!strcmp(name, "vkDestroyImageView"))
10260 {
10261 return (void*)entry_vkDestroyImageView;
10262 }
10263 if (!strcmp(name, "vkCreateShaderModule"))
10264 {
10265 return (void*)entry_vkCreateShaderModule;
10266 }
10267 if (!strcmp(name, "vkDestroyShaderModule"))
10268 {
10269 return (void*)entry_vkDestroyShaderModule;
10270 }
10271 if (!strcmp(name, "vkCreatePipelineCache"))
10272 {
10273 return (void*)entry_vkCreatePipelineCache;
10274 }
10275 if (!strcmp(name, "vkDestroyPipelineCache"))
10276 {
10277 return (void*)entry_vkDestroyPipelineCache;
10278 }
10279 if (!strcmp(name, "vkGetPipelineCacheData"))
10280 {
10281 return (void*)entry_vkGetPipelineCacheData;
10282 }
10283 if (!strcmp(name, "vkMergePipelineCaches"))
10284 {
10285 return (void*)entry_vkMergePipelineCaches;
10286 }
10287 if (!strcmp(name, "vkCreateGraphicsPipelines"))
10288 {
10289 return (void*)entry_vkCreateGraphicsPipelines;
10290 }
10291 if (!strcmp(name, "vkCreateComputePipelines"))
10292 {
10293 return (void*)entry_vkCreateComputePipelines;
10294 }
10295 if (!strcmp(name, "vkDestroyPipeline"))
10296 {
10297 return (void*)entry_vkDestroyPipeline;
10298 }
10299 if (!strcmp(name, "vkCreatePipelineLayout"))
10300 {
10301 return (void*)entry_vkCreatePipelineLayout;
10302 }
10303 if (!strcmp(name, "vkDestroyPipelineLayout"))
10304 {
10305 return (void*)entry_vkDestroyPipelineLayout;
10306 }
10307 if (!strcmp(name, "vkCreateSampler"))
10308 {
10309 return (void*)entry_vkCreateSampler;
10310 }
10311 if (!strcmp(name, "vkDestroySampler"))
10312 {
10313 return (void*)entry_vkDestroySampler;
10314 }
10315 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
10316 {
10317 return (void*)entry_vkCreateDescriptorSetLayout;
10318 }
10319 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
10320 {
10321 return (void*)entry_vkDestroyDescriptorSetLayout;
10322 }
10323 if (!strcmp(name, "vkCreateDescriptorPool"))
10324 {
10325 return (void*)entry_vkCreateDescriptorPool;
10326 }
10327 if (!strcmp(name, "vkDestroyDescriptorPool"))
10328 {
10329 return (void*)entry_vkDestroyDescriptorPool;
10330 }
10331 if (!strcmp(name, "vkResetDescriptorPool"))
10332 {
10333 return (void*)entry_vkResetDescriptorPool;
10334 }
10335 if (!strcmp(name, "vkAllocateDescriptorSets"))
10336 {
10337 return (void*)entry_vkAllocateDescriptorSets;
10338 }
10339 if (!strcmp(name, "vkFreeDescriptorSets"))
10340 {
10341 return (void*)entry_vkFreeDescriptorSets;
10342 }
10343 if (!strcmp(name, "vkUpdateDescriptorSets"))
10344 {
10345 return (void*)entry_vkUpdateDescriptorSets;
10346 }
10347 if (!strcmp(name, "vkCreateFramebuffer"))
10348 {
10349 return (void*)entry_vkCreateFramebuffer;
10350 }
10351 if (!strcmp(name, "vkDestroyFramebuffer"))
10352 {
10353 return (void*)entry_vkDestroyFramebuffer;
10354 }
10355 if (!strcmp(name, "vkCreateRenderPass"))
10356 {
10357 return (void*)entry_vkCreateRenderPass;
10358 }
10359 if (!strcmp(name, "vkDestroyRenderPass"))
10360 {
10361 return (void*)entry_vkDestroyRenderPass;
10362 }
10363 if (!strcmp(name, "vkGetRenderAreaGranularity"))
10364 {
10365 return (void*)entry_vkGetRenderAreaGranularity;
10366 }
10367 if (!strcmp(name, "vkCreateCommandPool"))
10368 {
10369 return (void*)entry_vkCreateCommandPool;
10370 }
10371 if (!strcmp(name, "vkDestroyCommandPool"))
10372 {
10373 return (void*)entry_vkDestroyCommandPool;
10374 }
10375 if (!strcmp(name, "vkResetCommandPool"))
10376 {
10377 return (void*)entry_vkResetCommandPool;
10378 }
10379 if (!strcmp(name, "vkAllocateCommandBuffers"))
10380 {
10381 return (void*)entry_vkAllocateCommandBuffers;
10382 }
10383 if (!strcmp(name, "vkFreeCommandBuffers"))
10384 {
10385 return (void*)entry_vkFreeCommandBuffers;
10386 }
10387 if (!strcmp(name, "vkBeginCommandBuffer"))
10388 {
10389 return (void*)entry_vkBeginCommandBuffer;
10390 }
10391 if (!strcmp(name, "vkEndCommandBuffer"))
10392 {
10393 return (void*)entry_vkEndCommandBuffer;
10394 }
10395 if (!strcmp(name, "vkResetCommandBuffer"))
10396 {
10397 return (void*)entry_vkResetCommandBuffer;
10398 }
10399 if (!strcmp(name, "vkCmdBindPipeline"))
10400 {
10401 return (void*)entry_vkCmdBindPipeline;
10402 }
10403 if (!strcmp(name, "vkCmdSetViewport"))
10404 {
10405 return (void*)entry_vkCmdSetViewport;
10406 }
10407 if (!strcmp(name, "vkCmdSetScissor"))
10408 {
10409 return (void*)entry_vkCmdSetScissor;
10410 }
10411 if (!strcmp(name, "vkCmdSetLineWidth"))
10412 {
10413 return (void*)entry_vkCmdSetLineWidth;
10414 }
10415 if (!strcmp(name, "vkCmdSetDepthBias"))
10416 {
10417 return (void*)entry_vkCmdSetDepthBias;
10418 }
10419 if (!strcmp(name, "vkCmdSetBlendConstants"))
10420 {
10421 return (void*)entry_vkCmdSetBlendConstants;
10422 }
10423 if (!strcmp(name, "vkCmdSetDepthBounds"))
10424 {
10425 return (void*)entry_vkCmdSetDepthBounds;
10426 }
10427 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
10428 {
10429 return (void*)entry_vkCmdSetStencilCompareMask;
10430 }
10431 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
10432 {
10433 return (void*)entry_vkCmdSetStencilWriteMask;
10434 }
10435 if (!strcmp(name, "vkCmdSetStencilReference"))
10436 {
10437 return (void*)entry_vkCmdSetStencilReference;
10438 }
10439 if (!strcmp(name, "vkCmdBindDescriptorSets"))
10440 {
10441 return (void*)entry_vkCmdBindDescriptorSets;
10442 }
10443 if (!strcmp(name, "vkCmdBindIndexBuffer"))
10444 {
10445 return (void*)entry_vkCmdBindIndexBuffer;
10446 }
10447 if (!strcmp(name, "vkCmdBindVertexBuffers"))
10448 {
10449 return (void*)entry_vkCmdBindVertexBuffers;
10450 }
10451 if (!strcmp(name, "vkCmdDraw"))
10452 {
10453 return (void*)entry_vkCmdDraw;
10454 }
10455 if (!strcmp(name, "vkCmdDrawIndexed"))
10456 {
10457 return (void*)entry_vkCmdDrawIndexed;
10458 }
10459 if (!strcmp(name, "vkCmdDrawIndirect"))
10460 {
10461 return (void*)entry_vkCmdDrawIndirect;
10462 }
10463 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
10464 {
10465 return (void*)entry_vkCmdDrawIndexedIndirect;
10466 }
10467 if (!strcmp(name, "vkCmdDispatch"))
10468 {
10469 return (void*)entry_vkCmdDispatch;
10470 }
10471 if (!strcmp(name, "vkCmdDispatchIndirect"))
10472 {
10473 return (void*)entry_vkCmdDispatchIndirect;
10474 }
10475 if (!strcmp(name, "vkCmdCopyBuffer"))
10476 {
10477 return (void*)entry_vkCmdCopyBuffer;
10478 }
10479 if (!strcmp(name, "vkCmdCopyImage"))
10480 {
10481 return (void*)entry_vkCmdCopyImage;
10482 }
10483 if (!strcmp(name, "vkCmdBlitImage"))
10484 {
10485 return (void*)entry_vkCmdBlitImage;
10486 }
10487 if (!strcmp(name, "vkCmdCopyBufferToImage"))
10488 {
10489 return (void*)entry_vkCmdCopyBufferToImage;
10490 }
10491 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
10492 {
10493 return (void*)entry_vkCmdCopyImageToBuffer;
10494 }
10495 if (!strcmp(name, "vkCmdUpdateBuffer"))
10496 {
10497 return (void*)entry_vkCmdUpdateBuffer;
10498 }
10499 if (!strcmp(name, "vkCmdFillBuffer"))
10500 {
10501 return (void*)entry_vkCmdFillBuffer;
10502 }
10503 if (!strcmp(name, "vkCmdClearColorImage"))
10504 {
10505 return (void*)entry_vkCmdClearColorImage;
10506 }
10507 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
10508 {
10509 return (void*)entry_vkCmdClearDepthStencilImage;
10510 }
10511 if (!strcmp(name, "vkCmdClearAttachments"))
10512 {
10513 return (void*)entry_vkCmdClearAttachments;
10514 }
10515 if (!strcmp(name, "vkCmdResolveImage"))
10516 {
10517 return (void*)entry_vkCmdResolveImage;
10518 }
10519 if (!strcmp(name, "vkCmdSetEvent"))
10520 {
10521 return (void*)entry_vkCmdSetEvent;
10522 }
10523 if (!strcmp(name, "vkCmdResetEvent"))
10524 {
10525 return (void*)entry_vkCmdResetEvent;
10526 }
10527 if (!strcmp(name, "vkCmdWaitEvents"))
10528 {
10529 return (void*)entry_vkCmdWaitEvents;
10530 }
10531 if (!strcmp(name, "vkCmdPipelineBarrier"))
10532 {
10533 return (void*)entry_vkCmdPipelineBarrier;
10534 }
10535 if (!strcmp(name, "vkCmdBeginQuery"))
10536 {
10537 return (void*)entry_vkCmdBeginQuery;
10538 }
10539 if (!strcmp(name, "vkCmdEndQuery"))
10540 {
10541 return (void*)entry_vkCmdEndQuery;
10542 }
10543 if (!strcmp(name, "vkCmdResetQueryPool"))
10544 {
10545 return (void*)entry_vkCmdResetQueryPool;
10546 }
10547 if (!strcmp(name, "vkCmdWriteTimestamp"))
10548 {
10549 return (void*)entry_vkCmdWriteTimestamp;
10550 }
10551 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
10552 {
10553 return (void*)entry_vkCmdCopyQueryPoolResults;
10554 }
10555 if (!strcmp(name, "vkCmdPushConstants"))
10556 {
10557 return (void*)entry_vkCmdPushConstants;
10558 }
10559 if (!strcmp(name, "vkCmdBeginRenderPass"))
10560 {
10561 return (void*)entry_vkCmdBeginRenderPass;
10562 }
10563 if (!strcmp(name, "vkCmdNextSubpass"))
10564 {
10565 return (void*)entry_vkCmdNextSubpass;
10566 }
10567 if (!strcmp(name, "vkCmdEndRenderPass"))
10568 {
10569 return (void*)entry_vkCmdEndRenderPass;
10570 }
10571 if (!strcmp(name, "vkCmdExecuteCommands"))
10572 {
10573 return (void*)entry_vkCmdExecuteCommands;
10574 }
10575#endif
10576#ifdef VK_VERSION_1_1
10577 if (!strcmp(name, "vkEnumerateInstanceVersion"))
10578 {
10579 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
10580 }
10581 if (!strcmp(name, "vkBindBufferMemory2"))
10582 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010583 return (void*)dynCheck_entry_vkBindBufferMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010584 }
10585 if (!strcmp(name, "vkBindImageMemory2"))
10586 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010587 return (void*)dynCheck_entry_vkBindImageMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010588 }
10589 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
10590 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010591 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010592 }
10593 if (!strcmp(name, "vkCmdSetDeviceMask"))
10594 {
10595 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
10596 }
10597 if (!strcmp(name, "vkCmdDispatchBase"))
10598 {
10599 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
10600 }
10601 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
10602 {
10603 return nullptr;
10604 }
10605 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
10606 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010607 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010608 }
10609 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
10610 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010611 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010612 }
10613 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
10614 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010615 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010616 }
10617 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
10618 {
10619 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
10620 }
10621 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
10622 {
10623 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
10624 }
10625 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
10626 {
10627 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
10628 }
10629 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
10630 {
10631 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
10632 }
10633 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
10634 {
10635 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
10636 }
10637 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
10638 {
10639 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
10640 }
10641 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
10642 {
10643 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
10644 }
10645 if (!strcmp(name, "vkTrimCommandPool"))
10646 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010647 return (void*)dynCheck_entry_vkTrimCommandPool;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010648 }
10649 if (!strcmp(name, "vkGetDeviceQueue2"))
10650 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010651 return (void*)dynCheck_entry_vkGetDeviceQueue2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010652 }
10653 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
10654 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010655 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010656 }
10657 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
10658 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010659 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010660 }
10661 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
10662 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010663 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010664 }
10665 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
10666 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010667 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010668 }
10669 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
10670 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010671 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010672 }
10673 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
10674 {
10675 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
10676 }
10677 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
10678 {
10679 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
10680 }
10681 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
10682 {
10683 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
10684 }
10685 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
10686 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010687 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010688 }
10689#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010690#ifdef VK_VERSION_1_2
10691 if (!strcmp(name, "vkCmdDrawIndirectCount"))
10692 {
10693 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10694 return hasExt ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
10695 }
10696 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
10697 {
10698 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10699 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
10700 }
10701 if (!strcmp(name, "vkCreateRenderPass2"))
10702 {
10703 return (void*)dynCheck_entry_vkCreateRenderPass2;
10704 }
10705 if (!strcmp(name, "vkCmdBeginRenderPass2"))
10706 {
10707 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10708 return hasExt ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
10709 }
10710 if (!strcmp(name, "vkCmdNextSubpass2"))
10711 {
10712 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10713 return hasExt ? (void*)entry_vkCmdNextSubpass2 : nullptr;
10714 }
10715 if (!strcmp(name, "vkCmdEndRenderPass2"))
10716 {
10717 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10718 return hasExt ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
10719 }
10720 if (!strcmp(name, "vkResetQueryPool"))
10721 {
10722 return (void*)dynCheck_entry_vkResetQueryPool;
10723 }
10724 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
10725 {
10726 return (void*)dynCheck_entry_vkGetSemaphoreCounterValue;
10727 }
10728 if (!strcmp(name, "vkWaitSemaphores"))
10729 {
10730 return (void*)dynCheck_entry_vkWaitSemaphores;
10731 }
10732 if (!strcmp(name, "vkSignalSemaphore"))
10733 {
10734 return (void*)dynCheck_entry_vkSignalSemaphore;
10735 }
10736 if (!strcmp(name, "vkGetBufferDeviceAddress"))
10737 {
10738 return (void*)dynCheck_entry_vkGetBufferDeviceAddress;
10739 }
10740 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
10741 {
10742 return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddress;
10743 }
10744 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
10745 {
10746 return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress;
10747 }
10748#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010749#ifdef VK_KHR_surface
10750 if (!strcmp(name, "vkDestroySurfaceKHR"))
10751 {
10752 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10753 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
10754 }
10755 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
10756 {
10757 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10758 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
10759 }
10760 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
10761 {
10762 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10763 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
10764 }
10765 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
10766 {
10767 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10768 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
10769 }
10770 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
10771 {
10772 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10773 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
10774 }
10775#endif
10776#ifdef VK_KHR_swapchain
10777 if (!strcmp(name, "vkCreateSwapchainKHR"))
10778 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010779 return (void*)dynCheck_entry_vkCreateSwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010780 }
10781 if (!strcmp(name, "vkDestroySwapchainKHR"))
10782 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010783 return (void*)dynCheck_entry_vkDestroySwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010784 }
10785 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
10786 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010787 return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010788 }
10789 if (!strcmp(name, "vkAcquireNextImageKHR"))
10790 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010791 return (void*)dynCheck_entry_vkAcquireNextImageKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010792 }
10793 if (!strcmp(name, "vkQueuePresentKHR"))
10794 {
10795 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
10796 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
10797 }
10798 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
10799 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010800 return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010801 }
10802 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
10803 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010804 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010805 }
10806 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
10807 {
10808 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
10809 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
10810 }
10811 if (!strcmp(name, "vkAcquireNextImage2KHR"))
10812 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010813 return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010814 }
10815#endif
10816#ifdef VK_KHR_display
10817 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
10818 {
10819 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10820 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
10821 }
10822 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
10823 {
10824 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10825 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
10826 }
10827 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
10828 {
10829 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10830 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
10831 }
10832 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
10833 {
10834 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10835 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
10836 }
10837 if (!strcmp(name, "vkCreateDisplayModeKHR"))
10838 {
10839 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10840 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
10841 }
10842 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
10843 {
10844 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10845 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
10846 }
10847 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
10848 {
10849 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10850 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
10851 }
10852#endif
10853#ifdef VK_KHR_display_swapchain
10854 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
10855 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010856 return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010857 }
10858#endif
10859#ifdef VK_KHR_xlib_surface
10860 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
10861 {
10862 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
10863 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
10864 }
10865 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
10866 {
10867 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
10868 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
10869 }
10870#endif
10871#ifdef VK_KHR_xcb_surface
10872 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
10873 {
10874 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
10875 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
10876 }
10877 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
10878 {
10879 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
10880 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
10881 }
10882#endif
10883#ifdef VK_KHR_wayland_surface
10884 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
10885 {
10886 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
10887 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
10888 }
10889 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
10890 {
10891 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
10892 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
10893 }
10894#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010895#ifdef VK_KHR_android_surface
10896 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
10897 {
10898 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
10899 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
10900 }
10901#endif
10902#ifdef VK_KHR_win32_surface
10903 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
10904 {
10905 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
10906 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
10907 }
10908 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
10909 {
10910 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
10911 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
10912 }
10913#endif
10914#ifdef VK_KHR_get_physical_device_properties2
10915 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
10916 {
10917 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10918 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
10919 }
10920 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
10921 {
10922 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10923 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
10924 }
10925 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
10926 {
10927 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10928 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
10929 }
10930 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
10931 {
10932 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10933 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
10934 }
10935 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
10936 {
10937 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10938 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
10939 }
10940 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
10941 {
10942 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10943 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
10944 }
10945 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
10946 {
10947 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10948 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
10949 }
10950#endif
10951#ifdef VK_KHR_device_group
10952 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
10953 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010954 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010955 }
10956 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
10957 {
10958 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
10959 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
10960 }
10961 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
10962 {
10963 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
10964 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
10965 }
10966#endif
10967#ifdef VK_KHR_maintenance1
10968 if (!strcmp(name, "vkTrimCommandPoolKHR"))
10969 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010970 return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010971 }
10972#endif
10973#ifdef VK_KHR_device_group_creation
10974 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
10975 {
10976 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
10977 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
10978 }
10979#endif
10980#ifdef VK_KHR_external_memory_capabilities
10981 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
10982 {
10983 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
10984 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
10985 }
10986#endif
10987#ifdef VK_KHR_external_memory_win32
10988 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
10989 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010990 return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010991 }
10992 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
10993 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010994 return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010995 }
10996#endif
10997#ifdef VK_KHR_external_memory_fd
10998 if (!strcmp(name, "vkGetMemoryFdKHR"))
10999 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011000 return (void*)dynCheck_entry_vkGetMemoryFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011001 }
11002 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
11003 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011004 return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011005 }
11006#endif
11007#ifdef VK_KHR_external_semaphore_capabilities
11008 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
11009 {
11010 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
11011 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
11012 }
11013#endif
11014#ifdef VK_KHR_external_semaphore_win32
11015 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
11016 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011017 return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011018 }
11019 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
11020 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011021 return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011022 }
11023#endif
11024#ifdef VK_KHR_external_semaphore_fd
11025 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
11026 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011027 return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011028 }
11029 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
11030 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011031 return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011032 }
11033#endif
11034#ifdef VK_KHR_push_descriptor
11035 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
11036 {
11037 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
11038 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
11039 }
11040 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
11041 {
11042 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
11043 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
11044 }
11045#endif
11046#ifdef VK_KHR_descriptor_update_template
11047 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
11048 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011049 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011050 }
11051 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
11052 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011053 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011054 }
11055 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
11056 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011057 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011058 }
11059#endif
11060#ifdef VK_KHR_create_renderpass2
11061 if (!strcmp(name, "vkCreateRenderPass2KHR"))
11062 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011063 return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011064 }
11065 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
11066 {
11067 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
11068 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
11069 }
11070 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
11071 {
11072 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
11073 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
11074 }
11075 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
11076 {
11077 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
11078 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
11079 }
11080#endif
11081#ifdef VK_KHR_shared_presentable_image
11082 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
11083 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011084 return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011085 }
11086#endif
11087#ifdef VK_KHR_external_fence_capabilities
11088 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
11089 {
11090 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
11091 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
11092 }
11093#endif
11094#ifdef VK_KHR_external_fence_win32
11095 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
11096 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011097 return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011098 }
11099 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
11100 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011101 return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011102 }
11103#endif
11104#ifdef VK_KHR_external_fence_fd
11105 if (!strcmp(name, "vkImportFenceFdKHR"))
11106 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011107 return (void*)dynCheck_entry_vkImportFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011108 }
11109 if (!strcmp(name, "vkGetFenceFdKHR"))
11110 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011111 return (void*)dynCheck_entry_vkGetFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011112 }
11113#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011114#ifdef VK_KHR_performance_query
11115 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
11116 {
11117 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
11118 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
11119 }
11120 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
11121 {
11122 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
11123 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
11124 }
11125 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
11126 {
11127 return (void*)dynCheck_entry_vkAcquireProfilingLockKHR;
11128 }
11129 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
11130 {
11131 return (void*)dynCheck_entry_vkReleaseProfilingLockKHR;
11132 }
11133#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011134#ifdef VK_KHR_get_surface_capabilities2
11135 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
11136 {
11137 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
11138 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
11139 }
11140 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
11141 {
11142 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
11143 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
11144 }
11145#endif
11146#ifdef VK_KHR_get_display_properties2
11147 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
11148 {
11149 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11150 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
11151 }
11152 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
11153 {
11154 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11155 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
11156 }
11157 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
11158 {
11159 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11160 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
11161 }
11162 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
11163 {
11164 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11165 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
11166 }
11167#endif
11168#ifdef VK_KHR_get_memory_requirements2
11169 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
11170 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011171 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011172 }
11173 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
11174 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011175 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011176 }
11177 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
11178 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011179 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011180 }
11181#endif
11182#ifdef VK_KHR_sampler_ycbcr_conversion
11183 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
11184 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011185 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011186 }
11187 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
11188 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011189 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011190 }
11191#endif
11192#ifdef VK_KHR_bind_memory2
11193 if (!strcmp(name, "vkBindBufferMemory2KHR"))
11194 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011195 return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011196 }
11197 if (!strcmp(name, "vkBindImageMemory2KHR"))
11198 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011199 return (void*)dynCheck_entry_vkBindImageMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011200 }
11201#endif
11202#ifdef VK_KHR_maintenance3
11203 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
11204 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011205 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011206 }
11207#endif
11208#ifdef VK_KHR_draw_indirect_count
11209 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
11210 {
11211 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
11212 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
11213 }
11214 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
11215 {
11216 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
11217 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
11218 }
11219#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011220#ifdef VK_KHR_timeline_semaphore
11221 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
11222 {
11223 return (void*)dynCheck_entry_vkGetSemaphoreCounterValueKHR;
11224 }
11225 if (!strcmp(name, "vkWaitSemaphoresKHR"))
11226 {
11227 return (void*)dynCheck_entry_vkWaitSemaphoresKHR;
11228 }
11229 if (!strcmp(name, "vkSignalSemaphoreKHR"))
11230 {
11231 return (void*)dynCheck_entry_vkSignalSemaphoreKHR;
11232 }
11233#endif
11234#ifdef VK_KHR_fragment_shading_rate
11235 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
11236 {
11237 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_fragment_shading_rate");
11238 return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
11239 }
11240 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
11241 {
11242 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_fragment_shading_rate");
11243 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateKHR : nullptr;
11244 }
11245#endif
11246#ifdef VK_KHR_buffer_device_address
11247 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
11248 {
11249 return (void*)dynCheck_entry_vkGetBufferDeviceAddressKHR;
11250 }
11251 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
11252 {
11253 return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR;
11254 }
11255 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
11256 {
11257 return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR;
11258 }
11259#endif
11260#ifdef VK_KHR_deferred_host_operations
11261 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
11262 {
11263 return (void*)dynCheck_entry_vkCreateDeferredOperationKHR;
11264 }
11265 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
11266 {
11267 return (void*)dynCheck_entry_vkDestroyDeferredOperationKHR;
11268 }
11269 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
11270 {
11271 return (void*)dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR;
11272 }
11273 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
11274 {
11275 return (void*)dynCheck_entry_vkGetDeferredOperationResultKHR;
11276 }
11277 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
11278 {
11279 return (void*)dynCheck_entry_vkDeferredOperationJoinKHR;
11280 }
11281#endif
11282#ifdef VK_KHR_pipeline_executable_properties
11283 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
11284 {
11285 return (void*)dynCheck_entry_vkGetPipelineExecutablePropertiesKHR;
11286 }
11287 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
11288 {
11289 return (void*)dynCheck_entry_vkGetPipelineExecutableStatisticsKHR;
11290 }
11291 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
11292 {
11293 return (void*)dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR;
11294 }
11295#endif
11296#ifdef VK_KHR_copy_commands2
11297 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
11298 {
11299 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11300 return hasExt ? (void*)entry_vkCmdCopyBuffer2KHR : nullptr;
11301 }
11302 if (!strcmp(name, "vkCmdCopyImage2KHR"))
11303 {
11304 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11305 return hasExt ? (void*)entry_vkCmdCopyImage2KHR : nullptr;
11306 }
11307 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
11308 {
11309 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11310 return hasExt ? (void*)entry_vkCmdCopyBufferToImage2KHR : nullptr;
11311 }
11312 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
11313 {
11314 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11315 return hasExt ? (void*)entry_vkCmdCopyImageToBuffer2KHR : nullptr;
11316 }
11317 if (!strcmp(name, "vkCmdBlitImage2KHR"))
11318 {
11319 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11320 return hasExt ? (void*)entry_vkCmdBlitImage2KHR : nullptr;
11321 }
11322 if (!strcmp(name, "vkCmdResolveImage2KHR"))
11323 {
11324 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11325 return hasExt ? (void*)entry_vkCmdResolveImage2KHR : nullptr;
11326 }
11327#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011328#ifdef VK_ANDROID_native_buffer
11329 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
11330 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011331 return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011332 }
11333 if (!strcmp(name, "vkAcquireImageANDROID"))
11334 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011335 return (void*)dynCheck_entry_vkAcquireImageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011336 }
11337 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
11338 {
11339 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
11340 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
11341 }
11342#endif
11343#ifdef VK_EXT_debug_report
11344 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
11345 {
11346 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
11347 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
11348 }
11349 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
11350 {
11351 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
11352 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
11353 }
11354 if (!strcmp(name, "vkDebugReportMessageEXT"))
11355 {
11356 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
11357 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
11358 }
11359#endif
11360#ifdef VK_EXT_debug_marker
11361 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
11362 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011363 return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011364 }
11365 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
11366 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011367 return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011368 }
11369 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
11370 {
11371 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
11372 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
11373 }
11374 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
11375 {
11376 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
11377 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
11378 }
11379 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
11380 {
11381 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
11382 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
11383 }
11384#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011385#ifdef VK_EXT_transform_feedback
11386 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
11387 {
11388 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11389 return hasExt ? (void*)entry_vkCmdBindTransformFeedbackBuffersEXT : nullptr;
11390 }
11391 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
11392 {
11393 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11394 return hasExt ? (void*)entry_vkCmdBeginTransformFeedbackEXT : nullptr;
11395 }
11396 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
11397 {
11398 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11399 return hasExt ? (void*)entry_vkCmdEndTransformFeedbackEXT : nullptr;
11400 }
11401 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
11402 {
11403 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11404 return hasExt ? (void*)entry_vkCmdBeginQueryIndexedEXT : nullptr;
11405 }
11406 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
11407 {
11408 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11409 return hasExt ? (void*)entry_vkCmdEndQueryIndexedEXT : nullptr;
11410 }
11411 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
11412 {
11413 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11414 return hasExt ? (void*)entry_vkCmdDrawIndirectByteCountEXT : nullptr;
11415 }
11416#endif
11417#ifdef VK_NVX_image_view_handle
11418 if (!strcmp(name, "vkGetImageViewHandleNVX"))
11419 {
11420 return (void*)dynCheck_entry_vkGetImageViewHandleNVX;
11421 }
11422 if (!strcmp(name, "vkGetImageViewAddressNVX"))
11423 {
11424 return (void*)dynCheck_entry_vkGetImageViewAddressNVX;
11425 }
11426#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011427#ifdef VK_AMD_draw_indirect_count
11428 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
11429 {
11430 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
11431 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
11432 }
11433 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
11434 {
11435 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
11436 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
11437 }
11438#endif
11439#ifdef VK_AMD_shader_info
11440 if (!strcmp(name, "vkGetShaderInfoAMD"))
11441 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011442 return (void*)dynCheck_entry_vkGetShaderInfoAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011443 }
11444#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011445#ifdef VK_GGP_stream_descriptor_surface
11446 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
11447 {
11448 bool hasExt = resources->hasInstanceExtension(instance, "VK_GGP_stream_descriptor_surface");
11449 return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
11450 }
11451#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011452#ifdef VK_NV_external_memory_capabilities
11453 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
11454 {
11455 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
11456 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
11457 }
11458#endif
11459#ifdef VK_NV_external_memory_win32
11460 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
11461 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011462 return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011463 }
11464#endif
11465#ifdef VK_NN_vi_surface
11466 if (!strcmp(name, "vkCreateViSurfaceNN"))
11467 {
11468 bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
11469 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
11470 }
11471#endif
11472#ifdef VK_EXT_conditional_rendering
11473 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
11474 {
11475 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
11476 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
11477 }
11478 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
11479 {
11480 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
11481 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
11482 }
11483#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011484#ifdef VK_NV_clip_space_w_scaling
11485 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
11486 {
11487 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling");
11488 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
11489 }
11490#endif
11491#ifdef VK_EXT_direct_mode_display
11492 if (!strcmp(name, "vkReleaseDisplayEXT"))
11493 {
11494 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
11495 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
11496 }
11497#endif
11498#ifdef VK_EXT_acquire_xlib_display
11499 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
11500 {
11501 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
11502 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
11503 }
11504 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
11505 {
11506 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
11507 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
11508 }
11509#endif
11510#ifdef VK_EXT_display_surface_counter
11511 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
11512 {
11513 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
11514 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
11515 }
11516#endif
11517#ifdef VK_EXT_display_control
11518 if (!strcmp(name, "vkDisplayPowerControlEXT"))
11519 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011520 return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011521 }
11522 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
11523 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011524 return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011525 }
11526 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
11527 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011528 return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011529 }
11530 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
11531 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011532 return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011533 }
11534#endif
11535#ifdef VK_GOOGLE_display_timing
11536 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
11537 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011538 return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011539 }
11540 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
11541 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011542 return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011543 }
11544#endif
11545#ifdef VK_EXT_discard_rectangles
11546 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
11547 {
11548 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles");
11549 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
11550 }
11551#endif
11552#ifdef VK_EXT_hdr_metadata
11553 if (!strcmp(name, "vkSetHdrMetadataEXT"))
11554 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011555 return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011556 }
11557#endif
11558#ifdef VK_MVK_ios_surface
11559 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
11560 {
11561 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
11562 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
11563 }
11564#endif
11565#ifdef VK_MVK_macos_surface
11566 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
11567 {
11568 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
11569 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
11570 }
11571#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011572#ifdef VK_MVK_moltenvk
11573 if (!strcmp(name, "vkGetMTLDeviceMVK"))
11574 {
11575 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11576 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
11577 }
11578 if (!strcmp(name, "vkSetMTLTextureMVK"))
11579 {
11580 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11581 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
11582 }
11583 if (!strcmp(name, "vkGetMTLTextureMVK"))
11584 {
11585 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11586 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
11587 }
11588 if (!strcmp(name, "vkGetMTLBufferMVK"))
11589 {
11590 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11591 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
11592 }
11593 if (!strcmp(name, "vkUseIOSurfaceMVK"))
11594 {
11595 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11596 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
11597 }
11598 if (!strcmp(name, "vkGetIOSurfaceMVK"))
11599 {
11600 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11601 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
11602 }
11603#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011604#ifdef VK_EXT_debug_utils
11605 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
11606 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011607 return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011608 }
11609 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
11610 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011611 return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011612 }
11613 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
11614 {
11615 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11616 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
11617 }
11618 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
11619 {
11620 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11621 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
11622 }
11623 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
11624 {
11625 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11626 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
11627 }
11628 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
11629 {
11630 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11631 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
11632 }
11633 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
11634 {
11635 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11636 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
11637 }
11638 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
11639 {
11640 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11641 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
11642 }
11643 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
11644 {
11645 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11646 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
11647 }
11648 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
11649 {
11650 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11651 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
11652 }
11653 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
11654 {
11655 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11656 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
11657 }
11658#endif
11659#ifdef VK_ANDROID_external_memory_android_hardware_buffer
11660 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
11661 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011662 return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011663 }
11664 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
11665 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011666 return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011667 }
11668#endif
11669#ifdef VK_EXT_sample_locations
11670 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
11671 {
11672 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
11673 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
11674 }
11675 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
11676 {
11677 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
11678 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
11679 }
11680#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011681#ifdef VK_EXT_image_drm_format_modifier
11682 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
11683 {
11684 return (void*)dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT;
11685 }
11686#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011687#ifdef VK_EXT_validation_cache
11688 if (!strcmp(name, "vkCreateValidationCacheEXT"))
11689 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011690 return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011691 }
11692 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
11693 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011694 return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011695 }
11696 if (!strcmp(name, "vkMergeValidationCachesEXT"))
11697 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011698 return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011699 }
11700 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
11701 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011702 return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011703 }
11704#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011705#ifdef VK_NV_shading_rate_image
11706 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
11707 {
11708 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
11709 return hasExt ? (void*)entry_vkCmdBindShadingRateImageNV : nullptr;
11710 }
11711 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
11712 {
11713 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
11714 return hasExt ? (void*)entry_vkCmdSetViewportShadingRatePaletteNV : nullptr;
11715 }
11716 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
11717 {
11718 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
11719 return hasExt ? (void*)entry_vkCmdSetCoarseSampleOrderNV : nullptr;
11720 }
11721#endif
11722#ifdef VK_NV_ray_tracing
11723 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
11724 {
11725 return (void*)dynCheck_entry_vkCreateAccelerationStructureNV;
11726 }
11727 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
11728 {
11729 return (void*)dynCheck_entry_vkDestroyAccelerationStructureNV;
11730 }
11731 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
11732 {
11733 return (void*)dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV;
11734 }
11735 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
11736 {
11737 return (void*)dynCheck_entry_vkBindAccelerationStructureMemoryNV;
11738 }
11739 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
11740 {
11741 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11742 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructureNV : nullptr;
11743 }
11744 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
11745 {
11746 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11747 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureNV : nullptr;
11748 }
11749 if (!strcmp(name, "vkCmdTraceRaysNV"))
11750 {
11751 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11752 return hasExt ? (void*)entry_vkCmdTraceRaysNV : nullptr;
11753 }
11754 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
11755 {
11756 return (void*)dynCheck_entry_vkCreateRayTracingPipelinesNV;
11757 }
11758 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
11759 {
11760 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR;
11761 }
11762 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
11763 {
11764 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV;
11765 }
11766 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
11767 {
11768 return (void*)dynCheck_entry_vkGetAccelerationStructureHandleNV;
11769 }
11770 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
11771 {
11772 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11773 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesNV : nullptr;
11774 }
11775 if (!strcmp(name, "vkCompileDeferredNV"))
11776 {
11777 return (void*)dynCheck_entry_vkCompileDeferredNV;
11778 }
11779#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011780#ifdef VK_EXT_external_memory_host
11781 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
11782 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011783 return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011784 }
11785#endif
11786#ifdef VK_AMD_buffer_marker
11787 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
11788 {
11789 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker");
11790 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
11791 }
11792#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011793#ifdef VK_EXT_calibrated_timestamps
11794 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
11795 {
11796 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_calibrated_timestamps");
11797 return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
11798 }
11799 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
11800 {
11801 return (void*)dynCheck_entry_vkGetCalibratedTimestampsEXT;
11802 }
11803#endif
11804#ifdef VK_NV_mesh_shader
11805 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
11806 {
11807 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
11808 return hasExt ? (void*)entry_vkCmdDrawMeshTasksNV : nullptr;
11809 }
11810 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
11811 {
11812 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
11813 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectNV : nullptr;
11814 }
11815 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
11816 {
11817 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
11818 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountNV : nullptr;
11819 }
11820#endif
11821#ifdef VK_NV_scissor_exclusive
11822 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
11823 {
11824 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_scissor_exclusive");
11825 return hasExt ? (void*)entry_vkCmdSetExclusiveScissorNV : nullptr;
11826 }
11827#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011828#ifdef VK_NV_device_diagnostic_checkpoints
11829 if (!strcmp(name, "vkCmdSetCheckpointNV"))
11830 {
11831 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
11832 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
11833 }
11834 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
11835 {
11836 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
11837 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
11838 }
11839#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011840#ifdef VK_INTEL_performance_query
11841 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011842 {
Yilong Lia8d45f12021-02-07 02:30:21 -080011843 return (void*)dynCheck_entry_vkInitializePerformanceApiINTEL;
11844 }
11845 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
11846 {
11847 return (void*)dynCheck_entry_vkUninitializePerformanceApiINTEL;
11848 }
11849 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
11850 {
11851 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11852 return hasExt ? (void*)entry_vkCmdSetPerformanceMarkerINTEL : nullptr;
11853 }
11854 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
11855 {
11856 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11857 return hasExt ? (void*)entry_vkCmdSetPerformanceStreamMarkerINTEL : nullptr;
11858 }
11859 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
11860 {
11861 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11862 return hasExt ? (void*)entry_vkCmdSetPerformanceOverrideINTEL : nullptr;
11863 }
11864 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
11865 {
11866 return (void*)dynCheck_entry_vkAcquirePerformanceConfigurationINTEL;
11867 }
11868 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
11869 {
11870 return (void*)dynCheck_entry_vkReleasePerformanceConfigurationINTEL;
11871 }
11872 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
11873 {
11874 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11875 return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
11876 }
11877 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
11878 {
11879 return (void*)dynCheck_entry_vkGetPerformanceParameterINTEL;
11880 }
11881#endif
11882#ifdef VK_AMD_display_native_hdr
11883 if (!strcmp(name, "vkSetLocalDimmingAMD"))
11884 {
11885 return (void*)dynCheck_entry_vkSetLocalDimmingAMD;
11886 }
11887#endif
11888#ifdef VK_FUCHSIA_imagepipe_surface
11889 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
11890 {
11891 bool hasExt = resources->hasInstanceExtension(instance, "VK_FUCHSIA_imagepipe_surface");
11892 return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
11893 }
11894#endif
11895#ifdef VK_EXT_metal_surface
11896 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
11897 {
11898 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_metal_surface");
11899 return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011900 }
11901#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080011902#ifdef VK_GOOGLE_color_buffer
11903 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
11904 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011905 return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080011906 }
11907 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
11908 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011909 return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080011910 }
11911#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011912#ifdef VK_EXT_buffer_device_address
11913 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
11914 {
11915 return (void*)dynCheck_entry_vkGetBufferDeviceAddressEXT;
11916 }
11917#endif
11918#ifdef VK_EXT_tooling_info
11919 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
11920 {
11921 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_tooling_info");
11922 return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
11923 }
11924#endif
11925#ifdef VK_NV_cooperative_matrix
11926 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
11927 {
11928 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_cooperative_matrix");
11929 return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
11930 }
11931#endif
11932#ifdef VK_NV_coverage_reduction_mode
11933 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
11934 {
11935 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_coverage_reduction_mode");
11936 return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
11937 }
11938#endif
11939#ifdef VK_EXT_full_screen_exclusive
11940 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
11941 {
11942 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_full_screen_exclusive");
11943 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
11944 }
11945 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
11946 {
11947 return (void*)dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT;
11948 }
11949 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
11950 {
11951 return (void*)dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT;
11952 }
11953 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
11954 {
11955 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT;
11956 }
11957#endif
11958#ifdef VK_EXT_headless_surface
11959 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
11960 {
11961 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_headless_surface");
11962 return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
11963 }
11964#endif
11965#ifdef VK_EXT_line_rasterization
11966 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
11967 {
11968 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_line_rasterization");
11969 return hasExt ? (void*)entry_vkCmdSetLineStippleEXT : nullptr;
11970 }
11971#endif
11972#ifdef VK_EXT_host_query_reset
11973 if (!strcmp(name, "vkResetQueryPoolEXT"))
11974 {
11975 return (void*)dynCheck_entry_vkResetQueryPoolEXT;
11976 }
11977#endif
11978#ifdef VK_EXT_extended_dynamic_state
11979 if (!strcmp(name, "vkCmdSetCullModeEXT"))
11980 {
11981 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11982 return hasExt ? (void*)entry_vkCmdSetCullModeEXT : nullptr;
11983 }
11984 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
11985 {
11986 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11987 return hasExt ? (void*)entry_vkCmdSetFrontFaceEXT : nullptr;
11988 }
11989 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
11990 {
11991 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11992 return hasExt ? (void*)entry_vkCmdSetPrimitiveTopologyEXT : nullptr;
11993 }
11994 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
11995 {
11996 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11997 return hasExt ? (void*)entry_vkCmdSetViewportWithCountEXT : nullptr;
11998 }
11999 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
12000 {
12001 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12002 return hasExt ? (void*)entry_vkCmdSetScissorWithCountEXT : nullptr;
12003 }
12004 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
12005 {
12006 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12007 return hasExt ? (void*)entry_vkCmdBindVertexBuffers2EXT : nullptr;
12008 }
12009 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
12010 {
12011 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12012 return hasExt ? (void*)entry_vkCmdSetDepthTestEnableEXT : nullptr;
12013 }
12014 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
12015 {
12016 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12017 return hasExt ? (void*)entry_vkCmdSetDepthWriteEnableEXT : nullptr;
12018 }
12019 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
12020 {
12021 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12022 return hasExt ? (void*)entry_vkCmdSetDepthCompareOpEXT : nullptr;
12023 }
12024 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
12025 {
12026 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12027 return hasExt ? (void*)entry_vkCmdSetDepthBoundsTestEnableEXT : nullptr;
12028 }
12029 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
12030 {
12031 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12032 return hasExt ? (void*)entry_vkCmdSetStencilTestEnableEXT : nullptr;
12033 }
12034 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
12035 {
12036 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12037 return hasExt ? (void*)entry_vkCmdSetStencilOpEXT : nullptr;
12038 }
12039#endif
12040#ifdef VK_NV_device_generated_commands
12041 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
12042 {
12043 return (void*)dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV;
12044 }
12045 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
12046 {
12047 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
12048 return hasExt ? (void*)entry_vkCmdPreprocessGeneratedCommandsNV : nullptr;
12049 }
12050 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
12051 {
12052 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
12053 return hasExt ? (void*)entry_vkCmdExecuteGeneratedCommandsNV : nullptr;
12054 }
12055 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
12056 {
12057 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
12058 return hasExt ? (void*)entry_vkCmdBindPipelineShaderGroupNV : nullptr;
12059 }
12060 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
12061 {
12062 return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNV;
12063 }
12064 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
12065 {
12066 return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNV;
12067 }
12068#endif
12069#ifdef VK_EXT_private_data
12070 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
12071 {
12072 return (void*)dynCheck_entry_vkCreatePrivateDataSlotEXT;
12073 }
12074 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
12075 {
12076 return (void*)dynCheck_entry_vkDestroyPrivateDataSlotEXT;
12077 }
12078 if (!strcmp(name, "vkSetPrivateDataEXT"))
12079 {
12080 return (void*)dynCheck_entry_vkSetPrivateDataEXT;
12081 }
12082 if (!strcmp(name, "vkGetPrivateDataEXT"))
12083 {
12084 return (void*)dynCheck_entry_vkGetPrivateDataEXT;
12085 }
12086#endif
12087#ifdef VK_NV_fragment_shading_rate_enums
12088 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
12089 {
12090 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_fragment_shading_rate_enums");
12091 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateEnumNV : nullptr;
12092 }
12093#endif
12094#ifdef VK_EXT_directfb_surface
12095 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
12096 {
12097 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
12098 return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
12099 }
12100 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
12101 {
12102 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
12103 return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
12104 }
12105#endif
Yilong Li71c43c52021-02-10 02:50:43 -080012106#ifdef VK_GOOGLE_gfxstream
Yilong Lia8d45f12021-02-07 02:30:21 -080012107 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
12108 {
12109 return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
12110 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070012111 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
12112 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012113 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070012114 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012115 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
12116 {
Yilong Li71c43c52021-02-10 02:50:43 -080012117 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012118 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
12119 }
12120 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
12121 {
Yilong Li71c43c52021-02-10 02:50:43 -080012122 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012123 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
12124 }
12125 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
12126 {
Yilong Li71c43c52021-02-10 02:50:43 -080012127 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012128 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
12129 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070012130 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
12131 {
Yilong Li71c43c52021-02-10 02:50:43 -080012132 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yang39a276e2019-06-17 13:27:22 -070012133 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
12134 }
Lingfeng Yang87f11962019-06-27 16:28:53 +000012135 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
12136 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012137 return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +000012138 }
12139 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
12140 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012141 return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +000012142 }
Lingfeng Yang4c542412020-02-04 18:18:32 -080012143 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
12144 {
12145 return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE;
12146 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070012147 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
12148 {
12149 return (void*)dynCheck_entry_vkFreeMemorySyncGOOGLE;
12150 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012151 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
12152 {
Yilong Li71c43c52021-02-10 02:50:43 -080012153 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012154 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
12155 }
12156 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
12157 {
Yilong Li71c43c52021-02-10 02:50:43 -080012158 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012159 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
12160 }
12161 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
12162 {
Yilong Li71c43c52021-02-10 02:50:43 -080012163 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012164 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
12165 }
12166 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
12167 {
Yilong Li71c43c52021-02-10 02:50:43 -080012168 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012169 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
12170 }
Yilong Lia48b0102020-09-15 15:08:28 -070012171 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
12172 {
12173 return (void*)dynCheck_entry_vkGetLinearImageLayoutGOOGLE;
12174 }
Lingfeng Yangded34672021-01-22 23:17:47 -080012175 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
12176 {
Yilong Li71c43c52021-02-10 02:50:43 -080012177 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangded34672021-01-22 23:17:47 -080012178 return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
12179 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080012180 if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
12181 {
12182 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
12183 return hasExt ? (void*)entry_vkQueueCommitDescriptorSetUpdatesGOOGLE : nullptr;
12184 }
12185 if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
12186 {
12187 return (void*)dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE;
12188 }
Lingfeng Yangded34672021-01-22 23:17:47 -080012189#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012190#ifdef VK_KHR_acceleration_structure
12191 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
12192 {
12193 return (void*)dynCheck_entry_vkCreateAccelerationStructureKHR;
12194 }
12195 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
12196 {
12197 return (void*)dynCheck_entry_vkDestroyAccelerationStructureKHR;
12198 }
12199 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
12200 {
12201 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12202 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresKHR : nullptr;
12203 }
12204 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
12205 {
12206 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12207 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresIndirectKHR : nullptr;
12208 }
12209 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
12210 {
12211 return (void*)dynCheck_entry_vkBuildAccelerationStructuresKHR;
12212 }
12213 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
12214 {
12215 return (void*)dynCheck_entry_vkCopyAccelerationStructureKHR;
12216 }
12217 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
12218 {
12219 return (void*)dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR;
12220 }
12221 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
12222 {
12223 return (void*)dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR;
12224 }
12225 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
12226 {
12227 return (void*)dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR;
12228 }
12229 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
12230 {
12231 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12232 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureKHR : nullptr;
12233 }
12234 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
12235 {
12236 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12237 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureToMemoryKHR : nullptr;
12238 }
12239 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
12240 {
12241 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12242 return hasExt ? (void*)entry_vkCmdCopyMemoryToAccelerationStructureKHR : nullptr;
12243 }
12244 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
12245 {
12246 return (void*)dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR;
12247 }
12248 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
12249 {
12250 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12251 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesKHR : nullptr;
12252 }
12253 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
12254 {
12255 return (void*)dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR;
12256 }
12257 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
12258 {
12259 return (void*)dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR;
12260 }
12261#endif
12262#ifdef VK_KHR_ray_tracing_pipeline
12263 if (!strcmp(name, "vkCmdTraceRaysKHR"))
12264 {
12265 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
12266 return hasExt ? (void*)entry_vkCmdTraceRaysKHR : nullptr;
12267 }
12268 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
12269 {
12270 return (void*)dynCheck_entry_vkCreateRayTracingPipelinesKHR;
12271 }
12272 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
12273 {
12274 return (void*)dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR;
12275 }
12276 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
12277 {
12278 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
12279 return hasExt ? (void*)entry_vkCmdTraceRaysIndirectKHR : nullptr;
12280 }
12281 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
12282 {
12283 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR;
12284 }
12285 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
12286 {
12287 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
12288 return hasExt ? (void*)entry_vkCmdSetRayTracingPipelineStackSizeKHR : nullptr;
12289 }
12290#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012291 return nullptr;
12292}
12293void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
12294 auto resources = ResourceTracker::get();
12295 bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
12296#ifdef VK_VERSION_1_0
12297 if (!strcmp(name, "vkCreateInstance"))
12298 {
12299 return (void*)entry_vkCreateInstance;
12300 }
12301 if (!strcmp(name, "vkDestroyInstance"))
12302 {
12303 return (void*)entry_vkDestroyInstance;
12304 }
12305 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
12306 {
12307 return (void*)entry_vkEnumeratePhysicalDevices;
12308 }
12309 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
12310 {
12311 return (void*)entry_vkGetPhysicalDeviceFeatures;
12312 }
12313 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
12314 {
12315 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
12316 }
12317 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
12318 {
12319 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
12320 }
12321 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
12322 {
12323 return (void*)entry_vkGetPhysicalDeviceProperties;
12324 }
12325 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
12326 {
12327 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
12328 }
12329 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
12330 {
12331 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
12332 }
12333 if (!strcmp(name, "vkGetInstanceProcAddr"))
12334 {
12335 return (void*)entry_vkGetInstanceProcAddr;
12336 }
12337 if (!strcmp(name, "vkGetDeviceProcAddr"))
12338 {
12339 return (void*)entry_vkGetDeviceProcAddr;
12340 }
12341 if (!strcmp(name, "vkCreateDevice"))
12342 {
12343 return (void*)entry_vkCreateDevice;
12344 }
12345 if (!strcmp(name, "vkDestroyDevice"))
12346 {
12347 return (void*)entry_vkDestroyDevice;
12348 }
12349 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
12350 {
12351 return (void*)entry_vkEnumerateInstanceExtensionProperties;
12352 }
12353 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
12354 {
12355 return (void*)entry_vkEnumerateDeviceExtensionProperties;
12356 }
12357 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
12358 {
12359 return (void*)entry_vkEnumerateInstanceLayerProperties;
12360 }
12361 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
12362 {
12363 return (void*)entry_vkEnumerateDeviceLayerProperties;
12364 }
12365 if (!strcmp(name, "vkGetDeviceQueue"))
12366 {
12367 return (void*)entry_vkGetDeviceQueue;
12368 }
12369 if (!strcmp(name, "vkQueueSubmit"))
12370 {
12371 return (void*)entry_vkQueueSubmit;
12372 }
12373 if (!strcmp(name, "vkQueueWaitIdle"))
12374 {
12375 return (void*)entry_vkQueueWaitIdle;
12376 }
12377 if (!strcmp(name, "vkDeviceWaitIdle"))
12378 {
12379 return (void*)entry_vkDeviceWaitIdle;
12380 }
12381 if (!strcmp(name, "vkAllocateMemory"))
12382 {
12383 return (void*)entry_vkAllocateMemory;
12384 }
12385 if (!strcmp(name, "vkFreeMemory"))
12386 {
12387 return (void*)entry_vkFreeMemory;
12388 }
12389 if (!strcmp(name, "vkMapMemory"))
12390 {
12391 return (void*)entry_vkMapMemory;
12392 }
12393 if (!strcmp(name, "vkUnmapMemory"))
12394 {
12395 return (void*)entry_vkUnmapMemory;
12396 }
12397 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
12398 {
12399 return (void*)entry_vkFlushMappedMemoryRanges;
12400 }
12401 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
12402 {
12403 return (void*)entry_vkInvalidateMappedMemoryRanges;
12404 }
12405 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
12406 {
12407 return (void*)entry_vkGetDeviceMemoryCommitment;
12408 }
12409 if (!strcmp(name, "vkBindBufferMemory"))
12410 {
12411 return (void*)entry_vkBindBufferMemory;
12412 }
12413 if (!strcmp(name, "vkBindImageMemory"))
12414 {
12415 return (void*)entry_vkBindImageMemory;
12416 }
12417 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
12418 {
12419 return (void*)entry_vkGetBufferMemoryRequirements;
12420 }
12421 if (!strcmp(name, "vkGetImageMemoryRequirements"))
12422 {
12423 return (void*)entry_vkGetImageMemoryRequirements;
12424 }
12425 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
12426 {
12427 return (void*)entry_vkGetImageSparseMemoryRequirements;
12428 }
12429 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
12430 {
12431 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
12432 }
12433 if (!strcmp(name, "vkQueueBindSparse"))
12434 {
12435 return (void*)entry_vkQueueBindSparse;
12436 }
12437 if (!strcmp(name, "vkCreateFence"))
12438 {
12439 return (void*)entry_vkCreateFence;
12440 }
12441 if (!strcmp(name, "vkDestroyFence"))
12442 {
12443 return (void*)entry_vkDestroyFence;
12444 }
12445 if (!strcmp(name, "vkResetFences"))
12446 {
12447 return (void*)entry_vkResetFences;
12448 }
12449 if (!strcmp(name, "vkGetFenceStatus"))
12450 {
12451 return (void*)entry_vkGetFenceStatus;
12452 }
12453 if (!strcmp(name, "vkWaitForFences"))
12454 {
12455 return (void*)entry_vkWaitForFences;
12456 }
12457 if (!strcmp(name, "vkCreateSemaphore"))
12458 {
12459 return (void*)entry_vkCreateSemaphore;
12460 }
12461 if (!strcmp(name, "vkDestroySemaphore"))
12462 {
12463 return (void*)entry_vkDestroySemaphore;
12464 }
12465 if (!strcmp(name, "vkCreateEvent"))
12466 {
12467 return (void*)entry_vkCreateEvent;
12468 }
12469 if (!strcmp(name, "vkDestroyEvent"))
12470 {
12471 return (void*)entry_vkDestroyEvent;
12472 }
12473 if (!strcmp(name, "vkGetEventStatus"))
12474 {
12475 return (void*)entry_vkGetEventStatus;
12476 }
12477 if (!strcmp(name, "vkSetEvent"))
12478 {
12479 return (void*)entry_vkSetEvent;
12480 }
12481 if (!strcmp(name, "vkResetEvent"))
12482 {
12483 return (void*)entry_vkResetEvent;
12484 }
12485 if (!strcmp(name, "vkCreateQueryPool"))
12486 {
12487 return (void*)entry_vkCreateQueryPool;
12488 }
12489 if (!strcmp(name, "vkDestroyQueryPool"))
12490 {
12491 return (void*)entry_vkDestroyQueryPool;
12492 }
12493 if (!strcmp(name, "vkGetQueryPoolResults"))
12494 {
12495 return (void*)entry_vkGetQueryPoolResults;
12496 }
12497 if (!strcmp(name, "vkCreateBuffer"))
12498 {
12499 return (void*)entry_vkCreateBuffer;
12500 }
12501 if (!strcmp(name, "vkDestroyBuffer"))
12502 {
12503 return (void*)entry_vkDestroyBuffer;
12504 }
12505 if (!strcmp(name, "vkCreateBufferView"))
12506 {
12507 return (void*)entry_vkCreateBufferView;
12508 }
12509 if (!strcmp(name, "vkDestroyBufferView"))
12510 {
12511 return (void*)entry_vkDestroyBufferView;
12512 }
12513 if (!strcmp(name, "vkCreateImage"))
12514 {
12515 return (void*)entry_vkCreateImage;
12516 }
12517 if (!strcmp(name, "vkDestroyImage"))
12518 {
12519 return (void*)entry_vkDestroyImage;
12520 }
12521 if (!strcmp(name, "vkGetImageSubresourceLayout"))
12522 {
12523 return (void*)entry_vkGetImageSubresourceLayout;
12524 }
12525 if (!strcmp(name, "vkCreateImageView"))
12526 {
12527 return (void*)entry_vkCreateImageView;
12528 }
12529 if (!strcmp(name, "vkDestroyImageView"))
12530 {
12531 return (void*)entry_vkDestroyImageView;
12532 }
12533 if (!strcmp(name, "vkCreateShaderModule"))
12534 {
12535 return (void*)entry_vkCreateShaderModule;
12536 }
12537 if (!strcmp(name, "vkDestroyShaderModule"))
12538 {
12539 return (void*)entry_vkDestroyShaderModule;
12540 }
12541 if (!strcmp(name, "vkCreatePipelineCache"))
12542 {
12543 return (void*)entry_vkCreatePipelineCache;
12544 }
12545 if (!strcmp(name, "vkDestroyPipelineCache"))
12546 {
12547 return (void*)entry_vkDestroyPipelineCache;
12548 }
12549 if (!strcmp(name, "vkGetPipelineCacheData"))
12550 {
12551 return (void*)entry_vkGetPipelineCacheData;
12552 }
12553 if (!strcmp(name, "vkMergePipelineCaches"))
12554 {
12555 return (void*)entry_vkMergePipelineCaches;
12556 }
12557 if (!strcmp(name, "vkCreateGraphicsPipelines"))
12558 {
12559 return (void*)entry_vkCreateGraphicsPipelines;
12560 }
12561 if (!strcmp(name, "vkCreateComputePipelines"))
12562 {
12563 return (void*)entry_vkCreateComputePipelines;
12564 }
12565 if (!strcmp(name, "vkDestroyPipeline"))
12566 {
12567 return (void*)entry_vkDestroyPipeline;
12568 }
12569 if (!strcmp(name, "vkCreatePipelineLayout"))
12570 {
12571 return (void*)entry_vkCreatePipelineLayout;
12572 }
12573 if (!strcmp(name, "vkDestroyPipelineLayout"))
12574 {
12575 return (void*)entry_vkDestroyPipelineLayout;
12576 }
12577 if (!strcmp(name, "vkCreateSampler"))
12578 {
12579 return (void*)entry_vkCreateSampler;
12580 }
12581 if (!strcmp(name, "vkDestroySampler"))
12582 {
12583 return (void*)entry_vkDestroySampler;
12584 }
12585 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
12586 {
12587 return (void*)entry_vkCreateDescriptorSetLayout;
12588 }
12589 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
12590 {
12591 return (void*)entry_vkDestroyDescriptorSetLayout;
12592 }
12593 if (!strcmp(name, "vkCreateDescriptorPool"))
12594 {
12595 return (void*)entry_vkCreateDescriptorPool;
12596 }
12597 if (!strcmp(name, "vkDestroyDescriptorPool"))
12598 {
12599 return (void*)entry_vkDestroyDescriptorPool;
12600 }
12601 if (!strcmp(name, "vkResetDescriptorPool"))
12602 {
12603 return (void*)entry_vkResetDescriptorPool;
12604 }
12605 if (!strcmp(name, "vkAllocateDescriptorSets"))
12606 {
12607 return (void*)entry_vkAllocateDescriptorSets;
12608 }
12609 if (!strcmp(name, "vkFreeDescriptorSets"))
12610 {
12611 return (void*)entry_vkFreeDescriptorSets;
12612 }
12613 if (!strcmp(name, "vkUpdateDescriptorSets"))
12614 {
12615 return (void*)entry_vkUpdateDescriptorSets;
12616 }
12617 if (!strcmp(name, "vkCreateFramebuffer"))
12618 {
12619 return (void*)entry_vkCreateFramebuffer;
12620 }
12621 if (!strcmp(name, "vkDestroyFramebuffer"))
12622 {
12623 return (void*)entry_vkDestroyFramebuffer;
12624 }
12625 if (!strcmp(name, "vkCreateRenderPass"))
12626 {
12627 return (void*)entry_vkCreateRenderPass;
12628 }
12629 if (!strcmp(name, "vkDestroyRenderPass"))
12630 {
12631 return (void*)entry_vkDestroyRenderPass;
12632 }
12633 if (!strcmp(name, "vkGetRenderAreaGranularity"))
12634 {
12635 return (void*)entry_vkGetRenderAreaGranularity;
12636 }
12637 if (!strcmp(name, "vkCreateCommandPool"))
12638 {
12639 return (void*)entry_vkCreateCommandPool;
12640 }
12641 if (!strcmp(name, "vkDestroyCommandPool"))
12642 {
12643 return (void*)entry_vkDestroyCommandPool;
12644 }
12645 if (!strcmp(name, "vkResetCommandPool"))
12646 {
12647 return (void*)entry_vkResetCommandPool;
12648 }
12649 if (!strcmp(name, "vkAllocateCommandBuffers"))
12650 {
12651 return (void*)entry_vkAllocateCommandBuffers;
12652 }
12653 if (!strcmp(name, "vkFreeCommandBuffers"))
12654 {
12655 return (void*)entry_vkFreeCommandBuffers;
12656 }
12657 if (!strcmp(name, "vkBeginCommandBuffer"))
12658 {
12659 return (void*)entry_vkBeginCommandBuffer;
12660 }
12661 if (!strcmp(name, "vkEndCommandBuffer"))
12662 {
12663 return (void*)entry_vkEndCommandBuffer;
12664 }
12665 if (!strcmp(name, "vkResetCommandBuffer"))
12666 {
12667 return (void*)entry_vkResetCommandBuffer;
12668 }
12669 if (!strcmp(name, "vkCmdBindPipeline"))
12670 {
12671 return (void*)entry_vkCmdBindPipeline;
12672 }
12673 if (!strcmp(name, "vkCmdSetViewport"))
12674 {
12675 return (void*)entry_vkCmdSetViewport;
12676 }
12677 if (!strcmp(name, "vkCmdSetScissor"))
12678 {
12679 return (void*)entry_vkCmdSetScissor;
12680 }
12681 if (!strcmp(name, "vkCmdSetLineWidth"))
12682 {
12683 return (void*)entry_vkCmdSetLineWidth;
12684 }
12685 if (!strcmp(name, "vkCmdSetDepthBias"))
12686 {
12687 return (void*)entry_vkCmdSetDepthBias;
12688 }
12689 if (!strcmp(name, "vkCmdSetBlendConstants"))
12690 {
12691 return (void*)entry_vkCmdSetBlendConstants;
12692 }
12693 if (!strcmp(name, "vkCmdSetDepthBounds"))
12694 {
12695 return (void*)entry_vkCmdSetDepthBounds;
12696 }
12697 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
12698 {
12699 return (void*)entry_vkCmdSetStencilCompareMask;
12700 }
12701 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
12702 {
12703 return (void*)entry_vkCmdSetStencilWriteMask;
12704 }
12705 if (!strcmp(name, "vkCmdSetStencilReference"))
12706 {
12707 return (void*)entry_vkCmdSetStencilReference;
12708 }
12709 if (!strcmp(name, "vkCmdBindDescriptorSets"))
12710 {
12711 return (void*)entry_vkCmdBindDescriptorSets;
12712 }
12713 if (!strcmp(name, "vkCmdBindIndexBuffer"))
12714 {
12715 return (void*)entry_vkCmdBindIndexBuffer;
12716 }
12717 if (!strcmp(name, "vkCmdBindVertexBuffers"))
12718 {
12719 return (void*)entry_vkCmdBindVertexBuffers;
12720 }
12721 if (!strcmp(name, "vkCmdDraw"))
12722 {
12723 return (void*)entry_vkCmdDraw;
12724 }
12725 if (!strcmp(name, "vkCmdDrawIndexed"))
12726 {
12727 return (void*)entry_vkCmdDrawIndexed;
12728 }
12729 if (!strcmp(name, "vkCmdDrawIndirect"))
12730 {
12731 return (void*)entry_vkCmdDrawIndirect;
12732 }
12733 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
12734 {
12735 return (void*)entry_vkCmdDrawIndexedIndirect;
12736 }
12737 if (!strcmp(name, "vkCmdDispatch"))
12738 {
12739 return (void*)entry_vkCmdDispatch;
12740 }
12741 if (!strcmp(name, "vkCmdDispatchIndirect"))
12742 {
12743 return (void*)entry_vkCmdDispatchIndirect;
12744 }
12745 if (!strcmp(name, "vkCmdCopyBuffer"))
12746 {
12747 return (void*)entry_vkCmdCopyBuffer;
12748 }
12749 if (!strcmp(name, "vkCmdCopyImage"))
12750 {
12751 return (void*)entry_vkCmdCopyImage;
12752 }
12753 if (!strcmp(name, "vkCmdBlitImage"))
12754 {
12755 return (void*)entry_vkCmdBlitImage;
12756 }
12757 if (!strcmp(name, "vkCmdCopyBufferToImage"))
12758 {
12759 return (void*)entry_vkCmdCopyBufferToImage;
12760 }
12761 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
12762 {
12763 return (void*)entry_vkCmdCopyImageToBuffer;
12764 }
12765 if (!strcmp(name, "vkCmdUpdateBuffer"))
12766 {
12767 return (void*)entry_vkCmdUpdateBuffer;
12768 }
12769 if (!strcmp(name, "vkCmdFillBuffer"))
12770 {
12771 return (void*)entry_vkCmdFillBuffer;
12772 }
12773 if (!strcmp(name, "vkCmdClearColorImage"))
12774 {
12775 return (void*)entry_vkCmdClearColorImage;
12776 }
12777 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
12778 {
12779 return (void*)entry_vkCmdClearDepthStencilImage;
12780 }
12781 if (!strcmp(name, "vkCmdClearAttachments"))
12782 {
12783 return (void*)entry_vkCmdClearAttachments;
12784 }
12785 if (!strcmp(name, "vkCmdResolveImage"))
12786 {
12787 return (void*)entry_vkCmdResolveImage;
12788 }
12789 if (!strcmp(name, "vkCmdSetEvent"))
12790 {
12791 return (void*)entry_vkCmdSetEvent;
12792 }
12793 if (!strcmp(name, "vkCmdResetEvent"))
12794 {
12795 return (void*)entry_vkCmdResetEvent;
12796 }
12797 if (!strcmp(name, "vkCmdWaitEvents"))
12798 {
12799 return (void*)entry_vkCmdWaitEvents;
12800 }
12801 if (!strcmp(name, "vkCmdPipelineBarrier"))
12802 {
12803 return (void*)entry_vkCmdPipelineBarrier;
12804 }
12805 if (!strcmp(name, "vkCmdBeginQuery"))
12806 {
12807 return (void*)entry_vkCmdBeginQuery;
12808 }
12809 if (!strcmp(name, "vkCmdEndQuery"))
12810 {
12811 return (void*)entry_vkCmdEndQuery;
12812 }
12813 if (!strcmp(name, "vkCmdResetQueryPool"))
12814 {
12815 return (void*)entry_vkCmdResetQueryPool;
12816 }
12817 if (!strcmp(name, "vkCmdWriteTimestamp"))
12818 {
12819 return (void*)entry_vkCmdWriteTimestamp;
12820 }
12821 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
12822 {
12823 return (void*)entry_vkCmdCopyQueryPoolResults;
12824 }
12825 if (!strcmp(name, "vkCmdPushConstants"))
12826 {
12827 return (void*)entry_vkCmdPushConstants;
12828 }
12829 if (!strcmp(name, "vkCmdBeginRenderPass"))
12830 {
12831 return (void*)entry_vkCmdBeginRenderPass;
12832 }
12833 if (!strcmp(name, "vkCmdNextSubpass"))
12834 {
12835 return (void*)entry_vkCmdNextSubpass;
12836 }
12837 if (!strcmp(name, "vkCmdEndRenderPass"))
12838 {
12839 return (void*)entry_vkCmdEndRenderPass;
12840 }
12841 if (!strcmp(name, "vkCmdExecuteCommands"))
12842 {
12843 return (void*)entry_vkCmdExecuteCommands;
12844 }
12845#endif
12846#ifdef VK_VERSION_1_1
12847 if (!strcmp(name, "vkEnumerateInstanceVersion"))
12848 {
12849 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
12850 }
12851 if (!strcmp(name, "vkBindBufferMemory2"))
12852 {
12853 return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
12854 }
12855 if (!strcmp(name, "vkBindImageMemory2"))
12856 {
12857 return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
12858 }
12859 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
12860 {
12861 return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
12862 }
12863 if (!strcmp(name, "vkCmdSetDeviceMask"))
12864 {
12865 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
12866 }
12867 if (!strcmp(name, "vkCmdDispatchBase"))
12868 {
12869 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
12870 }
12871 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
12872 {
12873 return nullptr;
12874 }
12875 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
12876 {
12877 return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
12878 }
12879 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
12880 {
12881 return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
12882 }
12883 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
12884 {
12885 return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
12886 }
12887 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
12888 {
12889 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
12890 }
12891 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
12892 {
12893 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
12894 }
12895 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
12896 {
12897 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
12898 }
12899 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
12900 {
12901 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
12902 }
12903 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
12904 {
12905 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
12906 }
12907 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
12908 {
12909 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
12910 }
12911 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
12912 {
12913 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
12914 }
12915 if (!strcmp(name, "vkTrimCommandPool"))
12916 {
12917 return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
12918 }
12919 if (!strcmp(name, "vkGetDeviceQueue2"))
12920 {
12921 return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
12922 }
12923 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
12924 {
12925 return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
12926 }
12927 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
12928 {
12929 return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
12930 }
12931 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
12932 {
12933 return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
12934 }
12935 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
12936 {
12937 return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
12938 }
12939 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
12940 {
12941 return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
12942 }
12943 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
12944 {
12945 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
12946 }
12947 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
12948 {
12949 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
12950 }
12951 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
12952 {
12953 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
12954 }
12955 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
12956 {
12957 return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
12958 }
12959#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012960#ifdef VK_VERSION_1_2
12961 if (!strcmp(name, "vkCmdDrawIndirectCount"))
12962 {
12963 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12964 return hasExt ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
12965 }
12966 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
12967 {
12968 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12969 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
12970 }
12971 if (!strcmp(name, "vkCreateRenderPass2"))
12972 {
12973 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12974 return hasExt ? (void*)entry_vkCreateRenderPass2 : nullptr;
12975 }
12976 if (!strcmp(name, "vkCmdBeginRenderPass2"))
12977 {
12978 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12979 return hasExt ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
12980 }
12981 if (!strcmp(name, "vkCmdNextSubpass2"))
12982 {
12983 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12984 return hasExt ? (void*)entry_vkCmdNextSubpass2 : nullptr;
12985 }
12986 if (!strcmp(name, "vkCmdEndRenderPass2"))
12987 {
12988 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12989 return hasExt ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
12990 }
12991 if (!strcmp(name, "vkResetQueryPool"))
12992 {
12993 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12994 return hasExt ? (void*)entry_vkResetQueryPool : nullptr;
12995 }
12996 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
12997 {
12998 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12999 return hasExt ? (void*)entry_vkGetSemaphoreCounterValue : nullptr;
13000 }
13001 if (!strcmp(name, "vkWaitSemaphores"))
13002 {
13003 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13004 return hasExt ? (void*)entry_vkWaitSemaphores : nullptr;
13005 }
13006 if (!strcmp(name, "vkSignalSemaphore"))
13007 {
13008 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13009 return hasExt ? (void*)entry_vkSignalSemaphore : nullptr;
13010 }
13011 if (!strcmp(name, "vkGetBufferDeviceAddress"))
13012 {
13013 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13014 return hasExt ? (void*)entry_vkGetBufferDeviceAddress : nullptr;
13015 }
13016 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
13017 {
13018 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13019 return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddress : nullptr;
13020 }
13021 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
13022 {
13023 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13024 return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddress : nullptr;
13025 }
13026#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013027#ifdef VK_KHR_surface
13028 if (!strcmp(name, "vkDestroySurfaceKHR"))
13029 {
13030 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13031 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
13032 }
13033 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
13034 {
13035 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13036 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
13037 }
13038 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
13039 {
13040 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13041 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
13042 }
13043 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
13044 {
13045 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13046 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
13047 }
13048 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
13049 {
13050 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13051 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
13052 }
13053#endif
13054#ifdef VK_KHR_swapchain
13055 if (!strcmp(name, "vkCreateSwapchainKHR"))
13056 {
13057 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13058 return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
13059 }
13060 if (!strcmp(name, "vkDestroySwapchainKHR"))
13061 {
13062 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13063 return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
13064 }
13065 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
13066 {
13067 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13068 return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
13069 }
13070 if (!strcmp(name, "vkAcquireNextImageKHR"))
13071 {
13072 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13073 return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
13074 }
13075 if (!strcmp(name, "vkQueuePresentKHR"))
13076 {
13077 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13078 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
13079 }
13080 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
13081 {
13082 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13083 return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
13084 }
13085 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
13086 {
13087 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13088 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
13089 }
13090 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
13091 {
13092 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13093 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
13094 }
13095 if (!strcmp(name, "vkAcquireNextImage2KHR"))
13096 {
13097 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13098 return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
13099 }
13100#endif
13101#ifdef VK_KHR_display
13102 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
13103 {
13104 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13105 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
13106 }
13107 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
13108 {
13109 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13110 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
13111 }
13112 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
13113 {
13114 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13115 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
13116 }
13117 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
13118 {
13119 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13120 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
13121 }
13122 if (!strcmp(name, "vkCreateDisplayModeKHR"))
13123 {
13124 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13125 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
13126 }
13127 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
13128 {
13129 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13130 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
13131 }
13132 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
13133 {
13134 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13135 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
13136 }
13137#endif
13138#ifdef VK_KHR_display_swapchain
13139 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
13140 {
13141 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
13142 return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
13143 }
13144#endif
13145#ifdef VK_KHR_xlib_surface
13146 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
13147 {
13148 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
13149 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
13150 }
13151 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
13152 {
13153 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
13154 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
13155 }
13156#endif
13157#ifdef VK_KHR_xcb_surface
13158 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
13159 {
13160 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
13161 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
13162 }
13163 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
13164 {
13165 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
13166 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
13167 }
13168#endif
13169#ifdef VK_KHR_wayland_surface
13170 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
13171 {
13172 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
13173 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
13174 }
13175 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
13176 {
13177 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
13178 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
13179 }
13180#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013181#ifdef VK_KHR_android_surface
13182 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
13183 {
13184 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
13185 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
13186 }
13187#endif
13188#ifdef VK_KHR_win32_surface
13189 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
13190 {
13191 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
13192 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
13193 }
13194 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
13195 {
13196 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
13197 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
13198 }
13199#endif
13200#ifdef VK_KHR_get_physical_device_properties2
13201 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
13202 {
13203 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13204 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
13205 }
13206 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
13207 {
13208 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13209 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
13210 }
13211 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
13212 {
13213 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13214 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
13215 }
13216 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
13217 {
13218 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13219 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
13220 }
13221 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
13222 {
13223 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13224 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
13225 }
13226 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
13227 {
13228 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13229 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
13230 }
13231 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
13232 {
13233 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13234 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
13235 }
13236#endif
13237#ifdef VK_KHR_device_group
13238 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
13239 {
13240 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
13241 return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
13242 }
13243 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
13244 {
13245 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
13246 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
13247 }
13248 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
13249 {
13250 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
13251 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
13252 }
13253#endif
13254#ifdef VK_KHR_maintenance1
13255 if (!strcmp(name, "vkTrimCommandPoolKHR"))
13256 {
13257 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
13258 return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
13259 }
13260#endif
13261#ifdef VK_KHR_device_group_creation
13262 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
13263 {
13264 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
13265 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
13266 }
13267#endif
13268#ifdef VK_KHR_external_memory_capabilities
13269 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
13270 {
13271 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
13272 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
13273 }
13274#endif
13275#ifdef VK_KHR_external_memory_win32
13276 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
13277 {
13278 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
13279 return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
13280 }
13281 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
13282 {
13283 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
13284 return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
13285 }
13286#endif
13287#ifdef VK_KHR_external_memory_fd
13288 if (!strcmp(name, "vkGetMemoryFdKHR"))
13289 {
13290 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
13291 return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
13292 }
13293 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
13294 {
13295 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
13296 return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
13297 }
13298#endif
13299#ifdef VK_KHR_external_semaphore_capabilities
13300 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
13301 {
13302 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
13303 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
13304 }
13305#endif
13306#ifdef VK_KHR_external_semaphore_win32
13307 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
13308 {
13309 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
13310 return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
13311 }
13312 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
13313 {
13314 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
13315 return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
13316 }
13317#endif
13318#ifdef VK_KHR_external_semaphore_fd
13319 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
13320 {
13321 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
13322 return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
13323 }
13324 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
13325 {
13326 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
13327 return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
13328 }
13329#endif
13330#ifdef VK_KHR_push_descriptor
13331 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
13332 {
13333 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
13334 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
13335 }
13336 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
13337 {
13338 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
13339 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
13340 }
13341#endif
13342#ifdef VK_KHR_descriptor_update_template
13343 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
13344 {
13345 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
13346 return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
13347 }
13348 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
13349 {
13350 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
13351 return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
13352 }
13353 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
13354 {
13355 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
13356 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
13357 }
13358#endif
13359#ifdef VK_KHR_create_renderpass2
13360 if (!strcmp(name, "vkCreateRenderPass2KHR"))
13361 {
13362 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13363 return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
13364 }
13365 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
13366 {
13367 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13368 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
13369 }
13370 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
13371 {
13372 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13373 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
13374 }
13375 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
13376 {
13377 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13378 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
13379 }
13380#endif
13381#ifdef VK_KHR_shared_presentable_image
13382 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
13383 {
13384 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
13385 return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
13386 }
13387#endif
13388#ifdef VK_KHR_external_fence_capabilities
13389 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
13390 {
13391 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
13392 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
13393 }
13394#endif
13395#ifdef VK_KHR_external_fence_win32
13396 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
13397 {
13398 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
13399 return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
13400 }
13401 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
13402 {
13403 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
13404 return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
13405 }
13406#endif
13407#ifdef VK_KHR_external_fence_fd
13408 if (!strcmp(name, "vkImportFenceFdKHR"))
13409 {
13410 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
13411 return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
13412 }
13413 if (!strcmp(name, "vkGetFenceFdKHR"))
13414 {
13415 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
13416 return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
13417 }
13418#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013419#ifdef VK_KHR_performance_query
13420 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
13421 {
13422 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13423 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
13424 }
13425 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
13426 {
13427 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13428 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
13429 }
13430 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
13431 {
13432 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13433 return hasExt ? (void*)entry_vkAcquireProfilingLockKHR : nullptr;
13434 }
13435 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
13436 {
13437 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13438 return hasExt ? (void*)entry_vkReleaseProfilingLockKHR : nullptr;
13439 }
13440#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013441#ifdef VK_KHR_get_surface_capabilities2
13442 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
13443 {
13444 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
13445 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
13446 }
13447 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
13448 {
13449 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
13450 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
13451 }
13452#endif
13453#ifdef VK_KHR_get_display_properties2
13454 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
13455 {
13456 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13457 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
13458 }
13459 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
13460 {
13461 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13462 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
13463 }
13464 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
13465 {
13466 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13467 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
13468 }
13469 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
13470 {
13471 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13472 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
13473 }
13474#endif
13475#ifdef VK_KHR_get_memory_requirements2
13476 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
13477 {
13478 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
13479 return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
13480 }
13481 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
13482 {
13483 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
13484 return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
13485 }
13486 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
13487 {
13488 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
13489 return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
13490 }
13491#endif
13492#ifdef VK_KHR_sampler_ycbcr_conversion
13493 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
13494 {
13495 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
13496 return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
13497 }
13498 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
13499 {
13500 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
13501 return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
13502 }
13503#endif
13504#ifdef VK_KHR_bind_memory2
13505 if (!strcmp(name, "vkBindBufferMemory2KHR"))
13506 {
13507 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
13508 return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
13509 }
13510 if (!strcmp(name, "vkBindImageMemory2KHR"))
13511 {
13512 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
13513 return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
13514 }
13515#endif
13516#ifdef VK_KHR_maintenance3
13517 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
13518 {
13519 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
13520 return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
13521 }
13522#endif
13523#ifdef VK_KHR_draw_indirect_count
13524 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
13525 {
13526 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
13527 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
13528 }
13529 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
13530 {
13531 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
13532 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
13533 }
13534#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013535#ifdef VK_KHR_timeline_semaphore
13536 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
13537 {
13538 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
13539 return hasExt ? (void*)entry_vkGetSemaphoreCounterValueKHR : nullptr;
13540 }
13541 if (!strcmp(name, "vkWaitSemaphoresKHR"))
13542 {
13543 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
13544 return hasExt ? (void*)entry_vkWaitSemaphoresKHR : nullptr;
13545 }
13546 if (!strcmp(name, "vkSignalSemaphoreKHR"))
13547 {
13548 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
13549 return hasExt ? (void*)entry_vkSignalSemaphoreKHR : nullptr;
13550 }
13551#endif
13552#ifdef VK_KHR_fragment_shading_rate
13553 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
13554 {
13555 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
13556 return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
13557 }
13558 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
13559 {
13560 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
13561 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateKHR : nullptr;
13562 }
13563#endif
13564#ifdef VK_KHR_buffer_device_address
13565 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
13566 {
13567 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
13568 return hasExt ? (void*)entry_vkGetBufferDeviceAddressKHR : nullptr;
13569 }
13570 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
13571 {
13572 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
13573 return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddressKHR : nullptr;
13574 }
13575 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
13576 {
13577 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
13578 return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR : nullptr;
13579 }
13580#endif
13581#ifdef VK_KHR_deferred_host_operations
13582 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
13583 {
13584 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13585 return hasExt ? (void*)entry_vkCreateDeferredOperationKHR : nullptr;
13586 }
13587 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
13588 {
13589 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13590 return hasExt ? (void*)entry_vkDestroyDeferredOperationKHR : nullptr;
13591 }
13592 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
13593 {
13594 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13595 return hasExt ? (void*)entry_vkGetDeferredOperationMaxConcurrencyKHR : nullptr;
13596 }
13597 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
13598 {
13599 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13600 return hasExt ? (void*)entry_vkGetDeferredOperationResultKHR : nullptr;
13601 }
13602 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
13603 {
13604 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13605 return hasExt ? (void*)entry_vkDeferredOperationJoinKHR : nullptr;
13606 }
13607#endif
13608#ifdef VK_KHR_pipeline_executable_properties
13609 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
13610 {
13611 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
13612 return hasExt ? (void*)entry_vkGetPipelineExecutablePropertiesKHR : nullptr;
13613 }
13614 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
13615 {
13616 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
13617 return hasExt ? (void*)entry_vkGetPipelineExecutableStatisticsKHR : nullptr;
13618 }
13619 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
13620 {
13621 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
13622 return hasExt ? (void*)entry_vkGetPipelineExecutableInternalRepresentationsKHR : nullptr;
13623 }
13624#endif
13625#ifdef VK_KHR_copy_commands2
13626 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
13627 {
13628 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13629 return hasExt ? (void*)entry_vkCmdCopyBuffer2KHR : nullptr;
13630 }
13631 if (!strcmp(name, "vkCmdCopyImage2KHR"))
13632 {
13633 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13634 return hasExt ? (void*)entry_vkCmdCopyImage2KHR : nullptr;
13635 }
13636 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
13637 {
13638 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13639 return hasExt ? (void*)entry_vkCmdCopyBufferToImage2KHR : nullptr;
13640 }
13641 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
13642 {
13643 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13644 return hasExt ? (void*)entry_vkCmdCopyImageToBuffer2KHR : nullptr;
13645 }
13646 if (!strcmp(name, "vkCmdBlitImage2KHR"))
13647 {
13648 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13649 return hasExt ? (void*)entry_vkCmdBlitImage2KHR : nullptr;
13650 }
13651 if (!strcmp(name, "vkCmdResolveImage2KHR"))
13652 {
13653 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13654 return hasExt ? (void*)entry_vkCmdResolveImage2KHR : nullptr;
13655 }
13656#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013657#ifdef VK_ANDROID_native_buffer
13658 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
13659 {
13660 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
13661 return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
13662 }
13663 if (!strcmp(name, "vkAcquireImageANDROID"))
13664 {
13665 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
13666 return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
13667 }
13668 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
13669 {
13670 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
13671 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
13672 }
13673#endif
13674#ifdef VK_EXT_debug_report
13675 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
13676 {
13677 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
13678 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
13679 }
13680 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
13681 {
13682 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
13683 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
13684 }
13685 if (!strcmp(name, "vkDebugReportMessageEXT"))
13686 {
13687 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
13688 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
13689 }
13690#endif
13691#ifdef VK_EXT_debug_marker
13692 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
13693 {
13694 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13695 return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
13696 }
13697 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
13698 {
13699 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13700 return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
13701 }
13702 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
13703 {
13704 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13705 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
13706 }
13707 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
13708 {
13709 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13710 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
13711 }
13712 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
13713 {
13714 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13715 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
13716 }
13717#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013718#ifdef VK_EXT_transform_feedback
13719 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
13720 {
13721 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13722 return hasExt ? (void*)entry_vkCmdBindTransformFeedbackBuffersEXT : nullptr;
13723 }
13724 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
13725 {
13726 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13727 return hasExt ? (void*)entry_vkCmdBeginTransformFeedbackEXT : nullptr;
13728 }
13729 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
13730 {
13731 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13732 return hasExt ? (void*)entry_vkCmdEndTransformFeedbackEXT : nullptr;
13733 }
13734 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
13735 {
13736 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13737 return hasExt ? (void*)entry_vkCmdBeginQueryIndexedEXT : nullptr;
13738 }
13739 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
13740 {
13741 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13742 return hasExt ? (void*)entry_vkCmdEndQueryIndexedEXT : nullptr;
13743 }
13744 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
13745 {
13746 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13747 return hasExt ? (void*)entry_vkCmdDrawIndirectByteCountEXT : nullptr;
13748 }
13749#endif
13750#ifdef VK_NVX_image_view_handle
13751 if (!strcmp(name, "vkGetImageViewHandleNVX"))
13752 {
13753 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
13754 return hasExt ? (void*)entry_vkGetImageViewHandleNVX : nullptr;
13755 }
13756 if (!strcmp(name, "vkGetImageViewAddressNVX"))
13757 {
13758 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
13759 return hasExt ? (void*)entry_vkGetImageViewAddressNVX : nullptr;
13760 }
13761#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013762#ifdef VK_AMD_draw_indirect_count
13763 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
13764 {
13765 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
13766 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
13767 }
13768 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
13769 {
13770 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
13771 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
13772 }
13773#endif
13774#ifdef VK_AMD_shader_info
13775 if (!strcmp(name, "vkGetShaderInfoAMD"))
13776 {
13777 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
13778 return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
13779 }
13780#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013781#ifdef VK_GGP_stream_descriptor_surface
13782 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
13783 {
13784 bool hasExt = resources->hasDeviceExtension(device, "VK_GGP_stream_descriptor_surface");
13785 return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
13786 }
13787#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013788#ifdef VK_NV_external_memory_capabilities
13789 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
13790 {
13791 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
13792 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
13793 }
13794#endif
13795#ifdef VK_NV_external_memory_win32
13796 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
13797 {
13798 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
13799 return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
13800 }
13801#endif
13802#ifdef VK_NN_vi_surface
13803 if (!strcmp(name, "vkCreateViSurfaceNN"))
13804 {
13805 bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
13806 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
13807 }
13808#endif
13809#ifdef VK_EXT_conditional_rendering
13810 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
13811 {
13812 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
13813 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
13814 }
13815 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
13816 {
13817 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
13818 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
13819 }
13820#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013821#ifdef VK_NV_clip_space_w_scaling
13822 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
13823 {
13824 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
13825 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
13826 }
13827#endif
13828#ifdef VK_EXT_direct_mode_display
13829 if (!strcmp(name, "vkReleaseDisplayEXT"))
13830 {
13831 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
13832 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
13833 }
13834#endif
13835#ifdef VK_EXT_acquire_xlib_display
13836 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
13837 {
13838 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
13839 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
13840 }
13841 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
13842 {
13843 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
13844 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
13845 }
13846#endif
13847#ifdef VK_EXT_display_surface_counter
13848 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
13849 {
13850 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
13851 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
13852 }
13853#endif
13854#ifdef VK_EXT_display_control
13855 if (!strcmp(name, "vkDisplayPowerControlEXT"))
13856 {
13857 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13858 return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
13859 }
13860 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
13861 {
13862 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13863 return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
13864 }
13865 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
13866 {
13867 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13868 return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
13869 }
13870 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
13871 {
13872 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13873 return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
13874 }
13875#endif
13876#ifdef VK_GOOGLE_display_timing
13877 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
13878 {
13879 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
13880 return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
13881 }
13882 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
13883 {
13884 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
13885 return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
13886 }
13887#endif
13888#ifdef VK_EXT_discard_rectangles
13889 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
13890 {
13891 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
13892 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
13893 }
13894#endif
13895#ifdef VK_EXT_hdr_metadata
13896 if (!strcmp(name, "vkSetHdrMetadataEXT"))
13897 {
13898 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
13899 return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
13900 }
13901#endif
13902#ifdef VK_MVK_ios_surface
13903 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
13904 {
13905 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
13906 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
13907 }
13908#endif
13909#ifdef VK_MVK_macos_surface
13910 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
13911 {
13912 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
13913 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
13914 }
13915#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013916#ifdef VK_MVK_moltenvk
13917 if (!strcmp(name, "vkGetMTLDeviceMVK"))
13918 {
13919 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13920 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
13921 }
13922 if (!strcmp(name, "vkSetMTLTextureMVK"))
13923 {
13924 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13925 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
13926 }
13927 if (!strcmp(name, "vkGetMTLTextureMVK"))
13928 {
13929 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13930 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
13931 }
13932 if (!strcmp(name, "vkGetMTLBufferMVK"))
13933 {
13934 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13935 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
13936 }
13937 if (!strcmp(name, "vkUseIOSurfaceMVK"))
13938 {
13939 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13940 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
13941 }
13942 if (!strcmp(name, "vkGetIOSurfaceMVK"))
13943 {
13944 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13945 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
13946 }
13947#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013948#ifdef VK_EXT_debug_utils
13949 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
13950 {
13951 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13952 return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
13953 }
13954 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
13955 {
13956 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13957 return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
13958 }
13959 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
13960 {
13961 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13962 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
13963 }
13964 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
13965 {
13966 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13967 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
13968 }
13969 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
13970 {
13971 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13972 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
13973 }
13974 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
13975 {
13976 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13977 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
13978 }
13979 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
13980 {
13981 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13982 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
13983 }
13984 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
13985 {
13986 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13987 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
13988 }
13989 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
13990 {
13991 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13992 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
13993 }
13994 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
13995 {
13996 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13997 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
13998 }
13999 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
14000 {
14001 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
14002 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
14003 }
14004#endif
14005#ifdef VK_ANDROID_external_memory_android_hardware_buffer
14006 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
14007 {
14008 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
14009 return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
14010 }
14011 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
14012 {
14013 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
14014 return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
14015 }
14016#endif
14017#ifdef VK_EXT_sample_locations
14018 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
14019 {
14020 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
14021 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
14022 }
14023 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
14024 {
14025 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
14026 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
14027 }
14028#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014029#ifdef VK_EXT_image_drm_format_modifier
14030 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
14031 {
14032 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier");
14033 return hasExt ? (void*)entry_vkGetImageDrmFormatModifierPropertiesEXT : nullptr;
14034 }
14035#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014036#ifdef VK_EXT_validation_cache
14037 if (!strcmp(name, "vkCreateValidationCacheEXT"))
14038 {
14039 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14040 return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
14041 }
14042 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
14043 {
14044 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14045 return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
14046 }
14047 if (!strcmp(name, "vkMergeValidationCachesEXT"))
14048 {
14049 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14050 return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
14051 }
14052 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
14053 {
14054 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14055 return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
14056 }
14057#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014058#ifdef VK_NV_shading_rate_image
14059 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
14060 {
14061 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
14062 return hasExt ? (void*)entry_vkCmdBindShadingRateImageNV : nullptr;
14063 }
14064 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
14065 {
14066 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
14067 return hasExt ? (void*)entry_vkCmdSetViewportShadingRatePaletteNV : nullptr;
14068 }
14069 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
14070 {
14071 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
14072 return hasExt ? (void*)entry_vkCmdSetCoarseSampleOrderNV : nullptr;
14073 }
14074#endif
14075#ifdef VK_NV_ray_tracing
14076 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
14077 {
14078 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14079 return hasExt ? (void*)entry_vkCreateAccelerationStructureNV : nullptr;
14080 }
14081 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
14082 {
14083 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14084 return hasExt ? (void*)entry_vkDestroyAccelerationStructureNV : nullptr;
14085 }
14086 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
14087 {
14088 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14089 return hasExt ? (void*)entry_vkGetAccelerationStructureMemoryRequirementsNV : nullptr;
14090 }
14091 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
14092 {
14093 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14094 return hasExt ? (void*)entry_vkBindAccelerationStructureMemoryNV : nullptr;
14095 }
14096 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
14097 {
14098 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14099 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructureNV : nullptr;
14100 }
14101 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
14102 {
14103 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14104 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureNV : nullptr;
14105 }
14106 if (!strcmp(name, "vkCmdTraceRaysNV"))
14107 {
14108 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14109 return hasExt ? (void*)entry_vkCmdTraceRaysNV : nullptr;
14110 }
14111 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
14112 {
14113 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14114 return hasExt ? (void*)entry_vkCreateRayTracingPipelinesNV : nullptr;
14115 }
14116 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
14117 {
14118 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14119 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesKHR : nullptr;
14120 }
14121 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
14122 {
14123 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14124 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesNV : nullptr;
14125 }
14126 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
14127 {
14128 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14129 return hasExt ? (void*)entry_vkGetAccelerationStructureHandleNV : nullptr;
14130 }
14131 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
14132 {
14133 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14134 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesNV : nullptr;
14135 }
14136 if (!strcmp(name, "vkCompileDeferredNV"))
14137 {
14138 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14139 return hasExt ? (void*)entry_vkCompileDeferredNV : nullptr;
14140 }
14141#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014142#ifdef VK_EXT_external_memory_host
14143 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
14144 {
14145 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
14146 return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
14147 }
14148#endif
14149#ifdef VK_AMD_buffer_marker
14150 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
14151 {
14152 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
14153 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
14154 }
14155#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014156#ifdef VK_EXT_calibrated_timestamps
14157 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
14158 {
14159 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
14160 return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
14161 }
14162 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
14163 {
14164 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
14165 return hasExt ? (void*)entry_vkGetCalibratedTimestampsEXT : nullptr;
14166 }
14167#endif
14168#ifdef VK_NV_mesh_shader
14169 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
14170 {
14171 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
14172 return hasExt ? (void*)entry_vkCmdDrawMeshTasksNV : nullptr;
14173 }
14174 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
14175 {
14176 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
14177 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectNV : nullptr;
14178 }
14179 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
14180 {
14181 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
14182 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountNV : nullptr;
14183 }
14184#endif
14185#ifdef VK_NV_scissor_exclusive
14186 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
14187 {
14188 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_scissor_exclusive");
14189 return hasExt ? (void*)entry_vkCmdSetExclusiveScissorNV : nullptr;
14190 }
14191#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014192#ifdef VK_NV_device_diagnostic_checkpoints
14193 if (!strcmp(name, "vkCmdSetCheckpointNV"))
14194 {
14195 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
14196 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
14197 }
14198 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
14199 {
14200 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
14201 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
14202 }
14203#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014204#ifdef VK_INTEL_performance_query
14205 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014206 {
Yilong Lia8d45f12021-02-07 02:30:21 -080014207 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14208 return hasExt ? (void*)entry_vkInitializePerformanceApiINTEL : nullptr;
14209 }
14210 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
14211 {
14212 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14213 return hasExt ? (void*)entry_vkUninitializePerformanceApiINTEL : nullptr;
14214 }
14215 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
14216 {
14217 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14218 return hasExt ? (void*)entry_vkCmdSetPerformanceMarkerINTEL : nullptr;
14219 }
14220 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
14221 {
14222 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14223 return hasExt ? (void*)entry_vkCmdSetPerformanceStreamMarkerINTEL : nullptr;
14224 }
14225 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
14226 {
14227 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14228 return hasExt ? (void*)entry_vkCmdSetPerformanceOverrideINTEL : nullptr;
14229 }
14230 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
14231 {
14232 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14233 return hasExt ? (void*)entry_vkAcquirePerformanceConfigurationINTEL : nullptr;
14234 }
14235 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
14236 {
14237 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14238 return hasExt ? (void*)entry_vkReleasePerformanceConfigurationINTEL : nullptr;
14239 }
14240 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
14241 {
14242 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14243 return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
14244 }
14245 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
14246 {
14247 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14248 return hasExt ? (void*)entry_vkGetPerformanceParameterINTEL : nullptr;
14249 }
14250#endif
14251#ifdef VK_AMD_display_native_hdr
14252 if (!strcmp(name, "vkSetLocalDimmingAMD"))
14253 {
14254 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr");
14255 return hasExt ? (void*)entry_vkSetLocalDimmingAMD : nullptr;
14256 }
14257#endif
14258#ifdef VK_FUCHSIA_imagepipe_surface
14259 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
14260 {
14261 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_imagepipe_surface");
14262 return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
14263 }
14264#endif
14265#ifdef VK_EXT_metal_surface
14266 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
14267 {
14268 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_metal_surface");
14269 return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080014270 }
14271#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080014272#ifdef VK_GOOGLE_color_buffer
14273 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
14274 {
14275 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
14276 return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
14277 }
14278 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
14279 {
14280 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
14281 return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
14282 }
14283#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014284#ifdef VK_EXT_buffer_device_address
14285 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
14286 {
14287 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address");
14288 return hasExt ? (void*)entry_vkGetBufferDeviceAddressEXT : nullptr;
14289 }
14290#endif
14291#ifdef VK_EXT_tooling_info
14292 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
14293 {
14294 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_tooling_info");
14295 return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
14296 }
14297#endif
14298#ifdef VK_NV_cooperative_matrix
14299 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
14300 {
14301 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_cooperative_matrix");
14302 return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
14303 }
14304#endif
14305#ifdef VK_NV_coverage_reduction_mode
14306 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
14307 {
14308 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_coverage_reduction_mode");
14309 return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
14310 }
14311#endif
14312#ifdef VK_EXT_full_screen_exclusive
14313 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
14314 {
14315 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14316 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
14317 }
14318 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
14319 {
14320 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14321 return hasExt ? (void*)entry_vkAcquireFullScreenExclusiveModeEXT : nullptr;
14322 }
14323 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
14324 {
14325 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14326 return hasExt ? (void*)entry_vkReleaseFullScreenExclusiveModeEXT : nullptr;
14327 }
14328 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
14329 {
14330 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14331 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModes2EXT : nullptr;
14332 }
14333#endif
14334#ifdef VK_EXT_headless_surface
14335 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
14336 {
14337 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_headless_surface");
14338 return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
14339 }
14340#endif
14341#ifdef VK_EXT_line_rasterization
14342 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
14343 {
14344 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_line_rasterization");
14345 return hasExt ? (void*)entry_vkCmdSetLineStippleEXT : nullptr;
14346 }
14347#endif
14348#ifdef VK_EXT_host_query_reset
14349 if (!strcmp(name, "vkResetQueryPoolEXT"))
14350 {
14351 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_host_query_reset");
14352 return hasExt ? (void*)entry_vkResetQueryPoolEXT : nullptr;
14353 }
14354#endif
14355#ifdef VK_EXT_extended_dynamic_state
14356 if (!strcmp(name, "vkCmdSetCullModeEXT"))
14357 {
14358 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14359 return hasExt ? (void*)entry_vkCmdSetCullModeEXT : nullptr;
14360 }
14361 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
14362 {
14363 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14364 return hasExt ? (void*)entry_vkCmdSetFrontFaceEXT : nullptr;
14365 }
14366 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
14367 {
14368 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14369 return hasExt ? (void*)entry_vkCmdSetPrimitiveTopologyEXT : nullptr;
14370 }
14371 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
14372 {
14373 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14374 return hasExt ? (void*)entry_vkCmdSetViewportWithCountEXT : nullptr;
14375 }
14376 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
14377 {
14378 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14379 return hasExt ? (void*)entry_vkCmdSetScissorWithCountEXT : nullptr;
14380 }
14381 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
14382 {
14383 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14384 return hasExt ? (void*)entry_vkCmdBindVertexBuffers2EXT : nullptr;
14385 }
14386 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
14387 {
14388 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14389 return hasExt ? (void*)entry_vkCmdSetDepthTestEnableEXT : nullptr;
14390 }
14391 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
14392 {
14393 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14394 return hasExt ? (void*)entry_vkCmdSetDepthWriteEnableEXT : nullptr;
14395 }
14396 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
14397 {
14398 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14399 return hasExt ? (void*)entry_vkCmdSetDepthCompareOpEXT : nullptr;
14400 }
14401 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
14402 {
14403 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14404 return hasExt ? (void*)entry_vkCmdSetDepthBoundsTestEnableEXT : nullptr;
14405 }
14406 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
14407 {
14408 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14409 return hasExt ? (void*)entry_vkCmdSetStencilTestEnableEXT : nullptr;
14410 }
14411 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
14412 {
14413 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14414 return hasExt ? (void*)entry_vkCmdSetStencilOpEXT : nullptr;
14415 }
14416#endif
14417#ifdef VK_NV_device_generated_commands
14418 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
14419 {
14420 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14421 return hasExt ? (void*)entry_vkGetGeneratedCommandsMemoryRequirementsNV : nullptr;
14422 }
14423 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
14424 {
14425 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14426 return hasExt ? (void*)entry_vkCmdPreprocessGeneratedCommandsNV : nullptr;
14427 }
14428 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
14429 {
14430 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14431 return hasExt ? (void*)entry_vkCmdExecuteGeneratedCommandsNV : nullptr;
14432 }
14433 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
14434 {
14435 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14436 return hasExt ? (void*)entry_vkCmdBindPipelineShaderGroupNV : nullptr;
14437 }
14438 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
14439 {
14440 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14441 return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNV : nullptr;
14442 }
14443 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
14444 {
14445 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14446 return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNV : nullptr;
14447 }
14448#endif
14449#ifdef VK_EXT_private_data
14450 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
14451 {
14452 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14453 return hasExt ? (void*)entry_vkCreatePrivateDataSlotEXT : nullptr;
14454 }
14455 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
14456 {
14457 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14458 return hasExt ? (void*)entry_vkDestroyPrivateDataSlotEXT : nullptr;
14459 }
14460 if (!strcmp(name, "vkSetPrivateDataEXT"))
14461 {
14462 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14463 return hasExt ? (void*)entry_vkSetPrivateDataEXT : nullptr;
14464 }
14465 if (!strcmp(name, "vkGetPrivateDataEXT"))
14466 {
14467 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14468 return hasExt ? (void*)entry_vkGetPrivateDataEXT : nullptr;
14469 }
14470#endif
14471#ifdef VK_NV_fragment_shading_rate_enums
14472 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
14473 {
14474 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_fragment_shading_rate_enums");
14475 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateEnumNV : nullptr;
14476 }
14477#endif
14478#ifdef VK_EXT_directfb_surface
14479 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
14480 {
14481 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
14482 return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
14483 }
14484 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
14485 {
14486 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
14487 return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
14488 }
14489#endif
Yilong Li71c43c52021-02-10 02:50:43 -080014490#ifdef VK_GOOGLE_gfxstream
Yilong Lia8d45f12021-02-07 02:30:21 -080014491 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
14492 {
Yilong Li71c43c52021-02-10 02:50:43 -080014493 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Yilong Lia8d45f12021-02-07 02:30:21 -080014494 return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
14495 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070014496 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
14497 {
Yilong Li71c43c52021-02-10 02:50:43 -080014498 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070014499 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
14500 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014501 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
14502 {
Yilong Li71c43c52021-02-10 02:50:43 -080014503 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014504 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
14505 }
14506 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
14507 {
Yilong Li71c43c52021-02-10 02:50:43 -080014508 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014509 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
14510 }
14511 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
14512 {
Yilong Li71c43c52021-02-10 02:50:43 -080014513 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014514 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
14515 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070014516 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
14517 {
Yilong Li71c43c52021-02-10 02:50:43 -080014518 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang39a276e2019-06-17 13:27:22 -070014519 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
14520 }
Lingfeng Yang87f11962019-06-27 16:28:53 +000014521 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
14522 {
Yilong Li71c43c52021-02-10 02:50:43 -080014523 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang87f11962019-06-27 16:28:53 +000014524 return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
14525 }
14526 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
14527 {
Yilong Li71c43c52021-02-10 02:50:43 -080014528 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang87f11962019-06-27 16:28:53 +000014529 return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
14530 }
Lingfeng Yang4c542412020-02-04 18:18:32 -080014531 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
14532 {
Yilong Li71c43c52021-02-10 02:50:43 -080014533 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang4c542412020-02-04 18:18:32 -080014534 return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
14535 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070014536 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
14537 {
Yilong Li71c43c52021-02-10 02:50:43 -080014538 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070014539 return hasExt ? (void*)entry_vkFreeMemorySyncGOOGLE : nullptr;
14540 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014541 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
14542 {
Yilong Li71c43c52021-02-10 02:50:43 -080014543 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014544 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
14545 }
14546 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
14547 {
Yilong Li71c43c52021-02-10 02:50:43 -080014548 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014549 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
14550 }
14551 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
14552 {
Yilong Li71c43c52021-02-10 02:50:43 -080014553 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014554 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
14555 }
14556 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
14557 {
Yilong Li71c43c52021-02-10 02:50:43 -080014558 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014559 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
14560 }
Yilong Lia48b0102020-09-15 15:08:28 -070014561 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
14562 {
Yilong Li71c43c52021-02-10 02:50:43 -080014563 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Yilong Lia48b0102020-09-15 15:08:28 -070014564 return hasExt ? (void*)entry_vkGetLinearImageLayoutGOOGLE : nullptr;
14565 }
Lingfeng Yangded34672021-01-22 23:17:47 -080014566 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
14567 {
Yilong Li71c43c52021-02-10 02:50:43 -080014568 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangded34672021-01-22 23:17:47 -080014569 return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
14570 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080014571 if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
14572 {
14573 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14574 return hasExt ? (void*)entry_vkQueueCommitDescriptorSetUpdatesGOOGLE : nullptr;
14575 }
14576 if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
14577 {
14578 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14579 return hasExt ? (void*)entry_vkCollectDescriptorPoolIdsGOOGLE : nullptr;
14580 }
Lingfeng Yangded34672021-01-22 23:17:47 -080014581#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014582#ifdef VK_KHR_acceleration_structure
14583 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
14584 {
14585 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14586 return hasExt ? (void*)entry_vkCreateAccelerationStructureKHR : nullptr;
14587 }
14588 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
14589 {
14590 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14591 return hasExt ? (void*)entry_vkDestroyAccelerationStructureKHR : nullptr;
14592 }
14593 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
14594 {
14595 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14596 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresKHR : nullptr;
14597 }
14598 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
14599 {
14600 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14601 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresIndirectKHR : nullptr;
14602 }
14603 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
14604 {
14605 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14606 return hasExt ? (void*)entry_vkBuildAccelerationStructuresKHR : nullptr;
14607 }
14608 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
14609 {
14610 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14611 return hasExt ? (void*)entry_vkCopyAccelerationStructureKHR : nullptr;
14612 }
14613 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
14614 {
14615 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14616 return hasExt ? (void*)entry_vkCopyAccelerationStructureToMemoryKHR : nullptr;
14617 }
14618 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
14619 {
14620 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14621 return hasExt ? (void*)entry_vkCopyMemoryToAccelerationStructureKHR : nullptr;
14622 }
14623 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
14624 {
14625 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14626 return hasExt ? (void*)entry_vkWriteAccelerationStructuresPropertiesKHR : nullptr;
14627 }
14628 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
14629 {
14630 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14631 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureKHR : nullptr;
14632 }
14633 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
14634 {
14635 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14636 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureToMemoryKHR : nullptr;
14637 }
14638 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
14639 {
14640 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14641 return hasExt ? (void*)entry_vkCmdCopyMemoryToAccelerationStructureKHR : nullptr;
14642 }
14643 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
14644 {
14645 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14646 return hasExt ? (void*)entry_vkGetAccelerationStructureDeviceAddressKHR : nullptr;
14647 }
14648 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
14649 {
14650 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14651 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesKHR : nullptr;
14652 }
14653 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
14654 {
14655 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14656 return hasExt ? (void*)entry_vkGetDeviceAccelerationStructureCompatibilityKHR : nullptr;
14657 }
14658 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
14659 {
14660 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14661 return hasExt ? (void*)entry_vkGetAccelerationStructureBuildSizesKHR : nullptr;
14662 }
14663#endif
14664#ifdef VK_KHR_ray_tracing_pipeline
14665 if (!strcmp(name, "vkCmdTraceRaysKHR"))
14666 {
14667 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14668 return hasExt ? (void*)entry_vkCmdTraceRaysKHR : nullptr;
14669 }
14670 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
14671 {
14672 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14673 return hasExt ? (void*)entry_vkCreateRayTracingPipelinesKHR : nullptr;
14674 }
14675 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
14676 {
14677 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14678 return hasExt ? (void*)entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR : nullptr;
14679 }
14680 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
14681 {
14682 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14683 return hasExt ? (void*)entry_vkCmdTraceRaysIndirectKHR : nullptr;
14684 }
14685 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
14686 {
14687 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14688 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupStackSizeKHR : nullptr;
14689 }
14690 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
14691 {
14692 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14693 return hasExt ? (void*)entry_vkCmdSetRayTracingPipelineStackSizeKHR : nullptr;
14694 }
14695#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080014696 return nullptr;
14697}
14698
14699} // namespace goldfish_vk