blob: fc65f0a035a4419f8c3738ae2b99cd78b59485d6 [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
Yahan Zhoub851b7e2022-04-13 10:46:34 -070017// (impl) generated by registry/vulkan/scripts/genvk.py -registry registry/vulkan/xml/vk.xml cereal -o ../qemu/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
Lingfeng Yang0b81df22018-11-05 21:40:30 -080018// Please do not modify directly;
Yahan Zhoub851b7e2022-04-13 10:46:34 -070019// re-run gfxstream-protocols/scripts/generate-vulkan-sources.sh,
Lingfeng Yang0b81df22018-11-05 21:40:30 -080020// or directly from Python by defining:
Yahan Zhoub851b7e2022-04-13 10:46:34 -070021// VULKAN_REGISTRY_XML_DIR : Directory containing vk.xml
22// VULKAN_REGISTRY_SCRIPTS_DIR : Directory containing genvk.py
Lingfeng Yang0b81df22018-11-05 21:40:30 -080023// CEREAL_OUTPUT_DIR: Where to put the generated sources.
Yahan Zhoub851b7e2022-04-13 10:46:34 -070024// python3 $VULKAN_REGISTRY_SCRIPTS_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
Lingfeng Yang0b81df22018-11-05 21:40:30 -080025
26#include "func_table.h"
27
28
29#include "VkEncoder.h"
Lingfeng Yang239cd602021-01-22 22:57:35 -080030#include "../OpenglSystemCommon/HostConnection.h"
Lingfeng Yange9979522018-12-25 14:44:52 -080031#include "ResourceTracker.h"
Lingfeng Yang0b81df22018-11-05 21:40:30 -080032
Lingfeng Yang808a6312018-11-13 21:06:15 -080033#include "goldfish_vk_private_defs.h"
34
Lingfeng Yang2f51a332019-10-30 09:25:25 -070035#include <log/log.h>
Gurchetan Singha1292d92021-10-22 16:02:25 -070036#include <cstring>
Lingfeng Yang2f51a332019-10-30 09:25:25 -070037
Lingfeng Yang0b81df22018-11-05 21:40:30 -080038// Stuff we are not going to use but if included,
39// will cause compile errors. These are Android Vulkan
40// required extensions, but the approach will be to
41// implement them completely on the guest side.
42#undef VK_KHR_android_surface
Lingfeng Yang0b81df22018-11-05 21:40:30 -080043
44
45namespace goldfish_vk {
46
Lingfeng Yang2f51a332019-10-30 09:25:25 -070047static void sOnInvalidDynamicallyCheckedCall(const char* apiname, const char* neededFeature)
48{
49 ALOGE("invalid call to %s: %s not supported", apiname, neededFeature);
50 abort();
51}
Lingfeng Yang0b81df22018-11-05 21:40:30 -080052#ifdef VK_VERSION_1_0
53static VkResult entry_vkCreateInstance(
54 const VkInstanceCreateInfo* pCreateInfo,
55 const VkAllocationCallbacks* pAllocator,
56 VkInstance* pInstance)
57{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080058 AEMU_SCOPED_TRACE("vkCreateInstance");
Lingfeng Yang4f539502021-01-22 23:01:57 -080059 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -080060 VkResult vkCreateInstance_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080061 vkCreateInstance_VkResult_return = vkEnc->vkCreateInstance(pCreateInfo, pAllocator, pInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080062 return vkCreateInstance_VkResult_return;
63}
64static void entry_vkDestroyInstance(
65 VkInstance instance,
66 const VkAllocationCallbacks* pAllocator)
67{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080068 AEMU_SCOPED_TRACE("vkDestroyInstance");
Lingfeng Yang4f539502021-01-22 23:01:57 -080069 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080070 vkEnc->vkDestroyInstance(instance, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080071}
72static VkResult entry_vkEnumeratePhysicalDevices(
73 VkInstance instance,
74 uint32_t* pPhysicalDeviceCount,
75 VkPhysicalDevice* pPhysicalDevices)
76{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080077 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices");
Lingfeng Yang4f539502021-01-22 23:01:57 -080078 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -080079 VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
Lingfeng Yangb64ca452019-02-14 22:04:28 -080080 auto resources = ResourceTracker::get();
81 vkEnumeratePhysicalDevices_VkResult_return = resources->on_vkEnumeratePhysicalDevices(vkEnc, VK_SUCCESS, instance, pPhysicalDeviceCount, pPhysicalDevices);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080082 return vkEnumeratePhysicalDevices_VkResult_return;
83}
84static void entry_vkGetPhysicalDeviceFeatures(
85 VkPhysicalDevice physicalDevice,
86 VkPhysicalDeviceFeatures* pFeatures)
87{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080088 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -080089 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080090 vkEnc->vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080091}
92static void entry_vkGetPhysicalDeviceFormatProperties(
93 VkPhysicalDevice physicalDevice,
94 VkFormat format,
95 VkFormatProperties* pFormatProperties)
96{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080097 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -080098 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080099 vkEnc->vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800100}
101static VkResult entry_vkGetPhysicalDeviceImageFormatProperties(
102 VkPhysicalDevice physicalDevice,
103 VkFormat format,
104 VkImageType type,
105 VkImageTiling tiling,
106 VkImageUsageFlags usage,
107 VkImageCreateFlags flags,
108 VkImageFormatProperties* pImageFormatProperties)
109{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800110 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800111 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800112 VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800113 vkGetPhysicalDeviceImageFormatProperties_VkResult_return = vkEnc->vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800114 return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
115}
116static void entry_vkGetPhysicalDeviceProperties(
117 VkPhysicalDevice physicalDevice,
118 VkPhysicalDeviceProperties* pProperties)
119{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800120 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800121 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800122 vkEnc->vkGetPhysicalDeviceProperties(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800123}
124static void entry_vkGetPhysicalDeviceQueueFamilyProperties(
125 VkPhysicalDevice physicalDevice,
126 uint32_t* pQueueFamilyPropertyCount,
127 VkQueueFamilyProperties* pQueueFamilyProperties)
128{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800129 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800130 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800131 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800132}
133static void entry_vkGetPhysicalDeviceMemoryProperties(
134 VkPhysicalDevice physicalDevice,
135 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
136{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800137 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800138 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800139 vkEnc->vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800140}
141static PFN_vkVoidFunction entry_vkGetInstanceProcAddr(
142 VkInstance instance,
143 const char* pName)
144{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800145 AEMU_SCOPED_TRACE("vkGetInstanceProcAddr");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800146 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800147 PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800148 vkGetInstanceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetInstanceProcAddr(instance, pName, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800149 return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
150}
151static PFN_vkVoidFunction entry_vkGetDeviceProcAddr(
152 VkDevice device,
153 const char* pName)
154{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800155 AEMU_SCOPED_TRACE("vkGetDeviceProcAddr");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800156 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800157 PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800158 vkGetDeviceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetDeviceProcAddr(device, pName, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800159 return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
160}
161static VkResult entry_vkCreateDevice(
162 VkPhysicalDevice physicalDevice,
163 const VkDeviceCreateInfo* pCreateInfo,
164 const VkAllocationCallbacks* pAllocator,
165 VkDevice* pDevice)
166{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800167 AEMU_SCOPED_TRACE("vkCreateDevice");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800168 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800169 VkResult vkCreateDevice_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800170 vkCreateDevice_VkResult_return = vkEnc->vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800171 return vkCreateDevice_VkResult_return;
172}
173static void entry_vkDestroyDevice(
174 VkDevice device,
175 const VkAllocationCallbacks* pAllocator)
176{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800177 AEMU_SCOPED_TRACE("vkDestroyDevice");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800178 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800179 vkEnc->vkDestroyDevice(device, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800180}
181static VkResult entry_vkEnumerateInstanceExtensionProperties(
182 const char* pLayerName,
183 uint32_t* pPropertyCount,
184 VkExtensionProperties* pProperties)
185{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800186 AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800187 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800188 VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -0800189 auto resources = ResourceTracker::get();
190 vkEnumerateInstanceExtensionProperties_VkResult_return = resources->on_vkEnumerateInstanceExtensionProperties(vkEnc, VK_SUCCESS, pLayerName, pPropertyCount, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800191 return vkEnumerateInstanceExtensionProperties_VkResult_return;
192}
193static VkResult entry_vkEnumerateDeviceExtensionProperties(
194 VkPhysicalDevice physicalDevice,
195 const char* pLayerName,
196 uint32_t* pPropertyCount,
197 VkExtensionProperties* pProperties)
198{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800199 AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800200 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800201 VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -0800202 auto resources = ResourceTracker::get();
203 vkEnumerateDeviceExtensionProperties_VkResult_return = resources->on_vkEnumerateDeviceExtensionProperties(vkEnc, VK_SUCCESS, physicalDevice, pLayerName, pPropertyCount, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800204 return vkEnumerateDeviceExtensionProperties_VkResult_return;
205}
206static VkResult entry_vkEnumerateInstanceLayerProperties(
207 uint32_t* pPropertyCount,
208 VkLayerProperties* pProperties)
209{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800210 AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800211 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800212 VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800213 vkEnumerateInstanceLayerProperties_VkResult_return = vkEnc->vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800214 return vkEnumerateInstanceLayerProperties_VkResult_return;
215}
216static VkResult entry_vkEnumerateDeviceLayerProperties(
217 VkPhysicalDevice physicalDevice,
218 uint32_t* pPropertyCount,
219 VkLayerProperties* pProperties)
220{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800221 AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800222 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800223 VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800224 vkEnumerateDeviceLayerProperties_VkResult_return = vkEnc->vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800225 return vkEnumerateDeviceLayerProperties_VkResult_return;
226}
227static void entry_vkGetDeviceQueue(
228 VkDevice device,
229 uint32_t queueFamilyIndex,
230 uint32_t queueIndex,
231 VkQueue* pQueue)
232{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800233 AEMU_SCOPED_TRACE("vkGetDeviceQueue");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800234 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800235 vkEnc->vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800236}
237static VkResult entry_vkQueueSubmit(
238 VkQueue queue,
239 uint32_t submitCount,
240 const VkSubmitInfo* pSubmits,
241 VkFence fence)
242{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800243 AEMU_SCOPED_TRACE("vkQueueSubmit");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800244 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800245 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
David Reveman24710222019-02-25 02:21:42 -0500246 auto resources = ResourceTracker::get();
247 vkQueueSubmit_VkResult_return = resources->on_vkQueueSubmit(vkEnc, VK_SUCCESS, queue, submitCount, pSubmits, fence);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800248 return vkQueueSubmit_VkResult_return;
249}
250static VkResult entry_vkQueueWaitIdle(
251 VkQueue queue)
252{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800253 AEMU_SCOPED_TRACE("vkQueueWaitIdle");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800254 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800255 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700256 auto resources = ResourceTracker::get();
257 vkQueueWaitIdle_VkResult_return = resources->on_vkQueueWaitIdle(vkEnc, VK_SUCCESS, queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800258 return vkQueueWaitIdle_VkResult_return;
259}
260static VkResult entry_vkDeviceWaitIdle(
261 VkDevice device)
262{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800263 AEMU_SCOPED_TRACE("vkDeviceWaitIdle");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800264 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800265 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800266 vkDeviceWaitIdle_VkResult_return = vkEnc->vkDeviceWaitIdle(device, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800267 return vkDeviceWaitIdle_VkResult_return;
268}
269static VkResult entry_vkAllocateMemory(
270 VkDevice device,
271 const VkMemoryAllocateInfo* pAllocateInfo,
272 const VkAllocationCallbacks* pAllocator,
273 VkDeviceMemory* pMemory)
274{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800275 AEMU_SCOPED_TRACE("vkAllocateMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800276 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800277 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
Lingfeng Yange9979522018-12-25 14:44:52 -0800278 auto resources = ResourceTracker::get();
279 vkAllocateMemory_VkResult_return = resources->on_vkAllocateMemory(vkEnc, VK_SUCCESS, device, pAllocateInfo, pAllocator, pMemory);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800280 return vkAllocateMemory_VkResult_return;
281}
282static void entry_vkFreeMemory(
283 VkDevice device,
284 VkDeviceMemory memory,
285 const VkAllocationCallbacks* pAllocator)
286{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800287 AEMU_SCOPED_TRACE("vkFreeMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800288 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yange9979522018-12-25 14:44:52 -0800289 auto resources = ResourceTracker::get();
290 resources->on_vkFreeMemory(vkEnc, device, memory, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800291}
292static VkResult entry_vkMapMemory(
293 VkDevice device,
294 VkDeviceMemory memory,
295 VkDeviceSize offset,
296 VkDeviceSize size,
297 VkMemoryMapFlags flags,
298 void** ppData)
299{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800300 AEMU_SCOPED_TRACE("vkMapMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800301 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800302 VkResult vkMapMemory_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800303 vkMapMemory_VkResult_return = vkEnc->vkMapMemory(device, memory, offset, size, flags, ppData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800304 return vkMapMemory_VkResult_return;
305}
306static void entry_vkUnmapMemory(
307 VkDevice device,
308 VkDeviceMemory memory)
309{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800310 AEMU_SCOPED_TRACE("vkUnmapMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800311 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800312 vkEnc->vkUnmapMemory(device, memory, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800313}
314static VkResult entry_vkFlushMappedMemoryRanges(
315 VkDevice device,
316 uint32_t memoryRangeCount,
317 const VkMappedMemoryRange* pMemoryRanges)
318{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800319 AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800320 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800321 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800322 vkFlushMappedMemoryRanges_VkResult_return = vkEnc->vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800323 return vkFlushMappedMemoryRanges_VkResult_return;
324}
325static VkResult entry_vkInvalidateMappedMemoryRanges(
326 VkDevice device,
327 uint32_t memoryRangeCount,
328 const VkMappedMemoryRange* pMemoryRanges)
329{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800330 AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800331 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800332 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800333 vkInvalidateMappedMemoryRanges_VkResult_return = vkEnc->vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800334 return vkInvalidateMappedMemoryRanges_VkResult_return;
335}
336static void entry_vkGetDeviceMemoryCommitment(
337 VkDevice device,
338 VkDeviceMemory memory,
339 VkDeviceSize* pCommittedMemoryInBytes)
340{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800341 AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800342 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800343 vkEnc->vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800344}
345static VkResult entry_vkBindBufferMemory(
346 VkDevice device,
347 VkBuffer buffer,
348 VkDeviceMemory memory,
349 VkDeviceSize memoryOffset)
350{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800351 AEMU_SCOPED_TRACE("vkBindBufferMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800352 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800353 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800354 auto resources = ResourceTracker::get();
355 vkBindBufferMemory_VkResult_return = resources->on_vkBindBufferMemory(vkEnc, VK_SUCCESS, device, buffer, memory, memoryOffset);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800356 return vkBindBufferMemory_VkResult_return;
357}
358static VkResult entry_vkBindImageMemory(
359 VkDevice device,
360 VkImage image,
361 VkDeviceMemory memory,
362 VkDeviceSize memoryOffset)
363{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800364 AEMU_SCOPED_TRACE("vkBindImageMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800365 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800366 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800367 auto resources = ResourceTracker::get();
368 vkBindImageMemory_VkResult_return = resources->on_vkBindImageMemory(vkEnc, VK_SUCCESS, device, image, memory, memoryOffset);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800369 return vkBindImageMemory_VkResult_return;
370}
371static void entry_vkGetBufferMemoryRequirements(
372 VkDevice device,
373 VkBuffer buffer,
374 VkMemoryRequirements* pMemoryRequirements)
375{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800376 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800377 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800378 auto resources = ResourceTracker::get();
379 resources->on_vkGetBufferMemoryRequirements(vkEnc, device, buffer, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800380}
381static void entry_vkGetImageMemoryRequirements(
382 VkDevice device,
383 VkImage image,
384 VkMemoryRequirements* pMemoryRequirements)
385{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800386 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800387 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800388 auto resources = ResourceTracker::get();
389 resources->on_vkGetImageMemoryRequirements(vkEnc, device, image, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800390}
391static void entry_vkGetImageSparseMemoryRequirements(
392 VkDevice device,
393 VkImage image,
394 uint32_t* pSparseMemoryRequirementCount,
395 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
396{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800397 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800398 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800399 vkEnc->vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800400}
401static void entry_vkGetPhysicalDeviceSparseImageFormatProperties(
402 VkPhysicalDevice physicalDevice,
403 VkFormat format,
404 VkImageType type,
405 VkSampleCountFlagBits samples,
406 VkImageUsageFlags usage,
407 VkImageTiling tiling,
408 uint32_t* pPropertyCount,
409 VkSparseImageFormatProperties* pProperties)
410{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800411 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800412 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800413 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800414}
415static VkResult entry_vkQueueBindSparse(
416 VkQueue queue,
417 uint32_t bindInfoCount,
418 const VkBindSparseInfo* pBindInfo,
419 VkFence fence)
420{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800421 AEMU_SCOPED_TRACE("vkQueueBindSparse");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800422 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800423 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800424 vkQueueBindSparse_VkResult_return = vkEnc->vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800425 return vkQueueBindSparse_VkResult_return;
426}
427static VkResult entry_vkCreateFence(
428 VkDevice device,
429 const VkFenceCreateInfo* pCreateInfo,
430 const VkAllocationCallbacks* pAllocator,
431 VkFence* pFence)
432{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800433 AEMU_SCOPED_TRACE("vkCreateFence");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800434 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800435 VkResult vkCreateFence_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700436 auto resources = ResourceTracker::get();
437 vkCreateFence_VkResult_return = resources->on_vkCreateFence(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pFence);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800438 return vkCreateFence_VkResult_return;
439}
440static void entry_vkDestroyFence(
441 VkDevice device,
442 VkFence fence,
443 const VkAllocationCallbacks* pAllocator)
444{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800445 AEMU_SCOPED_TRACE("vkDestroyFence");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800446 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800447 vkEnc->vkDestroyFence(device, fence, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800448}
449static VkResult entry_vkResetFences(
450 VkDevice device,
451 uint32_t fenceCount,
452 const VkFence* pFences)
453{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800454 AEMU_SCOPED_TRACE("vkResetFences");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800455 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800456 VkResult vkResetFences_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700457 auto resources = ResourceTracker::get();
458 vkResetFences_VkResult_return = resources->on_vkResetFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800459 return vkResetFences_VkResult_return;
460}
461static VkResult entry_vkGetFenceStatus(
462 VkDevice device,
463 VkFence fence)
464{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800465 AEMU_SCOPED_TRACE("vkGetFenceStatus");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800466 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800467 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800468 vkGetFenceStatus_VkResult_return = vkEnc->vkGetFenceStatus(device, fence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800469 return vkGetFenceStatus_VkResult_return;
470}
471static VkResult entry_vkWaitForFences(
472 VkDevice device,
473 uint32_t fenceCount,
474 const VkFence* pFences,
475 VkBool32 waitAll,
476 uint64_t timeout)
477{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800478 AEMU_SCOPED_TRACE("vkWaitForFences");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800479 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800480 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700481 auto resources = ResourceTracker::get();
482 vkWaitForFences_VkResult_return = resources->on_vkWaitForFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences, waitAll, timeout);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800483 return vkWaitForFences_VkResult_return;
484}
485static VkResult entry_vkCreateSemaphore(
486 VkDevice device,
487 const VkSemaphoreCreateInfo* pCreateInfo,
488 const VkAllocationCallbacks* pAllocator,
489 VkSemaphore* pSemaphore)
490{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800491 AEMU_SCOPED_TRACE("vkCreateSemaphore");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800492 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800493 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
David Reveman32b110e2019-02-21 13:20:54 -0500494 auto resources = ResourceTracker::get();
495 vkCreateSemaphore_VkResult_return = resources->on_vkCreateSemaphore(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSemaphore);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800496 return vkCreateSemaphore_VkResult_return;
497}
498static void entry_vkDestroySemaphore(
499 VkDevice device,
500 VkSemaphore semaphore,
501 const VkAllocationCallbacks* pAllocator)
502{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800503 AEMU_SCOPED_TRACE("vkDestroySemaphore");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800504 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
David Reveman32b110e2019-02-21 13:20:54 -0500505 auto resources = ResourceTracker::get();
506 resources->on_vkDestroySemaphore(vkEnc, device, semaphore, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800507}
508static VkResult entry_vkCreateEvent(
509 VkDevice device,
510 const VkEventCreateInfo* pCreateInfo,
511 const VkAllocationCallbacks* pAllocator,
512 VkEvent* pEvent)
513{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800514 AEMU_SCOPED_TRACE("vkCreateEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800515 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800516 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800517 vkCreateEvent_VkResult_return = vkEnc->vkCreateEvent(device, pCreateInfo, pAllocator, pEvent, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800518 return vkCreateEvent_VkResult_return;
519}
520static void entry_vkDestroyEvent(
521 VkDevice device,
522 VkEvent event,
523 const VkAllocationCallbacks* pAllocator)
524{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800525 AEMU_SCOPED_TRACE("vkDestroyEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800526 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800527 vkEnc->vkDestroyEvent(device, event, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800528}
529static VkResult entry_vkGetEventStatus(
530 VkDevice device,
531 VkEvent event)
532{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800533 AEMU_SCOPED_TRACE("vkGetEventStatus");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800534 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800535 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800536 vkGetEventStatus_VkResult_return = vkEnc->vkGetEventStatus(device, event, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800537 return vkGetEventStatus_VkResult_return;
538}
539static VkResult entry_vkSetEvent(
540 VkDevice device,
541 VkEvent event)
542{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800543 AEMU_SCOPED_TRACE("vkSetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800544 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800545 VkResult vkSetEvent_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800546 vkSetEvent_VkResult_return = vkEnc->vkSetEvent(device, event, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800547 return vkSetEvent_VkResult_return;
548}
549static VkResult entry_vkResetEvent(
550 VkDevice device,
551 VkEvent event)
552{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800553 AEMU_SCOPED_TRACE("vkResetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800554 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800555 VkResult vkResetEvent_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800556 vkResetEvent_VkResult_return = vkEnc->vkResetEvent(device, event, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800557 return vkResetEvent_VkResult_return;
558}
559static VkResult entry_vkCreateQueryPool(
560 VkDevice device,
561 const VkQueryPoolCreateInfo* pCreateInfo,
562 const VkAllocationCallbacks* pAllocator,
563 VkQueryPool* pQueryPool)
564{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800565 AEMU_SCOPED_TRACE("vkCreateQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800566 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800567 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800568 vkCreateQueryPool_VkResult_return = vkEnc->vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800569 return vkCreateQueryPool_VkResult_return;
570}
571static void entry_vkDestroyQueryPool(
572 VkDevice device,
573 VkQueryPool queryPool,
574 const VkAllocationCallbacks* pAllocator)
575{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800576 AEMU_SCOPED_TRACE("vkDestroyQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800577 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800578 vkEnc->vkDestroyQueryPool(device, queryPool, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800579}
580static VkResult entry_vkGetQueryPoolResults(
581 VkDevice device,
582 VkQueryPool queryPool,
583 uint32_t firstQuery,
584 uint32_t queryCount,
585 size_t dataSize,
586 void* pData,
587 VkDeviceSize stride,
588 VkQueryResultFlags flags)
589{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800590 AEMU_SCOPED_TRACE("vkGetQueryPoolResults");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800591 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800592 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800593 vkGetQueryPoolResults_VkResult_return = vkEnc->vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800594 return vkGetQueryPoolResults_VkResult_return;
595}
596static VkResult entry_vkCreateBuffer(
597 VkDevice device,
598 const VkBufferCreateInfo* pCreateInfo,
599 const VkAllocationCallbacks* pAllocator,
600 VkBuffer* pBuffer)
601{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800602 AEMU_SCOPED_TRACE("vkCreateBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800603 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800604 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800605 auto resources = ResourceTracker::get();
606 vkCreateBuffer_VkResult_return = resources->on_vkCreateBuffer(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800607 return vkCreateBuffer_VkResult_return;
608}
609static void entry_vkDestroyBuffer(
610 VkDevice device,
611 VkBuffer buffer,
612 const VkAllocationCallbacks* pAllocator)
613{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800614 AEMU_SCOPED_TRACE("vkDestroyBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800615 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800616 auto resources = ResourceTracker::get();
617 resources->on_vkDestroyBuffer(vkEnc, device, buffer, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800618}
619static VkResult entry_vkCreateBufferView(
620 VkDevice device,
621 const VkBufferViewCreateInfo* pCreateInfo,
622 const VkAllocationCallbacks* pAllocator,
623 VkBufferView* pView)
624{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800625 AEMU_SCOPED_TRACE("vkCreateBufferView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800626 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800627 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800628 vkCreateBufferView_VkResult_return = vkEnc->vkCreateBufferView(device, pCreateInfo, pAllocator, pView, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800629 return vkCreateBufferView_VkResult_return;
630}
631static void entry_vkDestroyBufferView(
632 VkDevice device,
633 VkBufferView bufferView,
634 const VkAllocationCallbacks* pAllocator)
635{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800636 AEMU_SCOPED_TRACE("vkDestroyBufferView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800637 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800638 vkEnc->vkDestroyBufferView(device, bufferView, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800639}
640static VkResult entry_vkCreateImage(
641 VkDevice device,
642 const VkImageCreateInfo* pCreateInfo,
643 const VkAllocationCallbacks* pAllocator,
644 VkImage* pImage)
645{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800646 AEMU_SCOPED_TRACE("vkCreateImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800647 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800648 VkResult vkCreateImage_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800649 auto resources = ResourceTracker::get();
650 vkCreateImage_VkResult_return = resources->on_vkCreateImage(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pImage);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800651 return vkCreateImage_VkResult_return;
652}
653static void entry_vkDestroyImage(
654 VkDevice device,
655 VkImage image,
656 const VkAllocationCallbacks* pAllocator)
657{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800658 AEMU_SCOPED_TRACE("vkDestroyImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800659 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800660 auto resources = ResourceTracker::get();
661 resources->on_vkDestroyImage(vkEnc, device, image, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800662}
663static void entry_vkGetImageSubresourceLayout(
664 VkDevice device,
665 VkImage image,
666 const VkImageSubresource* pSubresource,
667 VkSubresourceLayout* pLayout)
668{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800669 AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800670 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800671 vkEnc->vkGetImageSubresourceLayout(device, image, pSubresource, pLayout, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800672}
673static VkResult entry_vkCreateImageView(
674 VkDevice device,
675 const VkImageViewCreateInfo* pCreateInfo,
676 const VkAllocationCallbacks* pAllocator,
677 VkImageView* pView)
678{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800679 AEMU_SCOPED_TRACE("vkCreateImageView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800680 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800681 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
Roman Kiryanov6db11e52019-04-26 14:18:14 -0700682 auto resources = ResourceTracker::get();
683 vkCreateImageView_VkResult_return = resources->on_vkCreateImageView(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pView);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800684 return vkCreateImageView_VkResult_return;
685}
686static void entry_vkDestroyImageView(
687 VkDevice device,
688 VkImageView imageView,
689 const VkAllocationCallbacks* pAllocator)
690{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800691 AEMU_SCOPED_TRACE("vkDestroyImageView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800692 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800693 vkEnc->vkDestroyImageView(device, imageView, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800694}
695static VkResult entry_vkCreateShaderModule(
696 VkDevice device,
697 const VkShaderModuleCreateInfo* pCreateInfo,
698 const VkAllocationCallbacks* pAllocator,
699 VkShaderModule* pShaderModule)
700{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800701 AEMU_SCOPED_TRACE("vkCreateShaderModule");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800702 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800703 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800704 vkCreateShaderModule_VkResult_return = vkEnc->vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800705 return vkCreateShaderModule_VkResult_return;
706}
707static void entry_vkDestroyShaderModule(
708 VkDevice device,
709 VkShaderModule shaderModule,
710 const VkAllocationCallbacks* pAllocator)
711{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800712 AEMU_SCOPED_TRACE("vkDestroyShaderModule");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800713 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800714 vkEnc->vkDestroyShaderModule(device, shaderModule, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800715}
716static VkResult entry_vkCreatePipelineCache(
717 VkDevice device,
718 const VkPipelineCacheCreateInfo* pCreateInfo,
719 const VkAllocationCallbacks* pAllocator,
720 VkPipelineCache* pPipelineCache)
721{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800722 AEMU_SCOPED_TRACE("vkCreatePipelineCache");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800723 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800724 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800725 vkCreatePipelineCache_VkResult_return = vkEnc->vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800726 return vkCreatePipelineCache_VkResult_return;
727}
728static void entry_vkDestroyPipelineCache(
729 VkDevice device,
730 VkPipelineCache pipelineCache,
731 const VkAllocationCallbacks* pAllocator)
732{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800733 AEMU_SCOPED_TRACE("vkDestroyPipelineCache");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800734 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800735 vkEnc->vkDestroyPipelineCache(device, pipelineCache, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800736}
737static VkResult entry_vkGetPipelineCacheData(
738 VkDevice device,
739 VkPipelineCache pipelineCache,
740 size_t* pDataSize,
741 void* pData)
742{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800743 AEMU_SCOPED_TRACE("vkGetPipelineCacheData");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800744 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800745 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800746 vkGetPipelineCacheData_VkResult_return = vkEnc->vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800747 return vkGetPipelineCacheData_VkResult_return;
748}
749static VkResult entry_vkMergePipelineCaches(
750 VkDevice device,
751 VkPipelineCache dstCache,
752 uint32_t srcCacheCount,
753 const VkPipelineCache* pSrcCaches)
754{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800755 AEMU_SCOPED_TRACE("vkMergePipelineCaches");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800756 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800757 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800758 vkMergePipelineCaches_VkResult_return = vkEnc->vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800759 return vkMergePipelineCaches_VkResult_return;
760}
761static VkResult entry_vkCreateGraphicsPipelines(
762 VkDevice device,
763 VkPipelineCache pipelineCache,
764 uint32_t createInfoCount,
765 const VkGraphicsPipelineCreateInfo* pCreateInfos,
766 const VkAllocationCallbacks* pAllocator,
767 VkPipeline* pPipelines)
768{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800769 AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800770 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800771 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800772 vkCreateGraphicsPipelines_VkResult_return = vkEnc->vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800773 return vkCreateGraphicsPipelines_VkResult_return;
774}
775static VkResult entry_vkCreateComputePipelines(
776 VkDevice device,
777 VkPipelineCache pipelineCache,
778 uint32_t createInfoCount,
779 const VkComputePipelineCreateInfo* pCreateInfos,
780 const VkAllocationCallbacks* pAllocator,
781 VkPipeline* pPipelines)
782{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800783 AEMU_SCOPED_TRACE("vkCreateComputePipelines");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800784 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800785 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800786 vkCreateComputePipelines_VkResult_return = vkEnc->vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800787 return vkCreateComputePipelines_VkResult_return;
788}
789static void entry_vkDestroyPipeline(
790 VkDevice device,
791 VkPipeline pipeline,
792 const VkAllocationCallbacks* pAllocator)
793{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800794 AEMU_SCOPED_TRACE("vkDestroyPipeline");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800795 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800796 vkEnc->vkDestroyPipeline(device, pipeline, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800797}
798static VkResult entry_vkCreatePipelineLayout(
799 VkDevice device,
800 const VkPipelineLayoutCreateInfo* pCreateInfo,
801 const VkAllocationCallbacks* pAllocator,
802 VkPipelineLayout* pPipelineLayout)
803{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800804 AEMU_SCOPED_TRACE("vkCreatePipelineLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800805 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800806 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800807 vkCreatePipelineLayout_VkResult_return = vkEnc->vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800808 return vkCreatePipelineLayout_VkResult_return;
809}
810static void entry_vkDestroyPipelineLayout(
811 VkDevice device,
812 VkPipelineLayout pipelineLayout,
813 const VkAllocationCallbacks* pAllocator)
814{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800815 AEMU_SCOPED_TRACE("vkDestroyPipelineLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800816 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800817 vkEnc->vkDestroyPipelineLayout(device, pipelineLayout, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800818}
819static VkResult entry_vkCreateSampler(
820 VkDevice device,
821 const VkSamplerCreateInfo* pCreateInfo,
822 const VkAllocationCallbacks* pAllocator,
823 VkSampler* pSampler)
824{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800825 AEMU_SCOPED_TRACE("vkCreateSampler");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800826 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800827 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
Roman Kiryanov004f48c2019-06-28 14:59:32 -0700828 auto resources = ResourceTracker::get();
829 vkCreateSampler_VkResult_return = resources->on_vkCreateSampler(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSampler);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800830 return vkCreateSampler_VkResult_return;
831}
832static void entry_vkDestroySampler(
833 VkDevice device,
834 VkSampler sampler,
835 const VkAllocationCallbacks* pAllocator)
836{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800837 AEMU_SCOPED_TRACE("vkDestroySampler");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800838 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800839 vkEnc->vkDestroySampler(device, sampler, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800840}
841static VkResult entry_vkCreateDescriptorSetLayout(
842 VkDevice device,
843 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
844 const VkAllocationCallbacks* pAllocator,
845 VkDescriptorSetLayout* pSetLayout)
846{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800847 AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800848 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800849 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
Lingfeng Yang03354c72020-03-26 13:00:51 -0700850 auto resources = ResourceTracker::get();
851 vkCreateDescriptorSetLayout_VkResult_return = resources->on_vkCreateDescriptorSetLayout(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSetLayout);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800852 return vkCreateDescriptorSetLayout_VkResult_return;
853}
854static void entry_vkDestroyDescriptorSetLayout(
855 VkDevice device,
856 VkDescriptorSetLayout descriptorSetLayout,
857 const VkAllocationCallbacks* pAllocator)
858{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800859 AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800860 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang55676e02021-02-08 08:39:45 -0800861 auto resources = ResourceTracker::get();
862 resources->on_vkDestroyDescriptorSetLayout(vkEnc, device, descriptorSetLayout, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800863}
864static VkResult entry_vkCreateDescriptorPool(
865 VkDevice device,
866 const VkDescriptorPoolCreateInfo* pCreateInfo,
867 const VkAllocationCallbacks* pAllocator,
868 VkDescriptorPool* pDescriptorPool)
869{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800870 AEMU_SCOPED_TRACE("vkCreateDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800871 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800872 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700873 auto resources = ResourceTracker::get();
874 vkCreateDescriptorPool_VkResult_return = resources->on_vkCreateDescriptorPool(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pDescriptorPool);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800875 return vkCreateDescriptorPool_VkResult_return;
876}
877static void entry_vkDestroyDescriptorPool(
878 VkDevice device,
879 VkDescriptorPool descriptorPool,
880 const VkAllocationCallbacks* pAllocator)
881{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800882 AEMU_SCOPED_TRACE("vkDestroyDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800883 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700884 auto resources = ResourceTracker::get();
885 resources->on_vkDestroyDescriptorPool(vkEnc, device, descriptorPool, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800886}
887static VkResult entry_vkResetDescriptorPool(
888 VkDevice device,
889 VkDescriptorPool descriptorPool,
890 VkDescriptorPoolResetFlags flags)
891{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800892 AEMU_SCOPED_TRACE("vkResetDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800893 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800894 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700895 auto resources = ResourceTracker::get();
896 vkResetDescriptorPool_VkResult_return = resources->on_vkResetDescriptorPool(vkEnc, VK_SUCCESS, device, descriptorPool, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800897 return vkResetDescriptorPool_VkResult_return;
898}
899static VkResult entry_vkAllocateDescriptorSets(
900 VkDevice device,
901 const VkDescriptorSetAllocateInfo* pAllocateInfo,
902 VkDescriptorSet* pDescriptorSets)
903{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800904 AEMU_SCOPED_TRACE("vkAllocateDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800905 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800906 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700907 auto resources = ResourceTracker::get();
908 vkAllocateDescriptorSets_VkResult_return = resources->on_vkAllocateDescriptorSets(vkEnc, VK_SUCCESS, device, pAllocateInfo, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800909 return vkAllocateDescriptorSets_VkResult_return;
910}
911static VkResult entry_vkFreeDescriptorSets(
912 VkDevice device,
913 VkDescriptorPool descriptorPool,
914 uint32_t descriptorSetCount,
915 const VkDescriptorSet* pDescriptorSets)
916{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800917 AEMU_SCOPED_TRACE("vkFreeDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800918 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800919 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700920 auto resources = ResourceTracker::get();
921 vkFreeDescriptorSets_VkResult_return = resources->on_vkFreeDescriptorSets(vkEnc, VK_SUCCESS, device, descriptorPool, descriptorSetCount, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800922 return vkFreeDescriptorSets_VkResult_return;
923}
924static void entry_vkUpdateDescriptorSets(
925 VkDevice device,
926 uint32_t descriptorWriteCount,
927 const VkWriteDescriptorSet* pDescriptorWrites,
928 uint32_t descriptorCopyCount,
929 const VkCopyDescriptorSet* pDescriptorCopies)
930{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800931 AEMU_SCOPED_TRACE("vkUpdateDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800932 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang03354c72020-03-26 13:00:51 -0700933 auto resources = ResourceTracker::get();
934 resources->on_vkUpdateDescriptorSets(vkEnc, device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800935}
936static VkResult entry_vkCreateFramebuffer(
937 VkDevice device,
938 const VkFramebufferCreateInfo* pCreateInfo,
939 const VkAllocationCallbacks* pAllocator,
940 VkFramebuffer* pFramebuffer)
941{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800942 AEMU_SCOPED_TRACE("vkCreateFramebuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800943 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800944 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800945 vkCreateFramebuffer_VkResult_return = vkEnc->vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800946 return vkCreateFramebuffer_VkResult_return;
947}
948static void entry_vkDestroyFramebuffer(
949 VkDevice device,
950 VkFramebuffer framebuffer,
951 const VkAllocationCallbacks* pAllocator)
952{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800953 AEMU_SCOPED_TRACE("vkDestroyFramebuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800954 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800955 vkEnc->vkDestroyFramebuffer(device, framebuffer, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800956}
957static VkResult entry_vkCreateRenderPass(
958 VkDevice device,
959 const VkRenderPassCreateInfo* pCreateInfo,
960 const VkAllocationCallbacks* pAllocator,
961 VkRenderPass* pRenderPass)
962{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800963 AEMU_SCOPED_TRACE("vkCreateRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800964 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800965 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800966 vkCreateRenderPass_VkResult_return = vkEnc->vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800967 return vkCreateRenderPass_VkResult_return;
968}
969static void entry_vkDestroyRenderPass(
970 VkDevice device,
971 VkRenderPass renderPass,
972 const VkAllocationCallbacks* pAllocator)
973{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800974 AEMU_SCOPED_TRACE("vkDestroyRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800975 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800976 vkEnc->vkDestroyRenderPass(device, renderPass, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800977}
978static void entry_vkGetRenderAreaGranularity(
979 VkDevice device,
980 VkRenderPass renderPass,
981 VkExtent2D* pGranularity)
982{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800983 AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800984 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800985 vkEnc->vkGetRenderAreaGranularity(device, renderPass, pGranularity, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800986}
987static VkResult entry_vkCreateCommandPool(
988 VkDevice device,
989 const VkCommandPoolCreateInfo* pCreateInfo,
990 const VkAllocationCallbacks* pAllocator,
991 VkCommandPool* pCommandPool)
992{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800993 AEMU_SCOPED_TRACE("vkCreateCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800994 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800995 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800996 vkCreateCommandPool_VkResult_return = vkEnc->vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800997 return vkCreateCommandPool_VkResult_return;
998}
999static void entry_vkDestroyCommandPool(
1000 VkDevice device,
1001 VkCommandPool commandPool,
1002 const VkAllocationCallbacks* pAllocator)
1003{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001004 AEMU_SCOPED_TRACE("vkDestroyCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001005 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001006 vkEnc->vkDestroyCommandPool(device, commandPool, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001007}
1008static VkResult entry_vkResetCommandPool(
1009 VkDevice device,
1010 VkCommandPool commandPool,
1011 VkCommandPoolResetFlags flags)
1012{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001013 AEMU_SCOPED_TRACE("vkResetCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001014 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001015 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001016 vkResetCommandPool_VkResult_return = vkEnc->vkResetCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang4f539502021-01-22 23:01:57 -08001017 if (vkResetCommandPool_VkResult_return == VK_SUCCESS) {
1018 ResourceTracker::get()->resetCommandPoolStagingInfo(commandPool);
1019 }
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001020 return vkResetCommandPool_VkResult_return;
1021}
1022static VkResult entry_vkAllocateCommandBuffers(
1023 VkDevice device,
1024 const VkCommandBufferAllocateInfo* pAllocateInfo,
1025 VkCommandBuffer* pCommandBuffers)
1026{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001027 AEMU_SCOPED_TRACE("vkAllocateCommandBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001028 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001029 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
Lingfeng Yang97f51af2021-04-22 12:24:11 -07001030 auto resources = ResourceTracker::get();
1031 vkAllocateCommandBuffers_VkResult_return = resources->on_vkAllocateCommandBuffers(vkEnc, VK_SUCCESS, device, pAllocateInfo, pCommandBuffers);
Lingfeng Yang4f539502021-01-22 23:01:57 -08001032 if (vkAllocateCommandBuffers_VkResult_return == VK_SUCCESS) {
1033 ResourceTracker::get()->addToCommandPool(pAllocateInfo->commandPool, pAllocateInfo->commandBufferCount, pCommandBuffers);
1034 }
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001035 return vkAllocateCommandBuffers_VkResult_return;
1036}
1037static void entry_vkFreeCommandBuffers(
1038 VkDevice device,
1039 VkCommandPool commandPool,
1040 uint32_t commandBufferCount,
1041 const VkCommandBuffer* pCommandBuffers)
1042{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001043 AEMU_SCOPED_TRACE("vkFreeCommandBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001044 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001045 vkEnc->vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001046}
1047static VkResult entry_vkBeginCommandBuffer(
1048 VkCommandBuffer commandBuffer,
1049 const VkCommandBufferBeginInfo* pBeginInfo)
1050{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001051 AEMU_SCOPED_TRACE("vkBeginCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001052 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001053 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001054 auto resources = ResourceTracker::get();
1055 vkBeginCommandBuffer_VkResult_return = resources->on_vkBeginCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, pBeginInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001056 return vkBeginCommandBuffer_VkResult_return;
1057}
1058static VkResult entry_vkEndCommandBuffer(
1059 VkCommandBuffer commandBuffer)
1060{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001061 AEMU_SCOPED_TRACE("vkEndCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001062 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001063 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001064 auto resources = ResourceTracker::get();
1065 vkEndCommandBuffer_VkResult_return = resources->on_vkEndCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001066 return vkEndCommandBuffer_VkResult_return;
1067}
1068static VkResult entry_vkResetCommandBuffer(
1069 VkCommandBuffer commandBuffer,
1070 VkCommandBufferResetFlags flags)
1071{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001072 AEMU_SCOPED_TRACE("vkResetCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001073 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001074 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001075 auto resources = ResourceTracker::get();
1076 vkResetCommandBuffer_VkResult_return = resources->on_vkResetCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001077 return vkResetCommandBuffer_VkResult_return;
1078}
1079static void entry_vkCmdBindPipeline(
1080 VkCommandBuffer commandBuffer,
1081 VkPipelineBindPoint pipelineBindPoint,
1082 VkPipeline pipeline)
1083{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001084 AEMU_SCOPED_TRACE("vkCmdBindPipeline");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001085 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001086 vkEnc->vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001087}
1088static void entry_vkCmdSetViewport(
1089 VkCommandBuffer commandBuffer,
1090 uint32_t firstViewport,
1091 uint32_t viewportCount,
1092 const VkViewport* pViewports)
1093{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001094 AEMU_SCOPED_TRACE("vkCmdSetViewport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001095 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001096 vkEnc->vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001097}
1098static void entry_vkCmdSetScissor(
1099 VkCommandBuffer commandBuffer,
1100 uint32_t firstScissor,
1101 uint32_t scissorCount,
1102 const VkRect2D* pScissors)
1103{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001104 AEMU_SCOPED_TRACE("vkCmdSetScissor");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001105 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001106 vkEnc->vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001107}
1108static void entry_vkCmdSetLineWidth(
1109 VkCommandBuffer commandBuffer,
1110 float lineWidth)
1111{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001112 AEMU_SCOPED_TRACE("vkCmdSetLineWidth");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001113 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001114 vkEnc->vkCmdSetLineWidth(commandBuffer, lineWidth, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001115}
1116static void entry_vkCmdSetDepthBias(
1117 VkCommandBuffer commandBuffer,
1118 float depthBiasConstantFactor,
1119 float depthBiasClamp,
1120 float depthBiasSlopeFactor)
1121{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001122 AEMU_SCOPED_TRACE("vkCmdSetDepthBias");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001123 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001124 vkEnc->vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001125}
1126static void entry_vkCmdSetBlendConstants(
1127 VkCommandBuffer commandBuffer,
Lingfeng Yang97ddeb82019-04-20 14:32:52 -07001128 const float blendConstants[4])
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001129{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001130 AEMU_SCOPED_TRACE("vkCmdSetBlendConstants");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001131 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001132 vkEnc->vkCmdSetBlendConstants(commandBuffer, blendConstants, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001133}
1134static void entry_vkCmdSetDepthBounds(
1135 VkCommandBuffer commandBuffer,
1136 float minDepthBounds,
1137 float maxDepthBounds)
1138{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001139 AEMU_SCOPED_TRACE("vkCmdSetDepthBounds");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001140 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001141 vkEnc->vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001142}
1143static void entry_vkCmdSetStencilCompareMask(
1144 VkCommandBuffer commandBuffer,
1145 VkStencilFaceFlags faceMask,
1146 uint32_t compareMask)
1147{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001148 AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001149 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001150 vkEnc->vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001151}
1152static void entry_vkCmdSetStencilWriteMask(
1153 VkCommandBuffer commandBuffer,
1154 VkStencilFaceFlags faceMask,
1155 uint32_t writeMask)
1156{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001157 AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001158 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001159 vkEnc->vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001160}
1161static void entry_vkCmdSetStencilReference(
1162 VkCommandBuffer commandBuffer,
1163 VkStencilFaceFlags faceMask,
1164 uint32_t reference)
1165{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001166 AEMU_SCOPED_TRACE("vkCmdSetStencilReference");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001167 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001168 vkEnc->vkCmdSetStencilReference(commandBuffer, faceMask, reference, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001169}
1170static void entry_vkCmdBindDescriptorSets(
1171 VkCommandBuffer commandBuffer,
1172 VkPipelineBindPoint pipelineBindPoint,
1173 VkPipelineLayout layout,
1174 uint32_t firstSet,
1175 uint32_t descriptorSetCount,
1176 const VkDescriptorSet* pDescriptorSets,
1177 uint32_t dynamicOffsetCount,
1178 const uint32_t* pDynamicOffsets)
1179{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001180 AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001181 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang55676e02021-02-08 08:39:45 -08001182 auto resources = ResourceTracker::get();
1183 resources->on_vkCmdBindDescriptorSets(vkEnc, commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001184}
1185static void entry_vkCmdBindIndexBuffer(
1186 VkCommandBuffer commandBuffer,
1187 VkBuffer buffer,
1188 VkDeviceSize offset,
1189 VkIndexType indexType)
1190{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001191 AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001192 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001193 vkEnc->vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001194}
1195static void entry_vkCmdBindVertexBuffers(
1196 VkCommandBuffer commandBuffer,
1197 uint32_t firstBinding,
1198 uint32_t bindingCount,
1199 const VkBuffer* pBuffers,
1200 const VkDeviceSize* pOffsets)
1201{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001202 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001203 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001204 vkEnc->vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001205}
1206static void entry_vkCmdDraw(
1207 VkCommandBuffer commandBuffer,
1208 uint32_t vertexCount,
1209 uint32_t instanceCount,
1210 uint32_t firstVertex,
1211 uint32_t firstInstance)
1212{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001213 AEMU_SCOPED_TRACE("vkCmdDraw");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001214 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001215 vkEnc->vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001216}
1217static void entry_vkCmdDrawIndexed(
1218 VkCommandBuffer commandBuffer,
1219 uint32_t indexCount,
1220 uint32_t instanceCount,
1221 uint32_t firstIndex,
1222 int32_t vertexOffset,
1223 uint32_t firstInstance)
1224{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001225 AEMU_SCOPED_TRACE("vkCmdDrawIndexed");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001226 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001227 vkEnc->vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001228}
1229static void entry_vkCmdDrawIndirect(
1230 VkCommandBuffer commandBuffer,
1231 VkBuffer buffer,
1232 VkDeviceSize offset,
1233 uint32_t drawCount,
1234 uint32_t stride)
1235{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001236 AEMU_SCOPED_TRACE("vkCmdDrawIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001237 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001238 vkEnc->vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001239}
1240static void entry_vkCmdDrawIndexedIndirect(
1241 VkCommandBuffer commandBuffer,
1242 VkBuffer buffer,
1243 VkDeviceSize offset,
1244 uint32_t drawCount,
1245 uint32_t stride)
1246{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001247 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001248 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001249 vkEnc->vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001250}
1251static void entry_vkCmdDispatch(
1252 VkCommandBuffer commandBuffer,
1253 uint32_t groupCountX,
1254 uint32_t groupCountY,
1255 uint32_t groupCountZ)
1256{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001257 AEMU_SCOPED_TRACE("vkCmdDispatch");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001258 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001259 vkEnc->vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001260}
1261static void entry_vkCmdDispatchIndirect(
1262 VkCommandBuffer commandBuffer,
1263 VkBuffer buffer,
1264 VkDeviceSize offset)
1265{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001266 AEMU_SCOPED_TRACE("vkCmdDispatchIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001267 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001268 vkEnc->vkCmdDispatchIndirect(commandBuffer, buffer, offset, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001269}
1270static void entry_vkCmdCopyBuffer(
1271 VkCommandBuffer commandBuffer,
1272 VkBuffer srcBuffer,
1273 VkBuffer dstBuffer,
1274 uint32_t regionCount,
1275 const VkBufferCopy* pRegions)
1276{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001277 AEMU_SCOPED_TRACE("vkCmdCopyBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001278 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001279 vkEnc->vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001280}
1281static void entry_vkCmdCopyImage(
1282 VkCommandBuffer commandBuffer,
1283 VkImage srcImage,
1284 VkImageLayout srcImageLayout,
1285 VkImage dstImage,
1286 VkImageLayout dstImageLayout,
1287 uint32_t regionCount,
1288 const VkImageCopy* pRegions)
1289{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001290 AEMU_SCOPED_TRACE("vkCmdCopyImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001291 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001292 vkEnc->vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001293}
1294static void entry_vkCmdBlitImage(
1295 VkCommandBuffer commandBuffer,
1296 VkImage srcImage,
1297 VkImageLayout srcImageLayout,
1298 VkImage dstImage,
1299 VkImageLayout dstImageLayout,
1300 uint32_t regionCount,
1301 const VkImageBlit* pRegions,
1302 VkFilter filter)
1303{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001304 AEMU_SCOPED_TRACE("vkCmdBlitImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001305 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001306 vkEnc->vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001307}
1308static void entry_vkCmdCopyBufferToImage(
1309 VkCommandBuffer commandBuffer,
1310 VkBuffer srcBuffer,
1311 VkImage dstImage,
1312 VkImageLayout dstImageLayout,
1313 uint32_t regionCount,
1314 const VkBufferImageCopy* pRegions)
1315{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001316 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001317 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001318 vkEnc->vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001319}
1320static void entry_vkCmdCopyImageToBuffer(
1321 VkCommandBuffer commandBuffer,
1322 VkImage srcImage,
1323 VkImageLayout srcImageLayout,
1324 VkBuffer dstBuffer,
1325 uint32_t regionCount,
1326 const VkBufferImageCopy* pRegions)
1327{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001328 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001329 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001330 vkEnc->vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001331}
1332static void entry_vkCmdUpdateBuffer(
1333 VkCommandBuffer commandBuffer,
1334 VkBuffer dstBuffer,
1335 VkDeviceSize dstOffset,
1336 VkDeviceSize dataSize,
1337 const void* pData)
1338{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001339 AEMU_SCOPED_TRACE("vkCmdUpdateBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001340 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001341 vkEnc->vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001342}
1343static void entry_vkCmdFillBuffer(
1344 VkCommandBuffer commandBuffer,
1345 VkBuffer dstBuffer,
1346 VkDeviceSize dstOffset,
1347 VkDeviceSize size,
1348 uint32_t data)
1349{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001350 AEMU_SCOPED_TRACE("vkCmdFillBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001351 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001352 vkEnc->vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001353}
1354static void entry_vkCmdClearColorImage(
1355 VkCommandBuffer commandBuffer,
1356 VkImage image,
1357 VkImageLayout imageLayout,
1358 const VkClearColorValue* pColor,
1359 uint32_t rangeCount,
1360 const VkImageSubresourceRange* pRanges)
1361{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001362 AEMU_SCOPED_TRACE("vkCmdClearColorImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001363 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001364 vkEnc->vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001365}
1366static void entry_vkCmdClearDepthStencilImage(
1367 VkCommandBuffer commandBuffer,
1368 VkImage image,
1369 VkImageLayout imageLayout,
1370 const VkClearDepthStencilValue* pDepthStencil,
1371 uint32_t rangeCount,
1372 const VkImageSubresourceRange* pRanges)
1373{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001374 AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001375 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001376 vkEnc->vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001377}
1378static void entry_vkCmdClearAttachments(
1379 VkCommandBuffer commandBuffer,
1380 uint32_t attachmentCount,
1381 const VkClearAttachment* pAttachments,
1382 uint32_t rectCount,
1383 const VkClearRect* pRects)
1384{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001385 AEMU_SCOPED_TRACE("vkCmdClearAttachments");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001386 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001387 vkEnc->vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001388}
1389static void entry_vkCmdResolveImage(
1390 VkCommandBuffer commandBuffer,
1391 VkImage srcImage,
1392 VkImageLayout srcImageLayout,
1393 VkImage dstImage,
1394 VkImageLayout dstImageLayout,
1395 uint32_t regionCount,
1396 const VkImageResolve* pRegions)
1397{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001398 AEMU_SCOPED_TRACE("vkCmdResolveImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001399 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001400 vkEnc->vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001401}
1402static void entry_vkCmdSetEvent(
1403 VkCommandBuffer commandBuffer,
1404 VkEvent event,
1405 VkPipelineStageFlags stageMask)
1406{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001407 AEMU_SCOPED_TRACE("vkCmdSetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001408 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001409 vkEnc->vkCmdSetEvent(commandBuffer, event, stageMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001410}
1411static void entry_vkCmdResetEvent(
1412 VkCommandBuffer commandBuffer,
1413 VkEvent event,
1414 VkPipelineStageFlags stageMask)
1415{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001416 AEMU_SCOPED_TRACE("vkCmdResetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001417 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001418 vkEnc->vkCmdResetEvent(commandBuffer, event, stageMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001419}
1420static void entry_vkCmdWaitEvents(
1421 VkCommandBuffer commandBuffer,
1422 uint32_t eventCount,
1423 const VkEvent* pEvents,
1424 VkPipelineStageFlags srcStageMask,
1425 VkPipelineStageFlags dstStageMask,
1426 uint32_t memoryBarrierCount,
1427 const VkMemoryBarrier* pMemoryBarriers,
1428 uint32_t bufferMemoryBarrierCount,
1429 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1430 uint32_t imageMemoryBarrierCount,
1431 const VkImageMemoryBarrier* pImageMemoryBarriers)
1432{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001433 AEMU_SCOPED_TRACE("vkCmdWaitEvents");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001434 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001435 vkEnc->vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001436}
1437static void entry_vkCmdPipelineBarrier(
1438 VkCommandBuffer commandBuffer,
1439 VkPipelineStageFlags srcStageMask,
1440 VkPipelineStageFlags dstStageMask,
1441 VkDependencyFlags dependencyFlags,
1442 uint32_t memoryBarrierCount,
1443 const VkMemoryBarrier* pMemoryBarriers,
1444 uint32_t bufferMemoryBarrierCount,
1445 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1446 uint32_t imageMemoryBarrierCount,
1447 const VkImageMemoryBarrier* pImageMemoryBarriers)
1448{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001449 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001450 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001451 vkEnc->vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001452}
1453static void entry_vkCmdBeginQuery(
1454 VkCommandBuffer commandBuffer,
1455 VkQueryPool queryPool,
1456 uint32_t query,
1457 VkQueryControlFlags flags)
1458{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001459 AEMU_SCOPED_TRACE("vkCmdBeginQuery");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001460 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001461 vkEnc->vkCmdBeginQuery(commandBuffer, queryPool, query, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001462}
1463static void entry_vkCmdEndQuery(
1464 VkCommandBuffer commandBuffer,
1465 VkQueryPool queryPool,
1466 uint32_t query)
1467{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001468 AEMU_SCOPED_TRACE("vkCmdEndQuery");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001469 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001470 vkEnc->vkCmdEndQuery(commandBuffer, queryPool, query, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001471}
1472static void entry_vkCmdResetQueryPool(
1473 VkCommandBuffer commandBuffer,
1474 VkQueryPool queryPool,
1475 uint32_t firstQuery,
1476 uint32_t queryCount)
1477{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001478 AEMU_SCOPED_TRACE("vkCmdResetQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001479 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001480 vkEnc->vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001481}
1482static void entry_vkCmdWriteTimestamp(
1483 VkCommandBuffer commandBuffer,
1484 VkPipelineStageFlagBits pipelineStage,
1485 VkQueryPool queryPool,
1486 uint32_t query)
1487{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001488 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001489 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001490 vkEnc->vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001491}
1492static void entry_vkCmdCopyQueryPoolResults(
1493 VkCommandBuffer commandBuffer,
1494 VkQueryPool queryPool,
1495 uint32_t firstQuery,
1496 uint32_t queryCount,
1497 VkBuffer dstBuffer,
1498 VkDeviceSize dstOffset,
1499 VkDeviceSize stride,
1500 VkQueryResultFlags flags)
1501{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001502 AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001503 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001504 vkEnc->vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001505}
1506static void entry_vkCmdPushConstants(
1507 VkCommandBuffer commandBuffer,
1508 VkPipelineLayout layout,
1509 VkShaderStageFlags stageFlags,
1510 uint32_t offset,
1511 uint32_t size,
1512 const void* pValues)
1513{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001514 AEMU_SCOPED_TRACE("vkCmdPushConstants");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001515 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001516 vkEnc->vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001517}
1518static void entry_vkCmdBeginRenderPass(
1519 VkCommandBuffer commandBuffer,
1520 const VkRenderPassBeginInfo* pRenderPassBegin,
1521 VkSubpassContents contents)
1522{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001523 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001524 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001525 vkEnc->vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001526}
1527static void entry_vkCmdNextSubpass(
1528 VkCommandBuffer commandBuffer,
1529 VkSubpassContents contents)
1530{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001531 AEMU_SCOPED_TRACE("vkCmdNextSubpass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001532 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001533 vkEnc->vkCmdNextSubpass(commandBuffer, contents, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001534}
1535static void entry_vkCmdEndRenderPass(
1536 VkCommandBuffer commandBuffer)
1537{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001538 AEMU_SCOPED_TRACE("vkCmdEndRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001539 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001540 vkEnc->vkCmdEndRenderPass(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001541}
1542static void entry_vkCmdExecuteCommands(
1543 VkCommandBuffer commandBuffer,
1544 uint32_t commandBufferCount,
1545 const VkCommandBuffer* pCommandBuffers)
1546{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001547 AEMU_SCOPED_TRACE("vkCmdExecuteCommands");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001548 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1549 auto resources = ResourceTracker::get();
1550 resources->on_vkCmdExecuteCommands(vkEnc, commandBuffer, commandBufferCount, pCommandBuffers);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001551}
1552#endif
1553#ifdef VK_VERSION_1_1
1554static VkResult entry_vkEnumerateInstanceVersion(
1555 uint32_t* pApiVersion)
1556{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001557 AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001558 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001559 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001560 vkEnumerateInstanceVersion_VkResult_return = vkEnc->vkEnumerateInstanceVersion(pApiVersion, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001561 return vkEnumerateInstanceVersion_VkResult_return;
1562}
1563static VkResult entry_vkBindBufferMemory2(
1564 VkDevice device,
1565 uint32_t bindInfoCount,
1566 const VkBindBufferMemoryInfo* pBindInfos)
1567{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001568 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001569 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001570 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001571 auto resources = ResourceTracker::get();
1572 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001573 return vkBindBufferMemory2_VkResult_return;
1574}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001575static VkResult dynCheck_entry_vkBindBufferMemory2(
1576 VkDevice device,
1577 uint32_t bindInfoCount,
1578 const VkBindBufferMemoryInfo* pBindInfos)
1579{
1580 auto resources = ResourceTracker::get();
1581 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1582 {
1583 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2", "VK_VERSION_1_1");
1584 }
1585 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001586 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001587 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
1588 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1589 return vkBindBufferMemory2_VkResult_return;
1590}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001591static VkResult entry_vkBindImageMemory2(
1592 VkDevice device,
1593 uint32_t bindInfoCount,
1594 const VkBindImageMemoryInfo* pBindInfos)
1595{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001596 AEMU_SCOPED_TRACE("vkBindImageMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001597 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001598 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001599 auto resources = ResourceTracker::get();
1600 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001601 return vkBindImageMemory2_VkResult_return;
1602}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001603static VkResult dynCheck_entry_vkBindImageMemory2(
1604 VkDevice device,
1605 uint32_t bindInfoCount,
1606 const VkBindImageMemoryInfo* pBindInfos)
1607{
1608 auto resources = ResourceTracker::get();
1609 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1610 {
1611 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2", "VK_VERSION_1_1");
1612 }
1613 AEMU_SCOPED_TRACE("vkBindImageMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001614 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001615 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
1616 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1617 return vkBindImageMemory2_VkResult_return;
1618}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001619static void entry_vkGetDeviceGroupPeerMemoryFeatures(
1620 VkDevice device,
1621 uint32_t heapIndex,
1622 uint32_t localDeviceIndex,
1623 uint32_t remoteDeviceIndex,
1624 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1625{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001626 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001627 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001628 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001629}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001630static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures(
1631 VkDevice device,
1632 uint32_t heapIndex,
1633 uint32_t localDeviceIndex,
1634 uint32_t remoteDeviceIndex,
1635 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1636{
1637 auto resources = ResourceTracker::get();
1638 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1639 {
1640 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeatures", "VK_VERSION_1_1");
1641 }
1642 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001643 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001644 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001645}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001646static void entry_vkCmdSetDeviceMask(
1647 VkCommandBuffer commandBuffer,
1648 uint32_t deviceMask)
1649{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001650 AEMU_SCOPED_TRACE("vkCmdSetDeviceMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001651 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001652 vkEnc->vkCmdSetDeviceMask(commandBuffer, deviceMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001653}
1654static void entry_vkCmdDispatchBase(
1655 VkCommandBuffer commandBuffer,
1656 uint32_t baseGroupX,
1657 uint32_t baseGroupY,
1658 uint32_t baseGroupZ,
1659 uint32_t groupCountX,
1660 uint32_t groupCountY,
1661 uint32_t groupCountZ)
1662{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001663 AEMU_SCOPED_TRACE("vkCmdDispatchBase");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001664 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001665 vkEnc->vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001666}
1667static VkResult entry_vkEnumeratePhysicalDeviceGroups(
1668 VkInstance instance,
1669 uint32_t* pPhysicalDeviceGroupCount,
1670 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
1671{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001672 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001673 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001674 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001675 vkEnumeratePhysicalDeviceGroups_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001676 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
1677}
1678static void entry_vkGetImageMemoryRequirements2(
1679 VkDevice device,
1680 const VkImageMemoryRequirementsInfo2* pInfo,
1681 VkMemoryRequirements2* pMemoryRequirements)
1682{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001683 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001684 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001685 auto resources = ResourceTracker::get();
1686 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001687}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001688static void dynCheck_entry_vkGetImageMemoryRequirements2(
1689 VkDevice device,
1690 const VkImageMemoryRequirementsInfo2* pInfo,
1691 VkMemoryRequirements2* pMemoryRequirements)
1692{
1693 auto resources = ResourceTracker::get();
1694 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1695 {
1696 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2", "VK_VERSION_1_1");
1697 }
1698 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001699 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001700 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1701}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001702static void entry_vkGetBufferMemoryRequirements2(
1703 VkDevice device,
1704 const VkBufferMemoryRequirementsInfo2* pInfo,
1705 VkMemoryRequirements2* pMemoryRequirements)
1706{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001707 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001708 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001709 auto resources = ResourceTracker::get();
1710 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001711}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001712static void dynCheck_entry_vkGetBufferMemoryRequirements2(
1713 VkDevice device,
1714 const VkBufferMemoryRequirementsInfo2* pInfo,
1715 VkMemoryRequirements2* pMemoryRequirements)
1716{
1717 auto resources = ResourceTracker::get();
1718 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1719 {
1720 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2", "VK_VERSION_1_1");
1721 }
1722 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001723 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001724 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1725}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001726static void entry_vkGetImageSparseMemoryRequirements2(
1727 VkDevice device,
1728 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1729 uint32_t* pSparseMemoryRequirementCount,
1730 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1731{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001732 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001733 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001734 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001735}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001736static void dynCheck_entry_vkGetImageSparseMemoryRequirements2(
1737 VkDevice device,
1738 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1739 uint32_t* pSparseMemoryRequirementCount,
1740 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1741{
1742 auto resources = ResourceTracker::get();
1743 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1744 {
1745 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2", "VK_VERSION_1_1");
1746 }
1747 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001748 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001749 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001750}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001751static void entry_vkGetPhysicalDeviceFeatures2(
1752 VkPhysicalDevice physicalDevice,
1753 VkPhysicalDeviceFeatures2* pFeatures)
1754{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001755 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001756 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001757 vkEnc->vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001758}
1759static void entry_vkGetPhysicalDeviceProperties2(
1760 VkPhysicalDevice physicalDevice,
1761 VkPhysicalDeviceProperties2* pProperties)
1762{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001763 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001764 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001765 vkEnc->vkGetPhysicalDeviceProperties2(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001766}
1767static void entry_vkGetPhysicalDeviceFormatProperties2(
1768 VkPhysicalDevice physicalDevice,
1769 VkFormat format,
1770 VkFormatProperties2* pFormatProperties)
1771{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001772 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001773 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001774 vkEnc->vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001775}
1776static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2(
1777 VkPhysicalDevice physicalDevice,
1778 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
1779 VkImageFormatProperties2* pImageFormatProperties)
1780{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001781 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001782 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001783 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07001784 auto resources = ResourceTracker::get();
1785 vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001786 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
1787}
1788static void entry_vkGetPhysicalDeviceQueueFamilyProperties2(
1789 VkPhysicalDevice physicalDevice,
1790 uint32_t* pQueueFamilyPropertyCount,
1791 VkQueueFamilyProperties2* pQueueFamilyProperties)
1792{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001793 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001794 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001795 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001796}
1797static void entry_vkGetPhysicalDeviceMemoryProperties2(
1798 VkPhysicalDevice physicalDevice,
1799 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
1800{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001801 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001802 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001803 vkEnc->vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001804}
1805static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2(
1806 VkPhysicalDevice physicalDevice,
1807 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
1808 uint32_t* pPropertyCount,
1809 VkSparseImageFormatProperties2* pProperties)
1810{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001811 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001812 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001813 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001814}
1815static void entry_vkTrimCommandPool(
1816 VkDevice device,
1817 VkCommandPool commandPool,
1818 VkCommandPoolTrimFlags flags)
1819{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001820 AEMU_SCOPED_TRACE("vkTrimCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001821 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001822 vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001823}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001824static void dynCheck_entry_vkTrimCommandPool(
1825 VkDevice device,
1826 VkCommandPool commandPool,
1827 VkCommandPoolTrimFlags flags)
1828{
1829 auto resources = ResourceTracker::get();
1830 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1831 {
1832 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPool", "VK_VERSION_1_1");
1833 }
1834 AEMU_SCOPED_TRACE("vkTrimCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001835 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001836 vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001837}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001838static void entry_vkGetDeviceQueue2(
1839 VkDevice device,
1840 const VkDeviceQueueInfo2* pQueueInfo,
1841 VkQueue* pQueue)
1842{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001843 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001844 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001845 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001846}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001847static void dynCheck_entry_vkGetDeviceQueue2(
1848 VkDevice device,
1849 const VkDeviceQueueInfo2* pQueueInfo,
1850 VkQueue* pQueue)
1851{
1852 auto resources = ResourceTracker::get();
1853 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1854 {
1855 sOnInvalidDynamicallyCheckedCall("vkGetDeviceQueue2", "VK_VERSION_1_1");
1856 }
1857 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001858 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001859 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001860}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001861static VkResult entry_vkCreateSamplerYcbcrConversion(
1862 VkDevice device,
1863 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1864 const VkAllocationCallbacks* pAllocator,
1865 VkSamplerYcbcrConversion* pYcbcrConversion)
1866{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001867 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001868 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001869 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08001870 auto resources = ResourceTracker::get();
1871 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001872 return vkCreateSamplerYcbcrConversion_VkResult_return;
1873}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001874static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversion(
1875 VkDevice device,
1876 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1877 const VkAllocationCallbacks* pAllocator,
1878 VkSamplerYcbcrConversion* pYcbcrConversion)
1879{
1880 auto resources = ResourceTracker::get();
1881 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1882 {
1883 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversion", "VK_VERSION_1_1");
1884 }
1885 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001886 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001887 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
1888 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
1889 return vkCreateSamplerYcbcrConversion_VkResult_return;
1890}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001891static void entry_vkDestroySamplerYcbcrConversion(
1892 VkDevice device,
1893 VkSamplerYcbcrConversion ycbcrConversion,
1894 const VkAllocationCallbacks* pAllocator)
1895{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001896 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001897 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07001898 auto resources = ResourceTracker::get();
1899 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001900}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001901static void dynCheck_entry_vkDestroySamplerYcbcrConversion(
1902 VkDevice device,
1903 VkSamplerYcbcrConversion ycbcrConversion,
1904 const VkAllocationCallbacks* pAllocator)
1905{
1906 auto resources = ResourceTracker::get();
1907 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1908 {
1909 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversion", "VK_VERSION_1_1");
1910 }
1911 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001912 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001913 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
1914}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001915static VkResult entry_vkCreateDescriptorUpdateTemplate(
1916 VkDevice device,
1917 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1918 const VkAllocationCallbacks* pAllocator,
1919 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1920{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001921 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001922 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001923 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001924 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001925 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1926}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001927static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplate(
1928 VkDevice device,
1929 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1930 const VkAllocationCallbacks* pAllocator,
1931 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1932{
1933 auto resources = ResourceTracker::get();
1934 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1935 {
1936 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplate", "VK_VERSION_1_1");
1937 }
1938 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001939 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001940 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001941 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001942 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1943}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001944static void entry_vkDestroyDescriptorUpdateTemplate(
1945 VkDevice device,
1946 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1947 const VkAllocationCallbacks* pAllocator)
1948{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001949 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001950 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001951 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001952}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001953static void dynCheck_entry_vkDestroyDescriptorUpdateTemplate(
1954 VkDevice device,
1955 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1956 const VkAllocationCallbacks* pAllocator)
1957{
1958 auto resources = ResourceTracker::get();
1959 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1960 {
1961 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplate", "VK_VERSION_1_1");
1962 }
1963 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001964 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001965 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001966}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001967static void entry_vkUpdateDescriptorSetWithTemplate(
1968 VkDevice device,
1969 VkDescriptorSet descriptorSet,
1970 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1971 const void* pData)
1972{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001973 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001974 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07001975 auto resources = ResourceTracker::get();
1976 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001977}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001978static void dynCheck_entry_vkUpdateDescriptorSetWithTemplate(
1979 VkDevice device,
1980 VkDescriptorSet descriptorSet,
1981 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1982 const void* pData)
1983{
1984 auto resources = ResourceTracker::get();
1985 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1986 {
1987 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplate", "VK_VERSION_1_1");
1988 }
1989 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001990 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001991 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
1992}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001993static void entry_vkGetPhysicalDeviceExternalBufferProperties(
1994 VkPhysicalDevice physicalDevice,
1995 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
1996 VkExternalBufferProperties* pExternalBufferProperties)
1997{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001998 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001999 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002000 vkEnc->vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002001}
2002static void entry_vkGetPhysicalDeviceExternalFenceProperties(
2003 VkPhysicalDevice physicalDevice,
2004 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
2005 VkExternalFenceProperties* pExternalFenceProperties)
2006{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002007 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002008 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07002009 auto resources = ResourceTracker::get();
2010 resources->on_vkGetPhysicalDeviceExternalFenceProperties(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002011}
2012static void entry_vkGetPhysicalDeviceExternalSemaphoreProperties(
2013 VkPhysicalDevice physicalDevice,
2014 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2015 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
2016{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002017 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002018 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002019 vkEnc->vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002020}
2021static void entry_vkGetDescriptorSetLayoutSupport(
2022 VkDevice device,
2023 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2024 VkDescriptorSetLayoutSupport* pSupport)
2025{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002026 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002027 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002028 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002029}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002030static void dynCheck_entry_vkGetDescriptorSetLayoutSupport(
2031 VkDevice device,
2032 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2033 VkDescriptorSetLayoutSupport* pSupport)
2034{
2035 auto resources = ResourceTracker::get();
2036 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2037 {
2038 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupport", "VK_VERSION_1_1");
2039 }
2040 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002041 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002042 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002043}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002044#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08002045#ifdef VK_VERSION_1_2
2046static void entry_vkCmdDrawIndirectCount(
2047 VkCommandBuffer commandBuffer,
2048 VkBuffer buffer,
2049 VkDeviceSize offset,
2050 VkBuffer countBuffer,
2051 VkDeviceSize countBufferOffset,
2052 uint32_t maxDrawCount,
2053 uint32_t stride)
2054{
2055 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCount");
2056 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2057 vkEnc->vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
2058}
2059static void entry_vkCmdDrawIndexedIndirectCount(
2060 VkCommandBuffer commandBuffer,
2061 VkBuffer buffer,
2062 VkDeviceSize offset,
2063 VkBuffer countBuffer,
2064 VkDeviceSize countBufferOffset,
2065 uint32_t maxDrawCount,
2066 uint32_t stride)
2067{
2068 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCount");
2069 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2070 vkEnc->vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
2071}
2072static VkResult entry_vkCreateRenderPass2(
2073 VkDevice device,
2074 const VkRenderPassCreateInfo2* pCreateInfo,
2075 const VkAllocationCallbacks* pAllocator,
2076 VkRenderPass* pRenderPass)
2077{
2078 AEMU_SCOPED_TRACE("vkCreateRenderPass2");
2079 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2080 VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
2081 vkCreateRenderPass2_VkResult_return = vkEnc->vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
2082 return vkCreateRenderPass2_VkResult_return;
2083}
2084static VkResult dynCheck_entry_vkCreateRenderPass2(
2085 VkDevice device,
2086 const VkRenderPassCreateInfo2* pCreateInfo,
2087 const VkAllocationCallbacks* pAllocator,
2088 VkRenderPass* pRenderPass)
2089{
2090 auto resources = ResourceTracker::get();
2091 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2092 {
2093 sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2", "VK_VERSION_1_2");
2094 }
2095 AEMU_SCOPED_TRACE("vkCreateRenderPass2");
2096 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2097 VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
2098 vkCreateRenderPass2_VkResult_return = vkEnc->vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
2099 return vkCreateRenderPass2_VkResult_return;
2100}
2101static void entry_vkCmdBeginRenderPass2(
2102 VkCommandBuffer commandBuffer,
2103 const VkRenderPassBeginInfo* pRenderPassBegin,
2104 const VkSubpassBeginInfo* pSubpassBeginInfo)
2105{
2106 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2");
2107 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2108 vkEnc->vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
2109}
2110static void entry_vkCmdNextSubpass2(
2111 VkCommandBuffer commandBuffer,
2112 const VkSubpassBeginInfo* pSubpassBeginInfo,
2113 const VkSubpassEndInfo* pSubpassEndInfo)
2114{
2115 AEMU_SCOPED_TRACE("vkCmdNextSubpass2");
2116 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2117 vkEnc->vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
2118}
2119static void entry_vkCmdEndRenderPass2(
2120 VkCommandBuffer commandBuffer,
2121 const VkSubpassEndInfo* pSubpassEndInfo)
2122{
2123 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2");
2124 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2125 vkEnc->vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo, true /* do lock */);
2126}
2127static void entry_vkResetQueryPool(
2128 VkDevice device,
2129 VkQueryPool queryPool,
2130 uint32_t firstQuery,
2131 uint32_t queryCount)
2132{
2133 AEMU_SCOPED_TRACE("vkResetQueryPool");
2134 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2135 vkEnc->vkResetQueryPool(device, queryPool, firstQuery, queryCount, true /* do lock */);
2136}
2137static void dynCheck_entry_vkResetQueryPool(
2138 VkDevice device,
2139 VkQueryPool queryPool,
2140 uint32_t firstQuery,
2141 uint32_t queryCount)
2142{
2143 auto resources = ResourceTracker::get();
2144 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2145 {
2146 sOnInvalidDynamicallyCheckedCall("vkResetQueryPool", "VK_VERSION_1_2");
2147 }
2148 AEMU_SCOPED_TRACE("vkResetQueryPool");
2149 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2150 vkEnc->vkResetQueryPool(device, queryPool, firstQuery, queryCount, true /* do lock */);
2151}
2152static VkResult entry_vkGetSemaphoreCounterValue(
2153 VkDevice device,
2154 VkSemaphore semaphore,
2155 uint64_t* pValue)
2156{
2157 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValue");
2158 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2159 VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
2160 vkGetSemaphoreCounterValue_VkResult_return = vkEnc->vkGetSemaphoreCounterValue(device, semaphore, pValue, true /* do lock */);
2161 return vkGetSemaphoreCounterValue_VkResult_return;
2162}
2163static VkResult dynCheck_entry_vkGetSemaphoreCounterValue(
2164 VkDevice device,
2165 VkSemaphore semaphore,
2166 uint64_t* pValue)
2167{
2168 auto resources = ResourceTracker::get();
2169 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2170 {
2171 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreCounterValue", "VK_VERSION_1_2");
2172 }
2173 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValue");
2174 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2175 VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
2176 vkGetSemaphoreCounterValue_VkResult_return = vkEnc->vkGetSemaphoreCounterValue(device, semaphore, pValue, true /* do lock */);
2177 return vkGetSemaphoreCounterValue_VkResult_return;
2178}
2179static VkResult entry_vkWaitSemaphores(
2180 VkDevice device,
2181 const VkSemaphoreWaitInfo* pWaitInfo,
2182 uint64_t timeout)
2183{
2184 AEMU_SCOPED_TRACE("vkWaitSemaphores");
2185 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2186 VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
2187 vkWaitSemaphores_VkResult_return = vkEnc->vkWaitSemaphores(device, pWaitInfo, timeout, true /* do lock */);
2188 return vkWaitSemaphores_VkResult_return;
2189}
2190static VkResult dynCheck_entry_vkWaitSemaphores(
2191 VkDevice device,
2192 const VkSemaphoreWaitInfo* pWaitInfo,
2193 uint64_t timeout)
2194{
2195 auto resources = ResourceTracker::get();
2196 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2197 {
2198 sOnInvalidDynamicallyCheckedCall("vkWaitSemaphores", "VK_VERSION_1_2");
2199 }
2200 AEMU_SCOPED_TRACE("vkWaitSemaphores");
2201 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2202 VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
2203 vkWaitSemaphores_VkResult_return = vkEnc->vkWaitSemaphores(device, pWaitInfo, timeout, true /* do lock */);
2204 return vkWaitSemaphores_VkResult_return;
2205}
2206static VkResult entry_vkSignalSemaphore(
2207 VkDevice device,
2208 const VkSemaphoreSignalInfo* pSignalInfo)
2209{
2210 AEMU_SCOPED_TRACE("vkSignalSemaphore");
2211 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2212 VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
2213 vkSignalSemaphore_VkResult_return = vkEnc->vkSignalSemaphore(device, pSignalInfo, true /* do lock */);
2214 return vkSignalSemaphore_VkResult_return;
2215}
2216static VkResult dynCheck_entry_vkSignalSemaphore(
2217 VkDevice device,
2218 const VkSemaphoreSignalInfo* pSignalInfo)
2219{
2220 auto resources = ResourceTracker::get();
2221 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2222 {
2223 sOnInvalidDynamicallyCheckedCall("vkSignalSemaphore", "VK_VERSION_1_2");
2224 }
2225 AEMU_SCOPED_TRACE("vkSignalSemaphore");
2226 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2227 VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
2228 vkSignalSemaphore_VkResult_return = vkEnc->vkSignalSemaphore(device, pSignalInfo, true /* do lock */);
2229 return vkSignalSemaphore_VkResult_return;
2230}
2231static VkDeviceAddress entry_vkGetBufferDeviceAddress(
2232 VkDevice device,
2233 const VkBufferDeviceAddressInfo* pInfo)
2234{
2235 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddress");
2236 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2237 VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return = (VkDeviceAddress)0;
2238 vkGetBufferDeviceAddress_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddress(device, pInfo, true /* do lock */);
2239 return vkGetBufferDeviceAddress_VkDeviceAddress_return;
2240}
2241static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddress(
2242 VkDevice device,
2243 const VkBufferDeviceAddressInfo* pInfo)
2244{
2245 auto resources = ResourceTracker::get();
2246 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2247 {
2248 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddress", "VK_VERSION_1_2");
2249 }
2250 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddress");
2251 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2252 VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return = (VkDeviceAddress)0;
2253 vkGetBufferDeviceAddress_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddress(device, pInfo, true /* do lock */);
2254 return vkGetBufferDeviceAddress_VkDeviceAddress_return;
2255}
2256static uint64_t entry_vkGetBufferOpaqueCaptureAddress(
2257 VkDevice device,
2258 const VkBufferDeviceAddressInfo* pInfo)
2259{
2260 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddress");
2261 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2262 uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2263 vkGetBufferOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2264 return vkGetBufferOpaqueCaptureAddress_uint64_t_return;
2265}
2266static uint64_t dynCheck_entry_vkGetBufferOpaqueCaptureAddress(
2267 VkDevice device,
2268 const VkBufferDeviceAddressInfo* pInfo)
2269{
2270 auto resources = ResourceTracker::get();
2271 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2272 {
2273 sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureAddress", "VK_VERSION_1_2");
2274 }
2275 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddress");
2276 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2277 uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2278 vkGetBufferOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2279 return vkGetBufferOpaqueCaptureAddress_uint64_t_return;
2280}
2281static uint64_t entry_vkGetDeviceMemoryOpaqueCaptureAddress(
2282 VkDevice device,
2283 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
2284{
2285 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddress");
2286 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2287 uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2288 vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2289 return vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return;
2290}
2291static uint64_t dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress(
2292 VkDevice device,
2293 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
2294{
2295 auto resources = ResourceTracker::get();
2296 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2297 {
2298 sOnInvalidDynamicallyCheckedCall("vkGetDeviceMemoryOpaqueCaptureAddress", "VK_VERSION_1_2");
2299 }
2300 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddress");
2301 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2302 uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2303 vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2304 return vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return;
2305}
2306#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002307#ifdef VK_KHR_surface
2308static void entry_vkDestroySurfaceKHR(
2309 VkInstance instance,
2310 VkSurfaceKHR surface,
2311 const VkAllocationCallbacks* pAllocator)
2312{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002313 AEMU_SCOPED_TRACE("vkDestroySurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002314 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002315 vkEnc->vkDestroySurfaceKHR(instance, surface, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002316}
2317static VkResult entry_vkGetPhysicalDeviceSurfaceSupportKHR(
2318 VkPhysicalDevice physicalDevice,
2319 uint32_t queueFamilyIndex,
2320 VkSurfaceKHR surface,
2321 VkBool32* pSupported)
2322{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002323 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002324 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002325 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002326 vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002327 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
2328}
2329static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
2330 VkPhysicalDevice physicalDevice,
2331 VkSurfaceKHR surface,
2332 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
2333{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002334 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002335 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002336 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002337 vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002338 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
2339}
2340static VkResult entry_vkGetPhysicalDeviceSurfaceFormatsKHR(
2341 VkPhysicalDevice physicalDevice,
2342 VkSurfaceKHR surface,
2343 uint32_t* pSurfaceFormatCount,
2344 VkSurfaceFormatKHR* pSurfaceFormats)
2345{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002346 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002347 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002348 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002349 vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002350 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
2351}
2352static VkResult entry_vkGetPhysicalDeviceSurfacePresentModesKHR(
2353 VkPhysicalDevice physicalDevice,
2354 VkSurfaceKHR surface,
2355 uint32_t* pPresentModeCount,
2356 VkPresentModeKHR* pPresentModes)
2357{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002358 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002359 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002360 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002361 vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002362 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
2363}
2364#endif
2365#ifdef VK_KHR_swapchain
2366static VkResult entry_vkCreateSwapchainKHR(
2367 VkDevice device,
2368 const VkSwapchainCreateInfoKHR* pCreateInfo,
2369 const VkAllocationCallbacks* pAllocator,
2370 VkSwapchainKHR* pSwapchain)
2371{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002372 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002373 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002374 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002375 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002376 return vkCreateSwapchainKHR_VkResult_return;
2377}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002378static VkResult dynCheck_entry_vkCreateSwapchainKHR(
2379 VkDevice device,
2380 const VkSwapchainCreateInfoKHR* pCreateInfo,
2381 const VkAllocationCallbacks* pAllocator,
2382 VkSwapchainKHR* pSwapchain)
2383{
2384 auto resources = ResourceTracker::get();
2385 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2386 {
2387 sOnInvalidDynamicallyCheckedCall("vkCreateSwapchainKHR", "VK_KHR_swapchain");
2388 }
2389 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002390 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002391 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002392 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002393 return vkCreateSwapchainKHR_VkResult_return;
2394}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002395static void entry_vkDestroySwapchainKHR(
2396 VkDevice device,
2397 VkSwapchainKHR swapchain,
2398 const VkAllocationCallbacks* pAllocator)
2399{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002400 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002401 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002402 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002403}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002404static void dynCheck_entry_vkDestroySwapchainKHR(
2405 VkDevice device,
2406 VkSwapchainKHR swapchain,
2407 const VkAllocationCallbacks* pAllocator)
2408{
2409 auto resources = ResourceTracker::get();
2410 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2411 {
2412 sOnInvalidDynamicallyCheckedCall("vkDestroySwapchainKHR", "VK_KHR_swapchain");
2413 }
2414 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002415 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002416 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002417}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002418static VkResult entry_vkGetSwapchainImagesKHR(
2419 VkDevice device,
2420 VkSwapchainKHR swapchain,
2421 uint32_t* pSwapchainImageCount,
2422 VkImage* pSwapchainImages)
2423{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002424 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002425 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002426 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002427 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002428 return vkGetSwapchainImagesKHR_VkResult_return;
2429}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002430static VkResult dynCheck_entry_vkGetSwapchainImagesKHR(
2431 VkDevice device,
2432 VkSwapchainKHR swapchain,
2433 uint32_t* pSwapchainImageCount,
2434 VkImage* pSwapchainImages)
2435{
2436 auto resources = ResourceTracker::get();
2437 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2438 {
2439 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainImagesKHR", "VK_KHR_swapchain");
2440 }
2441 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002442 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002443 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002444 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002445 return vkGetSwapchainImagesKHR_VkResult_return;
2446}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002447static VkResult entry_vkAcquireNextImageKHR(
2448 VkDevice device,
2449 VkSwapchainKHR swapchain,
2450 uint64_t timeout,
2451 VkSemaphore semaphore,
2452 VkFence fence,
2453 uint32_t* pImageIndex)
2454{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002455 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002456 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002457 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002458 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002459 return vkAcquireNextImageKHR_VkResult_return;
2460}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002461static VkResult dynCheck_entry_vkAcquireNextImageKHR(
2462 VkDevice device,
2463 VkSwapchainKHR swapchain,
2464 uint64_t timeout,
2465 VkSemaphore semaphore,
2466 VkFence fence,
2467 uint32_t* pImageIndex)
2468{
2469 auto resources = ResourceTracker::get();
2470 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2471 {
2472 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImageKHR", "VK_KHR_swapchain");
2473 }
2474 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002475 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002476 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002477 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002478 return vkAcquireNextImageKHR_VkResult_return;
2479}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002480static VkResult entry_vkQueuePresentKHR(
2481 VkQueue queue,
2482 const VkPresentInfoKHR* pPresentInfo)
2483{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002484 AEMU_SCOPED_TRACE("vkQueuePresentKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002485 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002486 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002487 vkQueuePresentKHR_VkResult_return = vkEnc->vkQueuePresentKHR(queue, pPresentInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002488 return vkQueuePresentKHR_VkResult_return;
2489}
2490static VkResult entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2491 VkDevice device,
2492 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2493{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002494 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002495 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002496 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002497 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002498 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2499}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002500static VkResult dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2501 VkDevice device,
2502 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2503{
2504 auto resources = ResourceTracker::get();
2505 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2506 {
2507 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPresentCapabilitiesKHR", "VK_KHR_swapchain");
2508 }
2509 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002510 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002511 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002512 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002513 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2514}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002515static VkResult entry_vkGetDeviceGroupSurfacePresentModesKHR(
2516 VkDevice device,
2517 VkSurfaceKHR surface,
2518 VkDeviceGroupPresentModeFlagsKHR* pModes)
2519{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002520 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002521 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002522 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002523 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002524 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2525}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002526static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR(
2527 VkDevice device,
2528 VkSurfaceKHR surface,
2529 VkDeviceGroupPresentModeFlagsKHR* pModes)
2530{
2531 auto resources = ResourceTracker::get();
2532 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2533 {
2534 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModesKHR", "VK_KHR_swapchain");
2535 }
2536 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002537 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002538 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002539 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002540 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2541}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002542static VkResult entry_vkGetPhysicalDevicePresentRectanglesKHR(
2543 VkPhysicalDevice physicalDevice,
2544 VkSurfaceKHR surface,
2545 uint32_t* pRectCount,
2546 VkRect2D* pRects)
2547{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002548 AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002549 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002550 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002551 vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = vkEnc->vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002552 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
2553}
2554static VkResult entry_vkAcquireNextImage2KHR(
2555 VkDevice device,
2556 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2557 uint32_t* pImageIndex)
2558{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002559 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002560 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002561 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002562 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002563 return vkAcquireNextImage2KHR_VkResult_return;
2564}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002565static VkResult dynCheck_entry_vkAcquireNextImage2KHR(
2566 VkDevice device,
2567 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2568 uint32_t* pImageIndex)
2569{
2570 auto resources = ResourceTracker::get();
2571 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2572 {
2573 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImage2KHR", "VK_KHR_swapchain");
2574 }
2575 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002576 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002577 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002578 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002579 return vkAcquireNextImage2KHR_VkResult_return;
2580}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002581#endif
2582#ifdef VK_KHR_display
2583static VkResult entry_vkGetPhysicalDeviceDisplayPropertiesKHR(
2584 VkPhysicalDevice physicalDevice,
2585 uint32_t* pPropertyCount,
2586 VkDisplayPropertiesKHR* pProperties)
2587{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002588 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002589 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002590 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002591 vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002592 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
2593}
2594static VkResult entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
2595 VkPhysicalDevice physicalDevice,
2596 uint32_t* pPropertyCount,
2597 VkDisplayPlanePropertiesKHR* pProperties)
2598{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002599 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002600 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002601 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002602 vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002603 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
2604}
2605static VkResult entry_vkGetDisplayPlaneSupportedDisplaysKHR(
2606 VkPhysicalDevice physicalDevice,
2607 uint32_t planeIndex,
2608 uint32_t* pDisplayCount,
2609 VkDisplayKHR* pDisplays)
2610{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002611 AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002612 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002613 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002614 vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = vkEnc->vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002615 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
2616}
2617static VkResult entry_vkGetDisplayModePropertiesKHR(
2618 VkPhysicalDevice physicalDevice,
2619 VkDisplayKHR display,
2620 uint32_t* pPropertyCount,
2621 VkDisplayModePropertiesKHR* pProperties)
2622{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002623 AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002624 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002625 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002626 vkGetDisplayModePropertiesKHR_VkResult_return = vkEnc->vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002627 return vkGetDisplayModePropertiesKHR_VkResult_return;
2628}
2629static VkResult entry_vkCreateDisplayModeKHR(
2630 VkPhysicalDevice physicalDevice,
2631 VkDisplayKHR display,
2632 const VkDisplayModeCreateInfoKHR* pCreateInfo,
2633 const VkAllocationCallbacks* pAllocator,
2634 VkDisplayModeKHR* pMode)
2635{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002636 AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002637 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002638 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002639 vkCreateDisplayModeKHR_VkResult_return = vkEnc->vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002640 return vkCreateDisplayModeKHR_VkResult_return;
2641}
2642static VkResult entry_vkGetDisplayPlaneCapabilitiesKHR(
2643 VkPhysicalDevice physicalDevice,
2644 VkDisplayModeKHR mode,
2645 uint32_t planeIndex,
2646 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
2647{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002648 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002649 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002650 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002651 vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002652 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
2653}
2654static VkResult entry_vkCreateDisplayPlaneSurfaceKHR(
2655 VkInstance instance,
2656 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
2657 const VkAllocationCallbacks* pAllocator,
2658 VkSurfaceKHR* pSurface)
2659{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002660 AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002661 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002662 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002663 vkCreateDisplayPlaneSurfaceKHR_VkResult_return = vkEnc->vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002664 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
2665}
2666#endif
2667#ifdef VK_KHR_display_swapchain
2668static VkResult entry_vkCreateSharedSwapchainsKHR(
2669 VkDevice device,
2670 uint32_t swapchainCount,
2671 const VkSwapchainCreateInfoKHR* pCreateInfos,
2672 const VkAllocationCallbacks* pAllocator,
2673 VkSwapchainKHR* pSwapchains)
2674{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002675 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002676 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002677 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002678 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002679 return vkCreateSharedSwapchainsKHR_VkResult_return;
2680}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002681static VkResult dynCheck_entry_vkCreateSharedSwapchainsKHR(
2682 VkDevice device,
2683 uint32_t swapchainCount,
2684 const VkSwapchainCreateInfoKHR* pCreateInfos,
2685 const VkAllocationCallbacks* pAllocator,
2686 VkSwapchainKHR* pSwapchains)
2687{
2688 auto resources = ResourceTracker::get();
2689 if (!resources->hasDeviceExtension(device, "VK_KHR_display_swapchain"))
2690 {
2691 sOnInvalidDynamicallyCheckedCall("vkCreateSharedSwapchainsKHR", "VK_KHR_display_swapchain");
2692 }
2693 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002694 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002695 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002696 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002697 return vkCreateSharedSwapchainsKHR_VkResult_return;
2698}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002699#endif
2700#ifdef VK_KHR_xlib_surface
2701static VkResult entry_vkCreateXlibSurfaceKHR(
2702 VkInstance instance,
2703 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
2704 const VkAllocationCallbacks* pAllocator,
2705 VkSurfaceKHR* pSurface)
2706{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002707 AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002708 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002709 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002710 vkCreateXlibSurfaceKHR_VkResult_return = vkEnc->vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002711 return vkCreateXlibSurfaceKHR_VkResult_return;
2712}
2713static VkBool32 entry_vkGetPhysicalDeviceXlibPresentationSupportKHR(
2714 VkPhysicalDevice physicalDevice,
2715 uint32_t queueFamilyIndex,
2716 Display* dpy,
2717 VisualID visualID)
2718{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002719 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002720 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002721 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002722 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002723 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
2724}
2725#endif
2726#ifdef VK_KHR_xcb_surface
2727static VkResult entry_vkCreateXcbSurfaceKHR(
2728 VkInstance instance,
2729 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
2730 const VkAllocationCallbacks* pAllocator,
2731 VkSurfaceKHR* pSurface)
2732{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002733 AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002734 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002735 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002736 vkCreateXcbSurfaceKHR_VkResult_return = vkEnc->vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002737 return vkCreateXcbSurfaceKHR_VkResult_return;
2738}
2739static VkBool32 entry_vkGetPhysicalDeviceXcbPresentationSupportKHR(
2740 VkPhysicalDevice physicalDevice,
2741 uint32_t queueFamilyIndex,
2742 xcb_connection_t* connection,
2743 xcb_visualid_t visual_id)
2744{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002745 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002746 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002747 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002748 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002749 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
2750}
2751#endif
2752#ifdef VK_KHR_wayland_surface
2753static VkResult entry_vkCreateWaylandSurfaceKHR(
2754 VkInstance instance,
2755 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
2756 const VkAllocationCallbacks* pAllocator,
2757 VkSurfaceKHR* pSurface)
2758{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002759 AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002760 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002761 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002762 vkCreateWaylandSurfaceKHR_VkResult_return = vkEnc->vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002763 return vkCreateWaylandSurfaceKHR_VkResult_return;
2764}
2765static VkBool32 entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
2766 VkPhysicalDevice physicalDevice,
2767 uint32_t queueFamilyIndex,
2768 wl_display* display)
2769{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002770 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002771 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002772 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002773 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002774 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
2775}
2776#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002777#ifdef VK_KHR_android_surface
2778static VkResult entry_vkCreateAndroidSurfaceKHR(
2779 VkInstance instance,
2780 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
2781 const VkAllocationCallbacks* pAllocator,
2782 VkSurfaceKHR* pSurface)
2783{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002784 AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002785 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002786 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002787 vkCreateAndroidSurfaceKHR_VkResult_return = vkEnc->vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002788 return vkCreateAndroidSurfaceKHR_VkResult_return;
2789}
2790#endif
2791#ifdef VK_KHR_win32_surface
2792static VkResult entry_vkCreateWin32SurfaceKHR(
2793 VkInstance instance,
2794 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
2795 const VkAllocationCallbacks* pAllocator,
2796 VkSurfaceKHR* pSurface)
2797{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002798 AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002799 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002800 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002801 vkCreateWin32SurfaceKHR_VkResult_return = vkEnc->vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002802 return vkCreateWin32SurfaceKHR_VkResult_return;
2803}
2804static VkBool32 entry_vkGetPhysicalDeviceWin32PresentationSupportKHR(
2805 VkPhysicalDevice physicalDevice,
2806 uint32_t queueFamilyIndex)
2807{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002808 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002809 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002810 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002811 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002812 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
2813}
2814#endif
2815#ifdef VK_KHR_sampler_mirror_clamp_to_edge
2816#endif
Yilong Li353409a2022-01-04 02:37:56 -08002817#ifdef VK_KHR_video_queue
2818static VkResult entry_vkGetPhysicalDeviceVideoCapabilitiesKHR(
2819 VkPhysicalDevice physicalDevice,
2820 const VkVideoProfileKHR* pVideoProfile,
2821 VkVideoCapabilitiesKHR* pCapabilities)
2822{
2823 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceVideoCapabilitiesKHR");
2824 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2825 VkResult vkGetPhysicalDeviceVideoCapabilitiesKHR_VkResult_return = (VkResult)0;
2826 vkGetPhysicalDeviceVideoCapabilitiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, true /* do lock */);
2827 return vkGetPhysicalDeviceVideoCapabilitiesKHR_VkResult_return;
2828}
2829static VkResult entry_vkGetPhysicalDeviceVideoFormatPropertiesKHR(
2830 VkPhysicalDevice physicalDevice,
2831 const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo,
2832 uint32_t* pVideoFormatPropertyCount,
2833 VkVideoFormatPropertiesKHR* pVideoFormatProperties)
2834{
2835 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceVideoFormatPropertiesKHR");
2836 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2837 VkResult vkGetPhysicalDeviceVideoFormatPropertiesKHR_VkResult_return = (VkResult)0;
2838 vkGetPhysicalDeviceVideoFormatPropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, true /* do lock */);
2839 return vkGetPhysicalDeviceVideoFormatPropertiesKHR_VkResult_return;
2840}
2841static VkResult entry_vkCreateVideoSessionKHR(
2842 VkDevice device,
2843 const VkVideoSessionCreateInfoKHR* pCreateInfo,
2844 const VkAllocationCallbacks* pAllocator,
2845 VkVideoSessionKHR* pVideoSession)
2846{
2847 AEMU_SCOPED_TRACE("vkCreateVideoSessionKHR");
2848 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2849 VkResult vkCreateVideoSessionKHR_VkResult_return = (VkResult)0;
2850 vkCreateVideoSessionKHR_VkResult_return = vkEnc->vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, true /* do lock */);
2851 return vkCreateVideoSessionKHR_VkResult_return;
2852}
2853static VkResult dynCheck_entry_vkCreateVideoSessionKHR(
2854 VkDevice device,
2855 const VkVideoSessionCreateInfoKHR* pCreateInfo,
2856 const VkAllocationCallbacks* pAllocator,
2857 VkVideoSessionKHR* pVideoSession)
2858{
2859 auto resources = ResourceTracker::get();
2860 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
2861 {
2862 sOnInvalidDynamicallyCheckedCall("vkCreateVideoSessionKHR", "VK_KHR_video_queue");
2863 }
2864 AEMU_SCOPED_TRACE("vkCreateVideoSessionKHR");
2865 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2866 VkResult vkCreateVideoSessionKHR_VkResult_return = (VkResult)0;
2867 vkCreateVideoSessionKHR_VkResult_return = vkEnc->vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, true /* do lock */);
2868 return vkCreateVideoSessionKHR_VkResult_return;
2869}
2870static void entry_vkDestroyVideoSessionKHR(
2871 VkDevice device,
2872 VkVideoSessionKHR videoSession,
2873 const VkAllocationCallbacks* pAllocator)
2874{
2875 AEMU_SCOPED_TRACE("vkDestroyVideoSessionKHR");
2876 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2877 vkEnc->vkDestroyVideoSessionKHR(device, videoSession, pAllocator, true /* do lock */);
2878}
2879static void dynCheck_entry_vkDestroyVideoSessionKHR(
2880 VkDevice device,
2881 VkVideoSessionKHR videoSession,
2882 const VkAllocationCallbacks* pAllocator)
2883{
2884 auto resources = ResourceTracker::get();
2885 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
2886 {
2887 sOnInvalidDynamicallyCheckedCall("vkDestroyVideoSessionKHR", "VK_KHR_video_queue");
2888 }
2889 AEMU_SCOPED_TRACE("vkDestroyVideoSessionKHR");
2890 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2891 vkEnc->vkDestroyVideoSessionKHR(device, videoSession, pAllocator, true /* do lock */);
2892}
2893static VkResult entry_vkGetVideoSessionMemoryRequirementsKHR(
2894 VkDevice device,
2895 VkVideoSessionKHR videoSession,
2896 uint32_t* pVideoSessionMemoryRequirementsCount,
2897 VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements)
2898{
2899 AEMU_SCOPED_TRACE("vkGetVideoSessionMemoryRequirementsKHR");
2900 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2901 VkResult vkGetVideoSessionMemoryRequirementsKHR_VkResult_return = (VkResult)0;
2902 vkGetVideoSessionMemoryRequirementsKHR_VkResult_return = vkEnc->vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pVideoSessionMemoryRequirementsCount, pVideoSessionMemoryRequirements, true /* do lock */);
2903 return vkGetVideoSessionMemoryRequirementsKHR_VkResult_return;
2904}
2905static VkResult dynCheck_entry_vkGetVideoSessionMemoryRequirementsKHR(
2906 VkDevice device,
2907 VkVideoSessionKHR videoSession,
2908 uint32_t* pVideoSessionMemoryRequirementsCount,
2909 VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements)
2910{
2911 auto resources = ResourceTracker::get();
2912 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
2913 {
2914 sOnInvalidDynamicallyCheckedCall("vkGetVideoSessionMemoryRequirementsKHR", "VK_KHR_video_queue");
2915 }
2916 AEMU_SCOPED_TRACE("vkGetVideoSessionMemoryRequirementsKHR");
2917 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2918 VkResult vkGetVideoSessionMemoryRequirementsKHR_VkResult_return = (VkResult)0;
2919 vkGetVideoSessionMemoryRequirementsKHR_VkResult_return = vkEnc->vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pVideoSessionMemoryRequirementsCount, pVideoSessionMemoryRequirements, true /* do lock */);
2920 return vkGetVideoSessionMemoryRequirementsKHR_VkResult_return;
2921}
2922static VkResult entry_vkBindVideoSessionMemoryKHR(
2923 VkDevice device,
2924 VkVideoSessionKHR videoSession,
2925 uint32_t videoSessionBindMemoryCount,
2926 const VkVideoBindMemoryKHR* pVideoSessionBindMemories)
2927{
2928 AEMU_SCOPED_TRACE("vkBindVideoSessionMemoryKHR");
2929 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2930 VkResult vkBindVideoSessionMemoryKHR_VkResult_return = (VkResult)0;
2931 vkBindVideoSessionMemoryKHR_VkResult_return = vkEnc->vkBindVideoSessionMemoryKHR(device, videoSession, videoSessionBindMemoryCount, pVideoSessionBindMemories, true /* do lock */);
2932 return vkBindVideoSessionMemoryKHR_VkResult_return;
2933}
2934static VkResult dynCheck_entry_vkBindVideoSessionMemoryKHR(
2935 VkDevice device,
2936 VkVideoSessionKHR videoSession,
2937 uint32_t videoSessionBindMemoryCount,
2938 const VkVideoBindMemoryKHR* pVideoSessionBindMemories)
2939{
2940 auto resources = ResourceTracker::get();
2941 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
2942 {
2943 sOnInvalidDynamicallyCheckedCall("vkBindVideoSessionMemoryKHR", "VK_KHR_video_queue");
2944 }
2945 AEMU_SCOPED_TRACE("vkBindVideoSessionMemoryKHR");
2946 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2947 VkResult vkBindVideoSessionMemoryKHR_VkResult_return = (VkResult)0;
2948 vkBindVideoSessionMemoryKHR_VkResult_return = vkEnc->vkBindVideoSessionMemoryKHR(device, videoSession, videoSessionBindMemoryCount, pVideoSessionBindMemories, true /* do lock */);
2949 return vkBindVideoSessionMemoryKHR_VkResult_return;
2950}
2951static VkResult entry_vkCreateVideoSessionParametersKHR(
2952 VkDevice device,
2953 const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
2954 const VkAllocationCallbacks* pAllocator,
2955 VkVideoSessionParametersKHR* pVideoSessionParameters)
2956{
2957 AEMU_SCOPED_TRACE("vkCreateVideoSessionParametersKHR");
2958 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2959 VkResult vkCreateVideoSessionParametersKHR_VkResult_return = (VkResult)0;
2960 vkCreateVideoSessionParametersKHR_VkResult_return = vkEnc->vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, true /* do lock */);
2961 return vkCreateVideoSessionParametersKHR_VkResult_return;
2962}
2963static VkResult dynCheck_entry_vkCreateVideoSessionParametersKHR(
2964 VkDevice device,
2965 const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
2966 const VkAllocationCallbacks* pAllocator,
2967 VkVideoSessionParametersKHR* pVideoSessionParameters)
2968{
2969 auto resources = ResourceTracker::get();
2970 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
2971 {
2972 sOnInvalidDynamicallyCheckedCall("vkCreateVideoSessionParametersKHR", "VK_KHR_video_queue");
2973 }
2974 AEMU_SCOPED_TRACE("vkCreateVideoSessionParametersKHR");
2975 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2976 VkResult vkCreateVideoSessionParametersKHR_VkResult_return = (VkResult)0;
2977 vkCreateVideoSessionParametersKHR_VkResult_return = vkEnc->vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, true /* do lock */);
2978 return vkCreateVideoSessionParametersKHR_VkResult_return;
2979}
2980static VkResult entry_vkUpdateVideoSessionParametersKHR(
2981 VkDevice device,
2982 VkVideoSessionParametersKHR videoSessionParameters,
2983 const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo)
2984{
2985 AEMU_SCOPED_TRACE("vkUpdateVideoSessionParametersKHR");
2986 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2987 VkResult vkUpdateVideoSessionParametersKHR_VkResult_return = (VkResult)0;
2988 vkUpdateVideoSessionParametersKHR_VkResult_return = vkEnc->vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, true /* do lock */);
2989 return vkUpdateVideoSessionParametersKHR_VkResult_return;
2990}
2991static VkResult dynCheck_entry_vkUpdateVideoSessionParametersKHR(
2992 VkDevice device,
2993 VkVideoSessionParametersKHR videoSessionParameters,
2994 const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo)
2995{
2996 auto resources = ResourceTracker::get();
2997 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
2998 {
2999 sOnInvalidDynamicallyCheckedCall("vkUpdateVideoSessionParametersKHR", "VK_KHR_video_queue");
3000 }
3001 AEMU_SCOPED_TRACE("vkUpdateVideoSessionParametersKHR");
3002 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3003 VkResult vkUpdateVideoSessionParametersKHR_VkResult_return = (VkResult)0;
3004 vkUpdateVideoSessionParametersKHR_VkResult_return = vkEnc->vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, true /* do lock */);
3005 return vkUpdateVideoSessionParametersKHR_VkResult_return;
3006}
3007static void entry_vkDestroyVideoSessionParametersKHR(
3008 VkDevice device,
3009 VkVideoSessionParametersKHR videoSessionParameters,
3010 const VkAllocationCallbacks* pAllocator)
3011{
3012 AEMU_SCOPED_TRACE("vkDestroyVideoSessionParametersKHR");
3013 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3014 vkEnc->vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, true /* do lock */);
3015}
3016static void dynCheck_entry_vkDestroyVideoSessionParametersKHR(
3017 VkDevice device,
3018 VkVideoSessionParametersKHR videoSessionParameters,
3019 const VkAllocationCallbacks* pAllocator)
3020{
3021 auto resources = ResourceTracker::get();
3022 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
3023 {
3024 sOnInvalidDynamicallyCheckedCall("vkDestroyVideoSessionParametersKHR", "VK_KHR_video_queue");
3025 }
3026 AEMU_SCOPED_TRACE("vkDestroyVideoSessionParametersKHR");
3027 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3028 vkEnc->vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, true /* do lock */);
3029}
3030static void entry_vkCmdBeginVideoCodingKHR(
3031 VkCommandBuffer commandBuffer,
3032 const VkVideoBeginCodingInfoKHR* pBeginInfo)
3033{
3034 AEMU_SCOPED_TRACE("vkCmdBeginVideoCodingKHR");
3035 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3036 vkEnc->vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, true /* do lock */);
3037}
3038static void entry_vkCmdEndVideoCodingKHR(
3039 VkCommandBuffer commandBuffer,
3040 const VkVideoEndCodingInfoKHR* pEndCodingInfo)
3041{
3042 AEMU_SCOPED_TRACE("vkCmdEndVideoCodingKHR");
3043 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3044 vkEnc->vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, true /* do lock */);
3045}
3046static void entry_vkCmdControlVideoCodingKHR(
3047 VkCommandBuffer commandBuffer,
3048 const VkVideoCodingControlInfoKHR* pCodingControlInfo)
3049{
3050 AEMU_SCOPED_TRACE("vkCmdControlVideoCodingKHR");
3051 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3052 vkEnc->vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, true /* do lock */);
3053}
3054#endif
3055#ifdef VK_KHR_video_decode_queue
3056static void entry_vkCmdDecodeVideoKHR(
3057 VkCommandBuffer commandBuffer,
3058 const VkVideoDecodeInfoKHR* pFrameInfo)
3059{
3060 AEMU_SCOPED_TRACE("vkCmdDecodeVideoKHR");
3061 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3062 vkEnc->vkCmdDecodeVideoKHR(commandBuffer, pFrameInfo, true /* do lock */);
3063}
3064#endif
3065#ifdef VK_KHR_dynamic_rendering
3066static void entry_vkCmdBeginRenderingKHR(
3067 VkCommandBuffer commandBuffer,
3068 const VkRenderingInfoKHR* pRenderingInfo)
3069{
3070 AEMU_SCOPED_TRACE("vkCmdBeginRenderingKHR");
3071 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3072 vkEnc->vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, true /* do lock */);
3073}
3074static void entry_vkCmdEndRenderingKHR(
3075 VkCommandBuffer commandBuffer)
3076{
3077 AEMU_SCOPED_TRACE("vkCmdEndRenderingKHR");
3078 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3079 vkEnc->vkCmdEndRenderingKHR(commandBuffer, true /* do lock */);
3080}
3081#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003082#ifdef VK_KHR_multiview
3083#endif
3084#ifdef VK_KHR_get_physical_device_properties2
3085static void entry_vkGetPhysicalDeviceFeatures2KHR(
3086 VkPhysicalDevice physicalDevice,
3087 VkPhysicalDeviceFeatures2* pFeatures)
3088{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003089 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003090 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003091 vkEnc->vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003092}
3093static void entry_vkGetPhysicalDeviceProperties2KHR(
3094 VkPhysicalDevice physicalDevice,
3095 VkPhysicalDeviceProperties2* pProperties)
3096{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003097 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003098 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003099 vkEnc->vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003100}
3101static void entry_vkGetPhysicalDeviceFormatProperties2KHR(
3102 VkPhysicalDevice physicalDevice,
3103 VkFormat format,
3104 VkFormatProperties2* pFormatProperties)
3105{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003106 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003107 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003108 vkEnc->vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003109}
3110static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2KHR(
3111 VkPhysicalDevice physicalDevice,
3112 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
3113 VkImageFormatProperties2* pImageFormatProperties)
3114{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003115 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003116 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003117 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07003118 auto resources = ResourceTracker::get();
3119 vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2KHR(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003120 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
3121}
3122static void entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
3123 VkPhysicalDevice physicalDevice,
3124 uint32_t* pQueueFamilyPropertyCount,
3125 VkQueueFamilyProperties2* pQueueFamilyProperties)
3126{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003127 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003128 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003129 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003130}
3131static void entry_vkGetPhysicalDeviceMemoryProperties2KHR(
3132 VkPhysicalDevice physicalDevice,
3133 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
3134{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003135 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003136 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003137 vkEnc->vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003138}
3139static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
3140 VkPhysicalDevice physicalDevice,
3141 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
3142 uint32_t* pPropertyCount,
3143 VkSparseImageFormatProperties2* pProperties)
3144{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003145 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003146 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003147 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003148}
3149#endif
3150#ifdef VK_KHR_device_group
3151static void entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
3152 VkDevice device,
3153 uint32_t heapIndex,
3154 uint32_t localDeviceIndex,
3155 uint32_t remoteDeviceIndex,
3156 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
3157{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003158 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003159 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003160 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003161}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003162static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
3163 VkDevice device,
3164 uint32_t heapIndex,
3165 uint32_t localDeviceIndex,
3166 uint32_t remoteDeviceIndex,
3167 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
3168{
3169 auto resources = ResourceTracker::get();
3170 if (!resources->hasDeviceExtension(device, "VK_KHR_device_group"))
3171 {
3172 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeaturesKHR", "VK_KHR_device_group");
3173 }
3174 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003175 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003176 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003177}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003178static void entry_vkCmdSetDeviceMaskKHR(
3179 VkCommandBuffer commandBuffer,
3180 uint32_t deviceMask)
3181{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003182 AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003183 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003184 vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003185}
3186static void entry_vkCmdDispatchBaseKHR(
3187 VkCommandBuffer commandBuffer,
3188 uint32_t baseGroupX,
3189 uint32_t baseGroupY,
3190 uint32_t baseGroupZ,
3191 uint32_t groupCountX,
3192 uint32_t groupCountY,
3193 uint32_t groupCountZ)
3194{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003195 AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003196 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003197 vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003198}
3199#endif
3200#ifdef VK_KHR_shader_draw_parameters
3201#endif
3202#ifdef VK_KHR_maintenance1
3203static void entry_vkTrimCommandPoolKHR(
3204 VkDevice device,
3205 VkCommandPool commandPool,
3206 VkCommandPoolTrimFlags flags)
3207{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003208 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003209 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003210 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003211}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003212static void dynCheck_entry_vkTrimCommandPoolKHR(
3213 VkDevice device,
3214 VkCommandPool commandPool,
3215 VkCommandPoolTrimFlags flags)
3216{
3217 auto resources = ResourceTracker::get();
3218 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance1"))
3219 {
3220 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPoolKHR", "VK_KHR_maintenance1");
3221 }
3222 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003223 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003224 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003225}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003226#endif
3227#ifdef VK_KHR_device_group_creation
3228static VkResult entry_vkEnumeratePhysicalDeviceGroupsKHR(
3229 VkInstance instance,
3230 uint32_t* pPhysicalDeviceGroupCount,
3231 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
3232{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003233 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003234 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003235 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003236 vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003237 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
3238}
3239#endif
3240#ifdef VK_KHR_external_memory_capabilities
3241static void entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
3242 VkPhysicalDevice physicalDevice,
3243 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
3244 VkExternalBufferProperties* pExternalBufferProperties)
3245{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003246 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003247 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003248 vkEnc->vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003249}
3250#endif
3251#ifdef VK_KHR_external_memory
3252#endif
3253#ifdef VK_KHR_external_memory_win32
3254static VkResult entry_vkGetMemoryWin32HandleKHR(
3255 VkDevice device,
3256 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3257 HANDLE* pHandle)
3258{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003259 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003260 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003261 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003262 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003263 return vkGetMemoryWin32HandleKHR_VkResult_return;
3264}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003265static VkResult dynCheck_entry_vkGetMemoryWin32HandleKHR(
3266 VkDevice device,
3267 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3268 HANDLE* pHandle)
3269{
3270 auto resources = ResourceTracker::get();
3271 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
3272 {
3273 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleKHR", "VK_KHR_external_memory_win32");
3274 }
3275 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003276 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003277 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003278 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003279 return vkGetMemoryWin32HandleKHR_VkResult_return;
3280}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003281static VkResult entry_vkGetMemoryWin32HandlePropertiesKHR(
3282 VkDevice device,
3283 VkExternalMemoryHandleTypeFlagBits handleType,
3284 HANDLE handle,
3285 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
3286{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003287 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003288 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003289 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003290 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003291 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
3292}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003293static VkResult dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR(
3294 VkDevice device,
3295 VkExternalMemoryHandleTypeFlagBits handleType,
3296 HANDLE handle,
3297 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
3298{
3299 auto resources = ResourceTracker::get();
3300 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
3301 {
3302 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandlePropertiesKHR", "VK_KHR_external_memory_win32");
3303 }
3304 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003305 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003306 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003307 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003308 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
3309}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003310#endif
3311#ifdef VK_KHR_external_memory_fd
3312static VkResult entry_vkGetMemoryFdKHR(
3313 VkDevice device,
3314 const VkMemoryGetFdInfoKHR* pGetFdInfo,
3315 int* pFd)
3316{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003317 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003318 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003319 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003320 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003321 return vkGetMemoryFdKHR_VkResult_return;
3322}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003323static VkResult dynCheck_entry_vkGetMemoryFdKHR(
3324 VkDevice device,
3325 const VkMemoryGetFdInfoKHR* pGetFdInfo,
3326 int* pFd)
3327{
3328 auto resources = ResourceTracker::get();
3329 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
3330 {
3331 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdKHR", "VK_KHR_external_memory_fd");
3332 }
3333 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003334 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003335 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003336 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003337 return vkGetMemoryFdKHR_VkResult_return;
3338}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003339static VkResult entry_vkGetMemoryFdPropertiesKHR(
3340 VkDevice device,
3341 VkExternalMemoryHandleTypeFlagBits handleType,
3342 int fd,
3343 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
3344{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003345 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003346 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003347 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003348 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003349 return vkGetMemoryFdPropertiesKHR_VkResult_return;
3350}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003351static VkResult dynCheck_entry_vkGetMemoryFdPropertiesKHR(
3352 VkDevice device,
3353 VkExternalMemoryHandleTypeFlagBits handleType,
3354 int fd,
3355 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
3356{
3357 auto resources = ResourceTracker::get();
3358 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
3359 {
3360 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdPropertiesKHR", "VK_KHR_external_memory_fd");
3361 }
3362 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003363 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003364 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003365 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003366 return vkGetMemoryFdPropertiesKHR_VkResult_return;
3367}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003368#endif
3369#ifdef VK_KHR_win32_keyed_mutex
3370#endif
3371#ifdef VK_KHR_external_semaphore_capabilities
3372static void entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
3373 VkPhysicalDevice physicalDevice,
3374 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
3375 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
3376{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003377 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003378 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003379 vkEnc->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003380}
3381#endif
3382#ifdef VK_KHR_external_semaphore
3383#endif
3384#ifdef VK_KHR_external_semaphore_win32
3385static VkResult entry_vkImportSemaphoreWin32HandleKHR(
3386 VkDevice device,
3387 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
3388{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003389 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003390 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003391 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003392 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003393 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
3394}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003395static VkResult dynCheck_entry_vkImportSemaphoreWin32HandleKHR(
3396 VkDevice device,
3397 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
3398{
3399 auto resources = ResourceTracker::get();
3400 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
3401 {
3402 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
3403 }
3404 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003405 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003406 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003407 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003408 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
3409}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003410static VkResult entry_vkGetSemaphoreWin32HandleKHR(
3411 VkDevice device,
3412 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3413 HANDLE* pHandle)
3414{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003415 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003416 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003417 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003418 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003419 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
3420}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003421static VkResult dynCheck_entry_vkGetSemaphoreWin32HandleKHR(
3422 VkDevice device,
3423 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3424 HANDLE* pHandle)
3425{
3426 auto resources = ResourceTracker::get();
3427 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
3428 {
3429 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
3430 }
3431 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003432 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003433 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003434 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003435 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
3436}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003437#endif
3438#ifdef VK_KHR_external_semaphore_fd
3439static VkResult entry_vkImportSemaphoreFdKHR(
3440 VkDevice device,
3441 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
3442{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003443 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003444 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003445 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08003446 auto resources = ResourceTracker::get();
3447 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003448 return vkImportSemaphoreFdKHR_VkResult_return;
3449}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003450static VkResult dynCheck_entry_vkImportSemaphoreFdKHR(
3451 VkDevice device,
3452 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
3453{
3454 auto resources = ResourceTracker::get();
3455 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3456 {
3457 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3458 }
3459 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003460 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003461 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
3462 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
3463 return vkImportSemaphoreFdKHR_VkResult_return;
3464}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003465static VkResult entry_vkGetSemaphoreFdKHR(
3466 VkDevice device,
3467 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3468 int* pFd)
3469{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003470 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003471 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003472 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08003473 auto resources = ResourceTracker::get();
3474 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003475 return vkGetSemaphoreFdKHR_VkResult_return;
3476}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003477static VkResult dynCheck_entry_vkGetSemaphoreFdKHR(
3478 VkDevice device,
3479 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3480 int* pFd)
3481{
3482 auto resources = ResourceTracker::get();
3483 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3484 {
3485 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3486 }
3487 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003488 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003489 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
3490 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3491 return vkGetSemaphoreFdKHR_VkResult_return;
3492}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003493#endif
3494#ifdef VK_KHR_push_descriptor
3495static void entry_vkCmdPushDescriptorSetKHR(
3496 VkCommandBuffer commandBuffer,
3497 VkPipelineBindPoint pipelineBindPoint,
3498 VkPipelineLayout layout,
3499 uint32_t set,
3500 uint32_t descriptorWriteCount,
3501 const VkWriteDescriptorSet* pDescriptorWrites)
3502{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003503 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003504 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003505 vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003506}
3507static void entry_vkCmdPushDescriptorSetWithTemplateKHR(
3508 VkCommandBuffer commandBuffer,
3509 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3510 VkPipelineLayout layout,
3511 uint32_t set,
3512 const void* pData)
3513{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003514 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003515 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003516 vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003517}
3518#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003519#ifdef VK_KHR_shader_float16_int8
3520#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003521#ifdef VK_KHR_16bit_storage
3522#endif
3523#ifdef VK_KHR_incremental_present
3524#endif
3525#ifdef VK_KHR_descriptor_update_template
3526static VkResult entry_vkCreateDescriptorUpdateTemplateKHR(
3527 VkDevice device,
3528 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3529 const VkAllocationCallbacks* pAllocator,
3530 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3531{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003532 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003533 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003534 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003535 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003536 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3537}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003538static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR(
3539 VkDevice device,
3540 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3541 const VkAllocationCallbacks* pAllocator,
3542 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3543{
3544 auto resources = ResourceTracker::get();
3545 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3546 {
3547 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3548 }
3549 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003550 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003551 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003552 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003553 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3554}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003555static void entry_vkDestroyDescriptorUpdateTemplateKHR(
3556 VkDevice device,
3557 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3558 const VkAllocationCallbacks* pAllocator)
3559{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003560 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003561 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003562 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003563}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003564static void dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR(
3565 VkDevice device,
3566 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3567 const VkAllocationCallbacks* pAllocator)
3568{
3569 auto resources = ResourceTracker::get();
3570 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3571 {
3572 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3573 }
3574 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003575 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003576 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003577}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003578static void entry_vkUpdateDescriptorSetWithTemplateKHR(
3579 VkDevice device,
3580 VkDescriptorSet descriptorSet,
3581 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3582 const void* pData)
3583{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003584 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003585 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003586 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003587}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003588static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR(
3589 VkDevice device,
3590 VkDescriptorSet descriptorSet,
3591 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3592 const void* pData)
3593{
3594 auto resources = ResourceTracker::get();
3595 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3596 {
3597 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateKHR", "VK_KHR_descriptor_update_template");
3598 }
3599 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003600 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003601 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003602}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003603#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003604#ifdef VK_KHR_imageless_framebuffer
3605#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003606#ifdef VK_KHR_create_renderpass2
3607static VkResult entry_vkCreateRenderPass2KHR(
3608 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08003609 const VkRenderPassCreateInfo2* pCreateInfo,
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003610 const VkAllocationCallbacks* pAllocator,
3611 VkRenderPass* pRenderPass)
3612{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003613 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003614 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003615 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003616 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003617 return vkCreateRenderPass2KHR_VkResult_return;
3618}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003619static VkResult dynCheck_entry_vkCreateRenderPass2KHR(
3620 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08003621 const VkRenderPassCreateInfo2* pCreateInfo,
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003622 const VkAllocationCallbacks* pAllocator,
3623 VkRenderPass* pRenderPass)
3624{
3625 auto resources = ResourceTracker::get();
3626 if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"))
3627 {
3628 sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2KHR", "VK_KHR_create_renderpass2");
3629 }
3630 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003631 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003632 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003633 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003634 return vkCreateRenderPass2KHR_VkResult_return;
3635}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003636static void entry_vkCmdBeginRenderPass2KHR(
3637 VkCommandBuffer commandBuffer,
3638 const VkRenderPassBeginInfo* pRenderPassBegin,
Yilong Lia8d45f12021-02-07 02:30:21 -08003639 const VkSubpassBeginInfo* pSubpassBeginInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003640{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003641 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003642 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003643 vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003644}
3645static void entry_vkCmdNextSubpass2KHR(
3646 VkCommandBuffer commandBuffer,
Yilong Lia8d45f12021-02-07 02:30:21 -08003647 const VkSubpassBeginInfo* pSubpassBeginInfo,
3648 const VkSubpassEndInfo* pSubpassEndInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003649{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003650 AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003651 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003652 vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003653}
3654static void entry_vkCmdEndRenderPass2KHR(
3655 VkCommandBuffer commandBuffer,
Yilong Lia8d45f12021-02-07 02:30:21 -08003656 const VkSubpassEndInfo* pSubpassEndInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003657{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003658 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003659 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003660 vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003661}
3662#endif
3663#ifdef VK_KHR_shared_presentable_image
3664static VkResult entry_vkGetSwapchainStatusKHR(
3665 VkDevice device,
3666 VkSwapchainKHR swapchain)
3667{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003668 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003669 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003670 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003671 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003672 return vkGetSwapchainStatusKHR_VkResult_return;
3673}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003674static VkResult dynCheck_entry_vkGetSwapchainStatusKHR(
3675 VkDevice device,
3676 VkSwapchainKHR swapchain)
3677{
3678 auto resources = ResourceTracker::get();
3679 if (!resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image"))
3680 {
3681 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainStatusKHR", "VK_KHR_shared_presentable_image");
3682 }
3683 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003684 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003685 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003686 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003687 return vkGetSwapchainStatusKHR_VkResult_return;
3688}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003689#endif
3690#ifdef VK_KHR_external_fence_capabilities
3691static void entry_vkGetPhysicalDeviceExternalFencePropertiesKHR(
3692 VkPhysicalDevice physicalDevice,
3693 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
3694 VkExternalFenceProperties* pExternalFenceProperties)
3695{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003696 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003697 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003698 auto resources = ResourceTracker::get();
3699 resources->on_vkGetPhysicalDeviceExternalFencePropertiesKHR(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003700}
3701#endif
3702#ifdef VK_KHR_external_fence
3703#endif
3704#ifdef VK_KHR_external_fence_win32
3705static VkResult entry_vkImportFenceWin32HandleKHR(
3706 VkDevice device,
3707 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3708{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003709 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003710 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003711 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003712 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003713 return vkImportFenceWin32HandleKHR_VkResult_return;
3714}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003715static VkResult dynCheck_entry_vkImportFenceWin32HandleKHR(
3716 VkDevice device,
3717 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3718{
3719 auto resources = ResourceTracker::get();
3720 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3721 {
3722 sOnInvalidDynamicallyCheckedCall("vkImportFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3723 }
3724 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003725 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003726 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003727 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003728 return vkImportFenceWin32HandleKHR_VkResult_return;
3729}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003730static VkResult entry_vkGetFenceWin32HandleKHR(
3731 VkDevice device,
3732 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3733 HANDLE* pHandle)
3734{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003735 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003736 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003737 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003738 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003739 return vkGetFenceWin32HandleKHR_VkResult_return;
3740}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003741static VkResult dynCheck_entry_vkGetFenceWin32HandleKHR(
3742 VkDevice device,
3743 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3744 HANDLE* pHandle)
3745{
3746 auto resources = ResourceTracker::get();
3747 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3748 {
3749 sOnInvalidDynamicallyCheckedCall("vkGetFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3750 }
3751 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003752 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003753 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003754 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003755 return vkGetFenceWin32HandleKHR_VkResult_return;
3756}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003757#endif
3758#ifdef VK_KHR_external_fence_fd
3759static VkResult entry_vkImportFenceFdKHR(
3760 VkDevice device,
3761 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3762{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003763 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003764 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003765 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003766 auto resources = ResourceTracker::get();
3767 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003768 return vkImportFenceFdKHR_VkResult_return;
3769}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003770static VkResult dynCheck_entry_vkImportFenceFdKHR(
3771 VkDevice device,
3772 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3773{
3774 auto resources = ResourceTracker::get();
3775 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3776 {
3777 sOnInvalidDynamicallyCheckedCall("vkImportFenceFdKHR", "VK_KHR_external_fence_fd");
3778 }
3779 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003780 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003781 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
3782 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
3783 return vkImportFenceFdKHR_VkResult_return;
3784}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003785static VkResult entry_vkGetFenceFdKHR(
3786 VkDevice device,
3787 const VkFenceGetFdInfoKHR* pGetFdInfo,
3788 int* pFd)
3789{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003790 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003791 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003792 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003793 auto resources = ResourceTracker::get();
3794 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003795 return vkGetFenceFdKHR_VkResult_return;
3796}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003797static VkResult dynCheck_entry_vkGetFenceFdKHR(
3798 VkDevice device,
3799 const VkFenceGetFdInfoKHR* pGetFdInfo,
3800 int* pFd)
3801{
3802 auto resources = ResourceTracker::get();
3803 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3804 {
3805 sOnInvalidDynamicallyCheckedCall("vkGetFenceFdKHR", "VK_KHR_external_fence_fd");
3806 }
3807 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003808 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003809 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
3810 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3811 return vkGetFenceFdKHR_VkResult_return;
3812}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003813#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003814#ifdef VK_KHR_performance_query
3815static VkResult entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
3816 VkPhysicalDevice physicalDevice,
3817 uint32_t queueFamilyIndex,
3818 uint32_t* pCounterCount,
3819 VkPerformanceCounterKHR* pCounters,
3820 VkPerformanceCounterDescriptionKHR* pCounterDescriptions)
3821{
3822 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
3823 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3824 VkResult vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return = (VkResult)0;
3825 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, true /* do lock */);
3826 return vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return;
3827}
3828static void entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
3829 VkPhysicalDevice physicalDevice,
3830 const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo,
3831 uint32_t* pNumPasses)
3832{
3833 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
3834 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3835 vkEnc->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, true /* do lock */);
3836}
3837static VkResult entry_vkAcquireProfilingLockKHR(
3838 VkDevice device,
3839 const VkAcquireProfilingLockInfoKHR* pInfo)
3840{
3841 AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
3842 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3843 VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
3844 vkAcquireProfilingLockKHR_VkResult_return = vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
3845 return vkAcquireProfilingLockKHR_VkResult_return;
3846}
3847static VkResult dynCheck_entry_vkAcquireProfilingLockKHR(
3848 VkDevice device,
3849 const VkAcquireProfilingLockInfoKHR* pInfo)
3850{
3851 auto resources = ResourceTracker::get();
3852 if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query"))
3853 {
3854 sOnInvalidDynamicallyCheckedCall("vkAcquireProfilingLockKHR", "VK_KHR_performance_query");
3855 }
3856 AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
3857 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3858 VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
3859 vkAcquireProfilingLockKHR_VkResult_return = vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
3860 return vkAcquireProfilingLockKHR_VkResult_return;
3861}
3862static void entry_vkReleaseProfilingLockKHR(
3863 VkDevice device)
3864{
3865 AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
3866 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3867 vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
3868}
3869static void dynCheck_entry_vkReleaseProfilingLockKHR(
3870 VkDevice device)
3871{
3872 auto resources = ResourceTracker::get();
3873 if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query"))
3874 {
3875 sOnInvalidDynamicallyCheckedCall("vkReleaseProfilingLockKHR", "VK_KHR_performance_query");
3876 }
3877 AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
3878 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3879 vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
3880}
3881#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003882#ifdef VK_KHR_maintenance2
3883#endif
3884#ifdef VK_KHR_get_surface_capabilities2
3885static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
3886 VkPhysicalDevice physicalDevice,
3887 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3888 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
3889{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003890 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003891 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003892 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003893 vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003894 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
3895}
3896static VkResult entry_vkGetPhysicalDeviceSurfaceFormats2KHR(
3897 VkPhysicalDevice physicalDevice,
3898 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3899 uint32_t* pSurfaceFormatCount,
3900 VkSurfaceFormat2KHR* pSurfaceFormats)
3901{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003902 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003903 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003904 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003905 vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003906 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
3907}
3908#endif
3909#ifdef VK_KHR_variable_pointers
3910#endif
3911#ifdef VK_KHR_get_display_properties2
3912static VkResult entry_vkGetPhysicalDeviceDisplayProperties2KHR(
3913 VkPhysicalDevice physicalDevice,
3914 uint32_t* pPropertyCount,
3915 VkDisplayProperties2KHR* pProperties)
3916{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003917 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003918 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003919 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003920 vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003921 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
3922}
3923static VkResult entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
3924 VkPhysicalDevice physicalDevice,
3925 uint32_t* pPropertyCount,
3926 VkDisplayPlaneProperties2KHR* pProperties)
3927{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003928 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003929 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003930 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003931 vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003932 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
3933}
3934static VkResult entry_vkGetDisplayModeProperties2KHR(
3935 VkPhysicalDevice physicalDevice,
3936 VkDisplayKHR display,
3937 uint32_t* pPropertyCount,
3938 VkDisplayModeProperties2KHR* pProperties)
3939{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003940 AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003941 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003942 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003943 vkGetDisplayModeProperties2KHR_VkResult_return = vkEnc->vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003944 return vkGetDisplayModeProperties2KHR_VkResult_return;
3945}
3946static VkResult entry_vkGetDisplayPlaneCapabilities2KHR(
3947 VkPhysicalDevice physicalDevice,
3948 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
3949 VkDisplayPlaneCapabilities2KHR* pCapabilities)
3950{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003951 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003952 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003953 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003954 vkGetDisplayPlaneCapabilities2KHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003955 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
3956}
3957#endif
3958#ifdef VK_KHR_dedicated_allocation
3959#endif
3960#ifdef VK_KHR_storage_buffer_storage_class
3961#endif
3962#ifdef VK_KHR_relaxed_block_layout
3963#endif
3964#ifdef VK_KHR_get_memory_requirements2
3965static void entry_vkGetImageMemoryRequirements2KHR(
3966 VkDevice device,
3967 const VkImageMemoryRequirementsInfo2* pInfo,
3968 VkMemoryRequirements2* pMemoryRequirements)
3969{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003970 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003971 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003972 auto resources = ResourceTracker::get();
3973 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003974}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003975static void dynCheck_entry_vkGetImageMemoryRequirements2KHR(
3976 VkDevice device,
3977 const VkImageMemoryRequirementsInfo2* pInfo,
3978 VkMemoryRequirements2* pMemoryRequirements)
3979{
3980 auto resources = ResourceTracker::get();
3981 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3982 {
3983 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3984 }
3985 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003986 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003987 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3988}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003989static void entry_vkGetBufferMemoryRequirements2KHR(
3990 VkDevice device,
3991 const VkBufferMemoryRequirementsInfo2* pInfo,
3992 VkMemoryRequirements2* pMemoryRequirements)
3993{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003994 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003995 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003996 auto resources = ResourceTracker::get();
3997 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003998}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003999static void dynCheck_entry_vkGetBufferMemoryRequirements2KHR(
4000 VkDevice device,
4001 const VkBufferMemoryRequirementsInfo2* pInfo,
4002 VkMemoryRequirements2* pMemoryRequirements)
4003{
4004 auto resources = ResourceTracker::get();
4005 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
4006 {
4007 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
4008 }
4009 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004010 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004011 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
4012}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004013static void entry_vkGetImageSparseMemoryRequirements2KHR(
4014 VkDevice device,
4015 const VkImageSparseMemoryRequirementsInfo2* pInfo,
4016 uint32_t* pSparseMemoryRequirementCount,
4017 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
4018{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004019 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004020 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004021 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004022}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004023static void dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR(
4024 VkDevice device,
4025 const VkImageSparseMemoryRequirementsInfo2* pInfo,
4026 uint32_t* pSparseMemoryRequirementCount,
4027 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
4028{
4029 auto resources = ResourceTracker::get();
4030 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
4031 {
4032 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
4033 }
4034 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004035 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004036 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004037}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004038#endif
4039#ifdef VK_KHR_image_format_list
4040#endif
4041#ifdef VK_KHR_sampler_ycbcr_conversion
4042static VkResult entry_vkCreateSamplerYcbcrConversionKHR(
4043 VkDevice device,
4044 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
4045 const VkAllocationCallbacks* pAllocator,
4046 VkSamplerYcbcrConversion* pYcbcrConversion)
4047{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004048 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004049 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004050 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08004051 auto resources = ResourceTracker::get();
4052 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004053 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
4054}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004055static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversionKHR(
4056 VkDevice device,
4057 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
4058 const VkAllocationCallbacks* pAllocator,
4059 VkSamplerYcbcrConversion* pYcbcrConversion)
4060{
4061 auto resources = ResourceTracker::get();
4062 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
4063 {
4064 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
4065 }
4066 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004067 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004068 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
4069 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
4070 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
4071}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004072static void entry_vkDestroySamplerYcbcrConversionKHR(
4073 VkDevice device,
4074 VkSamplerYcbcrConversion ycbcrConversion,
4075 const VkAllocationCallbacks* pAllocator)
4076{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004077 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004078 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07004079 auto resources = ResourceTracker::get();
4080 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004081}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004082static void dynCheck_entry_vkDestroySamplerYcbcrConversionKHR(
4083 VkDevice device,
4084 VkSamplerYcbcrConversion ycbcrConversion,
4085 const VkAllocationCallbacks* pAllocator)
4086{
4087 auto resources = ResourceTracker::get();
4088 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
4089 {
4090 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
4091 }
4092 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004093 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004094 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
4095}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004096#endif
4097#ifdef VK_KHR_bind_memory2
4098static VkResult entry_vkBindBufferMemory2KHR(
4099 VkDevice device,
4100 uint32_t bindInfoCount,
4101 const VkBindBufferMemoryInfo* pBindInfos)
4102{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004103 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004104 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004105 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08004106 auto resources = ResourceTracker::get();
4107 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004108 return vkBindBufferMemory2KHR_VkResult_return;
4109}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004110static VkResult dynCheck_entry_vkBindBufferMemory2KHR(
4111 VkDevice device,
4112 uint32_t bindInfoCount,
4113 const VkBindBufferMemoryInfo* pBindInfos)
4114{
4115 auto resources = ResourceTracker::get();
4116 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
4117 {
4118 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2KHR", "VK_KHR_bind_memory2");
4119 }
4120 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004121 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004122 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
4123 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
4124 return vkBindBufferMemory2KHR_VkResult_return;
4125}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004126static VkResult entry_vkBindImageMemory2KHR(
4127 VkDevice device,
4128 uint32_t bindInfoCount,
4129 const VkBindImageMemoryInfo* pBindInfos)
4130{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004131 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004132 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004133 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08004134 auto resources = ResourceTracker::get();
4135 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004136 return vkBindImageMemory2KHR_VkResult_return;
4137}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004138static VkResult dynCheck_entry_vkBindImageMemory2KHR(
4139 VkDevice device,
4140 uint32_t bindInfoCount,
4141 const VkBindImageMemoryInfo* pBindInfos)
4142{
4143 auto resources = ResourceTracker::get();
4144 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
4145 {
4146 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2KHR", "VK_KHR_bind_memory2");
4147 }
4148 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004149 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004150 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
4151 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
4152 return vkBindImageMemory2KHR_VkResult_return;
4153}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004154#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004155#ifdef VK_KHR_portability_subset
4156#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004157#ifdef VK_KHR_maintenance3
4158static void entry_vkGetDescriptorSetLayoutSupportKHR(
4159 VkDevice device,
4160 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
4161 VkDescriptorSetLayoutSupport* pSupport)
4162{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004163 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004164 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004165 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004166}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004167static void dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR(
4168 VkDevice device,
4169 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
4170 VkDescriptorSetLayoutSupport* pSupport)
4171{
4172 auto resources = ResourceTracker::get();
4173 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance3"))
4174 {
4175 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupportKHR", "VK_KHR_maintenance3");
4176 }
4177 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004178 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004179 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004180}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004181#endif
4182#ifdef VK_KHR_draw_indirect_count
4183static void entry_vkCmdDrawIndirectCountKHR(
4184 VkCommandBuffer commandBuffer,
4185 VkBuffer buffer,
4186 VkDeviceSize offset,
4187 VkBuffer countBuffer,
4188 VkDeviceSize countBufferOffset,
4189 uint32_t maxDrawCount,
4190 uint32_t stride)
4191{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004192 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004193 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004194 vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004195}
4196static void entry_vkCmdDrawIndexedIndirectCountKHR(
4197 VkCommandBuffer commandBuffer,
4198 VkBuffer buffer,
4199 VkDeviceSize offset,
4200 VkBuffer countBuffer,
4201 VkDeviceSize countBufferOffset,
4202 uint32_t maxDrawCount,
4203 uint32_t stride)
4204{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004205 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004206 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004207 vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004208}
4209#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004210#ifdef VK_KHR_shader_subgroup_extended_types
4211#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004212#ifdef VK_KHR_8bit_storage
4213#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004214#ifdef VK_KHR_shader_atomic_int64
4215#endif
4216#ifdef VK_KHR_shader_clock
4217#endif
4218#ifdef VK_KHR_driver_properties
4219#endif
4220#ifdef VK_KHR_shader_float_controls
4221#endif
4222#ifdef VK_KHR_depth_stencil_resolve
4223#endif
4224#ifdef VK_KHR_swapchain_mutable_format
4225#endif
4226#ifdef VK_KHR_timeline_semaphore
4227static VkResult entry_vkGetSemaphoreCounterValueKHR(
4228 VkDevice device,
4229 VkSemaphore semaphore,
4230 uint64_t* pValue)
4231{
4232 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
4233 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4234 VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
4235 vkGetSemaphoreCounterValueKHR_VkResult_return = vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
4236 return vkGetSemaphoreCounterValueKHR_VkResult_return;
4237}
4238static VkResult dynCheck_entry_vkGetSemaphoreCounterValueKHR(
4239 VkDevice device,
4240 VkSemaphore semaphore,
4241 uint64_t* pValue)
4242{
4243 auto resources = ResourceTracker::get();
4244 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
4245 {
4246 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreCounterValueKHR", "VK_KHR_timeline_semaphore");
4247 }
4248 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
4249 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4250 VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
4251 vkGetSemaphoreCounterValueKHR_VkResult_return = vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
4252 return vkGetSemaphoreCounterValueKHR_VkResult_return;
4253}
4254static VkResult entry_vkWaitSemaphoresKHR(
4255 VkDevice device,
4256 const VkSemaphoreWaitInfo* pWaitInfo,
4257 uint64_t timeout)
4258{
4259 AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
4260 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4261 VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
4262 vkWaitSemaphoresKHR_VkResult_return = vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
4263 return vkWaitSemaphoresKHR_VkResult_return;
4264}
4265static VkResult dynCheck_entry_vkWaitSemaphoresKHR(
4266 VkDevice device,
4267 const VkSemaphoreWaitInfo* pWaitInfo,
4268 uint64_t timeout)
4269{
4270 auto resources = ResourceTracker::get();
4271 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
4272 {
4273 sOnInvalidDynamicallyCheckedCall("vkWaitSemaphoresKHR", "VK_KHR_timeline_semaphore");
4274 }
4275 AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
4276 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4277 VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
4278 vkWaitSemaphoresKHR_VkResult_return = vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
4279 return vkWaitSemaphoresKHR_VkResult_return;
4280}
4281static VkResult entry_vkSignalSemaphoreKHR(
4282 VkDevice device,
4283 const VkSemaphoreSignalInfo* pSignalInfo)
4284{
4285 AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
4286 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4287 VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
4288 vkSignalSemaphoreKHR_VkResult_return = vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
4289 return vkSignalSemaphoreKHR_VkResult_return;
4290}
4291static VkResult dynCheck_entry_vkSignalSemaphoreKHR(
4292 VkDevice device,
4293 const VkSemaphoreSignalInfo* pSignalInfo)
4294{
4295 auto resources = ResourceTracker::get();
4296 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
4297 {
4298 sOnInvalidDynamicallyCheckedCall("vkSignalSemaphoreKHR", "VK_KHR_timeline_semaphore");
4299 }
4300 AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
4301 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4302 VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
4303 vkSignalSemaphoreKHR_VkResult_return = vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
4304 return vkSignalSemaphoreKHR_VkResult_return;
4305}
4306#endif
4307#ifdef VK_KHR_vulkan_memory_model
4308#endif
4309#ifdef VK_KHR_shader_terminate_invocation
4310#endif
4311#ifdef VK_KHR_fragment_shading_rate
4312static VkResult entry_vkGetPhysicalDeviceFragmentShadingRatesKHR(
4313 VkPhysicalDevice physicalDevice,
4314 uint32_t* pFragmentShadingRateCount,
4315 VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates)
4316{
4317 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFragmentShadingRatesKHR");
4318 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4319 VkResult vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return = (VkResult)0;
4320 vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, true /* do lock */);
4321 return vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return;
4322}
4323static void entry_vkCmdSetFragmentShadingRateKHR(
4324 VkCommandBuffer commandBuffer,
4325 const VkExtent2D* pFragmentSize,
4326 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
4327{
4328 AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateKHR");
4329 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4330 vkEnc->vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, true /* do lock */);
4331}
4332#endif
4333#ifdef VK_KHR_spirv_1_4
4334#endif
4335#ifdef VK_KHR_surface_protected_capabilities
4336#endif
4337#ifdef VK_KHR_separate_depth_stencil_layouts
4338#endif
Yilong Li353409a2022-01-04 02:37:56 -08004339#ifdef VK_KHR_present_wait
4340static VkResult entry_vkWaitForPresentKHR(
4341 VkDevice device,
4342 VkSwapchainKHR swapchain,
4343 uint64_t presentId,
4344 uint64_t timeout)
4345{
4346 AEMU_SCOPED_TRACE("vkWaitForPresentKHR");
4347 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4348 VkResult vkWaitForPresentKHR_VkResult_return = (VkResult)0;
4349 vkWaitForPresentKHR_VkResult_return = vkEnc->vkWaitForPresentKHR(device, swapchain, presentId, timeout, true /* do lock */);
4350 return vkWaitForPresentKHR_VkResult_return;
4351}
4352static VkResult dynCheck_entry_vkWaitForPresentKHR(
4353 VkDevice device,
4354 VkSwapchainKHR swapchain,
4355 uint64_t presentId,
4356 uint64_t timeout)
4357{
4358 auto resources = ResourceTracker::get();
4359 if (!resources->hasDeviceExtension(device, "VK_KHR_present_wait"))
4360 {
4361 sOnInvalidDynamicallyCheckedCall("vkWaitForPresentKHR", "VK_KHR_present_wait");
4362 }
4363 AEMU_SCOPED_TRACE("vkWaitForPresentKHR");
4364 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4365 VkResult vkWaitForPresentKHR_VkResult_return = (VkResult)0;
4366 vkWaitForPresentKHR_VkResult_return = vkEnc->vkWaitForPresentKHR(device, swapchain, presentId, timeout, true /* do lock */);
4367 return vkWaitForPresentKHR_VkResult_return;
4368}
4369#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004370#ifdef VK_KHR_uniform_buffer_standard_layout
4371#endif
4372#ifdef VK_KHR_buffer_device_address
4373static VkDeviceAddress entry_vkGetBufferDeviceAddressKHR(
4374 VkDevice device,
4375 const VkBufferDeviceAddressInfo* pInfo)
4376{
4377 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
4378 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4379 VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
4380 vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
4381 return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
4382}
4383static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressKHR(
4384 VkDevice device,
4385 const VkBufferDeviceAddressInfo* pInfo)
4386{
4387 auto resources = ResourceTracker::get();
4388 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4389 {
4390 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressKHR", "VK_KHR_buffer_device_address");
4391 }
4392 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
4393 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4394 VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
4395 vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
4396 return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
4397}
4398static uint64_t entry_vkGetBufferOpaqueCaptureAddressKHR(
4399 VkDevice device,
4400 const VkBufferDeviceAddressInfo* pInfo)
4401{
4402 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
4403 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4404 uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4405 vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4406 return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
4407}
4408static uint64_t dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR(
4409 VkDevice device,
4410 const VkBufferDeviceAddressInfo* pInfo)
4411{
4412 auto resources = ResourceTracker::get();
4413 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4414 {
4415 sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureAddressKHR", "VK_KHR_buffer_device_address");
4416 }
4417 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
4418 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4419 uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4420 vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4421 return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
4422}
4423static uint64_t entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
4424 VkDevice device,
4425 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
4426{
4427 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
4428 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4429 uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4430 vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4431 return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
4432}
4433static uint64_t dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
4434 VkDevice device,
4435 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
4436{
4437 auto resources = ResourceTracker::get();
4438 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4439 {
4440 sOnInvalidDynamicallyCheckedCall("vkGetDeviceMemoryOpaqueCaptureAddressKHR", "VK_KHR_buffer_device_address");
4441 }
4442 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
4443 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4444 uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4445 vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4446 return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
4447}
4448#endif
4449#ifdef VK_KHR_deferred_host_operations
4450static VkResult entry_vkCreateDeferredOperationKHR(
4451 VkDevice device,
4452 const VkAllocationCallbacks* pAllocator,
4453 VkDeferredOperationKHR* pDeferredOperation)
4454{
4455 AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
4456 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4457 VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
4458 vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, true /* do lock */);
4459 return vkCreateDeferredOperationKHR_VkResult_return;
4460}
4461static VkResult dynCheck_entry_vkCreateDeferredOperationKHR(
4462 VkDevice device,
4463 const VkAllocationCallbacks* pAllocator,
4464 VkDeferredOperationKHR* pDeferredOperation)
4465{
4466 auto resources = ResourceTracker::get();
4467 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4468 {
4469 sOnInvalidDynamicallyCheckedCall("vkCreateDeferredOperationKHR", "VK_KHR_deferred_host_operations");
4470 }
4471 AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
4472 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4473 VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
4474 vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, true /* do lock */);
4475 return vkCreateDeferredOperationKHR_VkResult_return;
4476}
4477static void entry_vkDestroyDeferredOperationKHR(
4478 VkDevice device,
4479 VkDeferredOperationKHR operation,
4480 const VkAllocationCallbacks* pAllocator)
4481{
4482 AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
4483 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4484 vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
4485}
4486static void dynCheck_entry_vkDestroyDeferredOperationKHR(
4487 VkDevice device,
4488 VkDeferredOperationKHR operation,
4489 const VkAllocationCallbacks* pAllocator)
4490{
4491 auto resources = ResourceTracker::get();
4492 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4493 {
4494 sOnInvalidDynamicallyCheckedCall("vkDestroyDeferredOperationKHR", "VK_KHR_deferred_host_operations");
4495 }
4496 AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
4497 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4498 vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
4499}
4500static uint32_t entry_vkGetDeferredOperationMaxConcurrencyKHR(
4501 VkDevice device,
4502 VkDeferredOperationKHR operation)
4503{
4504 AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
4505 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4506 uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
4507 vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
4508 return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
4509}
4510static uint32_t dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR(
4511 VkDevice device,
4512 VkDeferredOperationKHR operation)
4513{
4514 auto resources = ResourceTracker::get();
4515 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4516 {
4517 sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationMaxConcurrencyKHR", "VK_KHR_deferred_host_operations");
4518 }
4519 AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
4520 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4521 uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
4522 vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
4523 return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
4524}
4525static VkResult entry_vkGetDeferredOperationResultKHR(
4526 VkDevice device,
4527 VkDeferredOperationKHR operation)
4528{
4529 AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
4530 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4531 VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
4532 vkGetDeferredOperationResultKHR_VkResult_return = vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
4533 return vkGetDeferredOperationResultKHR_VkResult_return;
4534}
4535static VkResult dynCheck_entry_vkGetDeferredOperationResultKHR(
4536 VkDevice device,
4537 VkDeferredOperationKHR operation)
4538{
4539 auto resources = ResourceTracker::get();
4540 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4541 {
4542 sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationResultKHR", "VK_KHR_deferred_host_operations");
4543 }
4544 AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
4545 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4546 VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
4547 vkGetDeferredOperationResultKHR_VkResult_return = vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
4548 return vkGetDeferredOperationResultKHR_VkResult_return;
4549}
4550static VkResult entry_vkDeferredOperationJoinKHR(
4551 VkDevice device,
4552 VkDeferredOperationKHR operation)
4553{
4554 AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
4555 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4556 VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
4557 vkDeferredOperationJoinKHR_VkResult_return = vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
4558 return vkDeferredOperationJoinKHR_VkResult_return;
4559}
4560static VkResult dynCheck_entry_vkDeferredOperationJoinKHR(
4561 VkDevice device,
4562 VkDeferredOperationKHR operation)
4563{
4564 auto resources = ResourceTracker::get();
4565 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4566 {
4567 sOnInvalidDynamicallyCheckedCall("vkDeferredOperationJoinKHR", "VK_KHR_deferred_host_operations");
4568 }
4569 AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
4570 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4571 VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
4572 vkDeferredOperationJoinKHR_VkResult_return = vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
4573 return vkDeferredOperationJoinKHR_VkResult_return;
4574}
4575#endif
4576#ifdef VK_KHR_pipeline_executable_properties
4577static VkResult entry_vkGetPipelineExecutablePropertiesKHR(
4578 VkDevice device,
4579 const VkPipelineInfoKHR* pPipelineInfo,
4580 uint32_t* pExecutableCount,
4581 VkPipelineExecutablePropertiesKHR* pProperties)
4582{
4583 AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
4584 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4585 VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
4586 vkGetPipelineExecutablePropertiesKHR_VkResult_return = vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, true /* do lock */);
4587 return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
4588}
4589static VkResult dynCheck_entry_vkGetPipelineExecutablePropertiesKHR(
4590 VkDevice device,
4591 const VkPipelineInfoKHR* pPipelineInfo,
4592 uint32_t* pExecutableCount,
4593 VkPipelineExecutablePropertiesKHR* pProperties)
4594{
4595 auto resources = ResourceTracker::get();
4596 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4597 {
4598 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutablePropertiesKHR", "VK_KHR_pipeline_executable_properties");
4599 }
4600 AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
4601 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4602 VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
4603 vkGetPipelineExecutablePropertiesKHR_VkResult_return = vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, true /* do lock */);
4604 return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
4605}
4606static VkResult entry_vkGetPipelineExecutableStatisticsKHR(
4607 VkDevice device,
4608 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4609 uint32_t* pStatisticCount,
4610 VkPipelineExecutableStatisticKHR* pStatistics)
4611{
4612 AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
4613 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4614 VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
4615 vkGetPipelineExecutableStatisticsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, true /* do lock */);
4616 return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
4617}
4618static VkResult dynCheck_entry_vkGetPipelineExecutableStatisticsKHR(
4619 VkDevice device,
4620 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4621 uint32_t* pStatisticCount,
4622 VkPipelineExecutableStatisticKHR* pStatistics)
4623{
4624 auto resources = ResourceTracker::get();
4625 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4626 {
4627 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableStatisticsKHR", "VK_KHR_pipeline_executable_properties");
4628 }
4629 AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
4630 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4631 VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
4632 vkGetPipelineExecutableStatisticsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, true /* do lock */);
4633 return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
4634}
4635static VkResult entry_vkGetPipelineExecutableInternalRepresentationsKHR(
4636 VkDevice device,
4637 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4638 uint32_t* pInternalRepresentationCount,
4639 VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
4640{
4641 AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
4642 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4643 VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
4644 vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, true /* do lock */);
4645 return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
4646}
4647static VkResult dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR(
4648 VkDevice device,
4649 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4650 uint32_t* pInternalRepresentationCount,
4651 VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
4652{
4653 auto resources = ResourceTracker::get();
4654 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4655 {
4656 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableInternalRepresentationsKHR", "VK_KHR_pipeline_executable_properties");
4657 }
4658 AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
4659 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4660 VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
4661 vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, true /* do lock */);
4662 return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
4663}
4664#endif
Yilong Li353409a2022-01-04 02:37:56 -08004665#ifdef VK_KHR_shader_integer_dot_product
4666#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004667#ifdef VK_KHR_pipeline_library
4668#endif
4669#ifdef VK_KHR_shader_non_semantic_info
4670#endif
Yilong Li353409a2022-01-04 02:37:56 -08004671#ifdef VK_KHR_present_id
4672#endif
4673#ifdef VK_KHR_video_encode_queue
4674static void entry_vkCmdEncodeVideoKHR(
4675 VkCommandBuffer commandBuffer,
4676 const VkVideoEncodeInfoKHR* pEncodeInfo)
4677{
4678 AEMU_SCOPED_TRACE("vkCmdEncodeVideoKHR");
4679 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4680 vkEnc->vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, true /* do lock */);
4681}
4682#endif
4683#ifdef VK_KHR_synchronization2
4684static void entry_vkCmdSetEvent2KHR(
4685 VkCommandBuffer commandBuffer,
4686 VkEvent event,
4687 const VkDependencyInfoKHR* pDependencyInfo)
4688{
4689 AEMU_SCOPED_TRACE("vkCmdSetEvent2KHR");
4690 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4691 vkEnc->vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, true /* do lock */);
4692}
4693static void entry_vkCmdResetEvent2KHR(
4694 VkCommandBuffer commandBuffer,
4695 VkEvent event,
4696 VkPipelineStageFlags2KHR stageMask)
4697{
4698 AEMU_SCOPED_TRACE("vkCmdResetEvent2KHR");
4699 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4700 vkEnc->vkCmdResetEvent2KHR(commandBuffer, event, stageMask, true /* do lock */);
4701}
4702static void entry_vkCmdWaitEvents2KHR(
4703 VkCommandBuffer commandBuffer,
4704 uint32_t eventCount,
4705 const VkEvent* pEvents,
4706 const VkDependencyInfoKHR* pDependencyInfos)
4707{
4708 AEMU_SCOPED_TRACE("vkCmdWaitEvents2KHR");
4709 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4710 vkEnc->vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, true /* do lock */);
4711}
4712static void entry_vkCmdPipelineBarrier2KHR(
4713 VkCommandBuffer commandBuffer,
4714 const VkDependencyInfoKHR* pDependencyInfo)
4715{
4716 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier2KHR");
4717 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4718 vkEnc->vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, true /* do lock */);
4719}
4720static void entry_vkCmdWriteTimestamp2KHR(
4721 VkCommandBuffer commandBuffer,
4722 VkPipelineStageFlags2KHR stage,
4723 VkQueryPool queryPool,
4724 uint32_t query)
4725{
4726 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp2KHR");
4727 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4728 vkEnc->vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, true /* do lock */);
4729}
4730static VkResult entry_vkQueueSubmit2KHR(
4731 VkQueue queue,
4732 uint32_t submitCount,
4733 const VkSubmitInfo2KHR* pSubmits,
4734 VkFence fence)
4735{
4736 AEMU_SCOPED_TRACE("vkQueueSubmit2KHR");
4737 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
4738 VkResult vkQueueSubmit2KHR_VkResult_return = (VkResult)0;
4739 vkQueueSubmit2KHR_VkResult_return = vkEnc->vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, true /* do lock */);
4740 return vkQueueSubmit2KHR_VkResult_return;
4741}
4742static void entry_vkCmdWriteBufferMarker2AMD(
4743 VkCommandBuffer commandBuffer,
4744 VkPipelineStageFlags2KHR stage,
4745 VkBuffer dstBuffer,
4746 VkDeviceSize dstOffset,
4747 uint32_t marker)
4748{
4749 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarker2AMD");
4750 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4751 vkEnc->vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, true /* do lock */);
4752}
4753static void entry_vkGetQueueCheckpointData2NV(
4754 VkQueue queue,
4755 uint32_t* pCheckpointDataCount,
4756 VkCheckpointData2NV* pCheckpointData)
4757{
4758 AEMU_SCOPED_TRACE("vkGetQueueCheckpointData2NV");
4759 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
4760 vkEnc->vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, true /* do lock */);
4761}
4762#endif
4763#ifdef VK_KHR_shader_subgroup_uniform_control_flow
4764#endif
4765#ifdef VK_KHR_zero_initialize_workgroup_memory
4766#endif
4767#ifdef VK_KHR_workgroup_memory_explicit_layout
4768#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004769#ifdef VK_KHR_copy_commands2
4770static void entry_vkCmdCopyBuffer2KHR(
4771 VkCommandBuffer commandBuffer,
4772 const VkCopyBufferInfo2KHR* pCopyBufferInfo)
4773{
4774 AEMU_SCOPED_TRACE("vkCmdCopyBuffer2KHR");
4775 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4776 vkEnc->vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, true /* do lock */);
4777}
4778static void entry_vkCmdCopyImage2KHR(
4779 VkCommandBuffer commandBuffer,
4780 const VkCopyImageInfo2KHR* pCopyImageInfo)
4781{
4782 AEMU_SCOPED_TRACE("vkCmdCopyImage2KHR");
4783 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4784 vkEnc->vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, true /* do lock */);
4785}
4786static void entry_vkCmdCopyBufferToImage2KHR(
4787 VkCommandBuffer commandBuffer,
4788 const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo)
4789{
4790 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage2KHR");
4791 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4792 vkEnc->vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, true /* do lock */);
4793}
4794static void entry_vkCmdCopyImageToBuffer2KHR(
4795 VkCommandBuffer commandBuffer,
4796 const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo)
4797{
4798 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer2KHR");
4799 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4800 vkEnc->vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, true /* do lock */);
4801}
4802static void entry_vkCmdBlitImage2KHR(
4803 VkCommandBuffer commandBuffer,
4804 const VkBlitImageInfo2KHR* pBlitImageInfo)
4805{
4806 AEMU_SCOPED_TRACE("vkCmdBlitImage2KHR");
4807 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4808 vkEnc->vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, true /* do lock */);
4809}
4810static void entry_vkCmdResolveImage2KHR(
4811 VkCommandBuffer commandBuffer,
4812 const VkResolveImageInfo2KHR* pResolveImageInfo)
4813{
4814 AEMU_SCOPED_TRACE("vkCmdResolveImage2KHR");
4815 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4816 vkEnc->vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, true /* do lock */);
4817}
Lingfeng Yang4c056b22020-07-02 11:43:57 -07004818#endif
Yilong Li353409a2022-01-04 02:37:56 -08004819#ifdef VK_KHR_format_feature_flags2
4820#endif
4821#ifdef VK_KHR_maintenance4
4822static void entry_vkGetDeviceBufferMemoryRequirementsKHR(
4823 VkDevice device,
4824 const VkDeviceBufferMemoryRequirementsKHR* pInfo,
4825 VkMemoryRequirements2* pMemoryRequirements)
4826{
4827 AEMU_SCOPED_TRACE("vkGetDeviceBufferMemoryRequirementsKHR");
4828 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4829 vkEnc->vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, true /* do lock */);
4830}
4831static void dynCheck_entry_vkGetDeviceBufferMemoryRequirementsKHR(
4832 VkDevice device,
4833 const VkDeviceBufferMemoryRequirementsKHR* pInfo,
4834 VkMemoryRequirements2* pMemoryRequirements)
4835{
4836 auto resources = ResourceTracker::get();
4837 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance4"))
4838 {
4839 sOnInvalidDynamicallyCheckedCall("vkGetDeviceBufferMemoryRequirementsKHR", "VK_KHR_maintenance4");
4840 }
4841 AEMU_SCOPED_TRACE("vkGetDeviceBufferMemoryRequirementsKHR");
4842 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4843 vkEnc->vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, true /* do lock */);
4844}
4845static void entry_vkGetDeviceImageMemoryRequirementsKHR(
4846 VkDevice device,
4847 const VkDeviceImageMemoryRequirementsKHR* pInfo,
4848 VkMemoryRequirements2* pMemoryRequirements)
4849{
4850 AEMU_SCOPED_TRACE("vkGetDeviceImageMemoryRequirementsKHR");
4851 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4852 vkEnc->vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, true /* do lock */);
4853}
4854static void dynCheck_entry_vkGetDeviceImageMemoryRequirementsKHR(
4855 VkDevice device,
4856 const VkDeviceImageMemoryRequirementsKHR* pInfo,
4857 VkMemoryRequirements2* pMemoryRequirements)
4858{
4859 auto resources = ResourceTracker::get();
4860 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance4"))
4861 {
4862 sOnInvalidDynamicallyCheckedCall("vkGetDeviceImageMemoryRequirementsKHR", "VK_KHR_maintenance4");
4863 }
4864 AEMU_SCOPED_TRACE("vkGetDeviceImageMemoryRequirementsKHR");
4865 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4866 vkEnc->vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, true /* do lock */);
4867}
4868static void entry_vkGetDeviceImageSparseMemoryRequirementsKHR(
4869 VkDevice device,
4870 const VkDeviceImageMemoryRequirementsKHR* pInfo,
4871 uint32_t* pSparseMemoryRequirementCount,
4872 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
4873{
4874 AEMU_SCOPED_TRACE("vkGetDeviceImageSparseMemoryRequirementsKHR");
4875 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4876 vkEnc->vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
4877}
4878static void dynCheck_entry_vkGetDeviceImageSparseMemoryRequirementsKHR(
4879 VkDevice device,
4880 const VkDeviceImageMemoryRequirementsKHR* pInfo,
4881 uint32_t* pSparseMemoryRequirementCount,
4882 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
4883{
4884 auto resources = ResourceTracker::get();
4885 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance4"))
4886 {
4887 sOnInvalidDynamicallyCheckedCall("vkGetDeviceImageSparseMemoryRequirementsKHR", "VK_KHR_maintenance4");
4888 }
4889 AEMU_SCOPED_TRACE("vkGetDeviceImageSparseMemoryRequirementsKHR");
4890 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4891 vkEnc->vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
4892}
4893#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08004894#ifdef VK_ANDROID_native_buffer
4895static VkResult entry_vkGetSwapchainGrallocUsageANDROID(
4896 VkDevice device,
4897 VkFormat format,
4898 VkImageUsageFlags imageUsage,
4899 int* grallocUsage)
4900{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004901 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004902 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang808a6312018-11-13 21:06:15 -08004903 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004904 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004905 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
4906}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004907static VkResult dynCheck_entry_vkGetSwapchainGrallocUsageANDROID(
4908 VkDevice device,
4909 VkFormat format,
4910 VkImageUsageFlags imageUsage,
4911 int* grallocUsage)
4912{
4913 auto resources = ResourceTracker::get();
4914 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
4915 {
4916 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainGrallocUsageANDROID", "VK_ANDROID_native_buffer");
4917 }
4918 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004919 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004920 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004921 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004922 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
4923}
Lingfeng Yang808a6312018-11-13 21:06:15 -08004924static VkResult entry_vkAcquireImageANDROID(
4925 VkDevice device,
4926 VkImage image,
4927 int nativeFenceFd,
4928 VkSemaphore semaphore,
4929 VkFence fence)
4930{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004931 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004932 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang808a6312018-11-13 21:06:15 -08004933 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004934 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004935 return vkAcquireImageANDROID_VkResult_return;
4936}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004937static VkResult dynCheck_entry_vkAcquireImageANDROID(
4938 VkDevice device,
4939 VkImage image,
4940 int nativeFenceFd,
4941 VkSemaphore semaphore,
4942 VkFence fence)
4943{
4944 auto resources = ResourceTracker::get();
4945 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
4946 {
4947 sOnInvalidDynamicallyCheckedCall("vkAcquireImageANDROID", "VK_ANDROID_native_buffer");
4948 }
4949 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004950 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004951 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004952 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004953 return vkAcquireImageANDROID_VkResult_return;
4954}
Lingfeng Yang808a6312018-11-13 21:06:15 -08004955static VkResult entry_vkQueueSignalReleaseImageANDROID(
4956 VkQueue queue,
4957 uint32_t waitSemaphoreCount,
4958 const VkSemaphore* pWaitSemaphores,
4959 VkImage image,
4960 int* pNativeFenceFd)
4961{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004962 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004963 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004964 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang084e5342021-07-15 13:06:43 -07004965 auto resources = ResourceTracker::get();
4966 vkQueueSignalReleaseImageANDROID_VkResult_return = resources->on_vkQueueSignalReleaseImageANDROID(vkEnc, VK_SUCCESS, queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004967 return vkQueueSignalReleaseImageANDROID_VkResult_return;
4968}
4969#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004970#ifdef VK_EXT_debug_report
4971static VkResult entry_vkCreateDebugReportCallbackEXT(
4972 VkInstance instance,
4973 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
4974 const VkAllocationCallbacks* pAllocator,
4975 VkDebugReportCallbackEXT* pCallback)
4976{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004977 AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004978 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004979 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004980 vkCreateDebugReportCallbackEXT_VkResult_return = vkEnc->vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004981 return vkCreateDebugReportCallbackEXT_VkResult_return;
4982}
4983static void entry_vkDestroyDebugReportCallbackEXT(
4984 VkInstance instance,
4985 VkDebugReportCallbackEXT callback,
4986 const VkAllocationCallbacks* pAllocator)
4987{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004988 AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004989 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004990 vkEnc->vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004991}
4992static void entry_vkDebugReportMessageEXT(
4993 VkInstance instance,
4994 VkDebugReportFlagsEXT flags,
4995 VkDebugReportObjectTypeEXT objectType,
4996 uint64_t object,
4997 size_t location,
4998 int32_t messageCode,
4999 const char* pLayerPrefix,
5000 const char* pMessage)
5001{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005002 AEMU_SCOPED_TRACE("vkDebugReportMessageEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005003 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005004 vkEnc->vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005005}
5006#endif
5007#ifdef VK_NV_glsl_shader
5008#endif
5009#ifdef VK_EXT_depth_range_unrestricted
5010#endif
5011#ifdef VK_IMG_filter_cubic
5012#endif
5013#ifdef VK_AMD_rasterization_order
5014#endif
5015#ifdef VK_AMD_shader_trinary_minmax
5016#endif
5017#ifdef VK_AMD_shader_explicit_vertex_parameter
5018#endif
5019#ifdef VK_EXT_debug_marker
5020static VkResult entry_vkDebugMarkerSetObjectTagEXT(
5021 VkDevice device,
5022 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
5023{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005024 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005025 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005026 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005027 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005028 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
5029}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005030static VkResult dynCheck_entry_vkDebugMarkerSetObjectTagEXT(
5031 VkDevice device,
5032 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
5033{
5034 auto resources = ResourceTracker::get();
5035 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
5036 {
5037 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectTagEXT", "VK_EXT_debug_marker");
5038 }
5039 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005040 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005041 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005042 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005043 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
5044}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005045static VkResult entry_vkDebugMarkerSetObjectNameEXT(
5046 VkDevice device,
5047 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
5048{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005049 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005050 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005051 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005052 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005053 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
5054}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005055static VkResult dynCheck_entry_vkDebugMarkerSetObjectNameEXT(
5056 VkDevice device,
5057 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
5058{
5059 auto resources = ResourceTracker::get();
5060 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
5061 {
5062 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectNameEXT", "VK_EXT_debug_marker");
5063 }
5064 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005065 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005066 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005067 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005068 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
5069}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005070static void entry_vkCmdDebugMarkerBeginEXT(
5071 VkCommandBuffer commandBuffer,
5072 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
5073{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005074 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005075 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005076 vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005077}
5078static void entry_vkCmdDebugMarkerEndEXT(
5079 VkCommandBuffer commandBuffer)
5080{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005081 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005082 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005083 vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005084}
5085static void entry_vkCmdDebugMarkerInsertEXT(
5086 VkCommandBuffer commandBuffer,
5087 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
5088{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005089 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005090 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005091 vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005092}
5093#endif
5094#ifdef VK_AMD_gcn_shader
5095#endif
5096#ifdef VK_NV_dedicated_allocation
5097#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005098#ifdef VK_EXT_transform_feedback
5099static void entry_vkCmdBindTransformFeedbackBuffersEXT(
5100 VkCommandBuffer commandBuffer,
5101 uint32_t firstBinding,
5102 uint32_t bindingCount,
5103 const VkBuffer* pBuffers,
5104 const VkDeviceSize* pOffsets,
5105 const VkDeviceSize* pSizes)
5106{
5107 AEMU_SCOPED_TRACE("vkCmdBindTransformFeedbackBuffersEXT");
5108 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5109 vkEnc->vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, true /* do lock */);
5110}
5111static void entry_vkCmdBeginTransformFeedbackEXT(
5112 VkCommandBuffer commandBuffer,
5113 uint32_t firstCounterBuffer,
5114 uint32_t counterBufferCount,
5115 const VkBuffer* pCounterBuffers,
5116 const VkDeviceSize* pCounterBufferOffsets)
5117{
5118 AEMU_SCOPED_TRACE("vkCmdBeginTransformFeedbackEXT");
5119 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5120 vkEnc->vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
5121}
5122static void entry_vkCmdEndTransformFeedbackEXT(
5123 VkCommandBuffer commandBuffer,
5124 uint32_t firstCounterBuffer,
5125 uint32_t counterBufferCount,
5126 const VkBuffer* pCounterBuffers,
5127 const VkDeviceSize* pCounterBufferOffsets)
5128{
5129 AEMU_SCOPED_TRACE("vkCmdEndTransformFeedbackEXT");
5130 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5131 vkEnc->vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
5132}
5133static void entry_vkCmdBeginQueryIndexedEXT(
5134 VkCommandBuffer commandBuffer,
5135 VkQueryPool queryPool,
5136 uint32_t query,
5137 VkQueryControlFlags flags,
5138 uint32_t index)
5139{
5140 AEMU_SCOPED_TRACE("vkCmdBeginQueryIndexedEXT");
5141 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5142 vkEnc->vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, true /* do lock */);
5143}
5144static void entry_vkCmdEndQueryIndexedEXT(
5145 VkCommandBuffer commandBuffer,
5146 VkQueryPool queryPool,
5147 uint32_t query,
5148 uint32_t index)
5149{
5150 AEMU_SCOPED_TRACE("vkCmdEndQueryIndexedEXT");
5151 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5152 vkEnc->vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, true /* do lock */);
5153}
5154static void entry_vkCmdDrawIndirectByteCountEXT(
5155 VkCommandBuffer commandBuffer,
5156 uint32_t instanceCount,
5157 uint32_t firstInstance,
5158 VkBuffer counterBuffer,
5159 VkDeviceSize counterBufferOffset,
5160 uint32_t counterOffset,
5161 uint32_t vertexStride)
5162{
5163 AEMU_SCOPED_TRACE("vkCmdDrawIndirectByteCountEXT");
5164 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5165 vkEnc->vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, true /* do lock */);
5166}
5167#endif
Yilong Li353409a2022-01-04 02:37:56 -08005168#ifdef VK_NVX_binary_import
5169static VkResult entry_vkCreateCuModuleNVX(
5170 VkDevice device,
5171 const VkCuModuleCreateInfoNVX* pCreateInfo,
5172 const VkAllocationCallbacks* pAllocator,
5173 VkCuModuleNVX* pModule)
5174{
5175 AEMU_SCOPED_TRACE("vkCreateCuModuleNVX");
5176 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5177 VkResult vkCreateCuModuleNVX_VkResult_return = (VkResult)0;
5178 vkCreateCuModuleNVX_VkResult_return = vkEnc->vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, true /* do lock */);
5179 return vkCreateCuModuleNVX_VkResult_return;
5180}
5181static VkResult dynCheck_entry_vkCreateCuModuleNVX(
5182 VkDevice device,
5183 const VkCuModuleCreateInfoNVX* pCreateInfo,
5184 const VkAllocationCallbacks* pAllocator,
5185 VkCuModuleNVX* pModule)
5186{
5187 auto resources = ResourceTracker::get();
5188 if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import"))
5189 {
5190 sOnInvalidDynamicallyCheckedCall("vkCreateCuModuleNVX", "VK_NVX_binary_import");
5191 }
5192 AEMU_SCOPED_TRACE("vkCreateCuModuleNVX");
5193 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5194 VkResult vkCreateCuModuleNVX_VkResult_return = (VkResult)0;
5195 vkCreateCuModuleNVX_VkResult_return = vkEnc->vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, true /* do lock */);
5196 return vkCreateCuModuleNVX_VkResult_return;
5197}
5198static VkResult entry_vkCreateCuFunctionNVX(
5199 VkDevice device,
5200 const VkCuFunctionCreateInfoNVX* pCreateInfo,
5201 const VkAllocationCallbacks* pAllocator,
5202 VkCuFunctionNVX* pFunction)
5203{
5204 AEMU_SCOPED_TRACE("vkCreateCuFunctionNVX");
5205 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5206 VkResult vkCreateCuFunctionNVX_VkResult_return = (VkResult)0;
5207 vkCreateCuFunctionNVX_VkResult_return = vkEnc->vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, true /* do lock */);
5208 return vkCreateCuFunctionNVX_VkResult_return;
5209}
5210static VkResult dynCheck_entry_vkCreateCuFunctionNVX(
5211 VkDevice device,
5212 const VkCuFunctionCreateInfoNVX* pCreateInfo,
5213 const VkAllocationCallbacks* pAllocator,
5214 VkCuFunctionNVX* pFunction)
5215{
5216 auto resources = ResourceTracker::get();
5217 if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import"))
5218 {
5219 sOnInvalidDynamicallyCheckedCall("vkCreateCuFunctionNVX", "VK_NVX_binary_import");
5220 }
5221 AEMU_SCOPED_TRACE("vkCreateCuFunctionNVX");
5222 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5223 VkResult vkCreateCuFunctionNVX_VkResult_return = (VkResult)0;
5224 vkCreateCuFunctionNVX_VkResult_return = vkEnc->vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, true /* do lock */);
5225 return vkCreateCuFunctionNVX_VkResult_return;
5226}
5227static void entry_vkDestroyCuModuleNVX(
5228 VkDevice device,
5229 VkCuModuleNVX module,
5230 const VkAllocationCallbacks* pAllocator)
5231{
5232 AEMU_SCOPED_TRACE("vkDestroyCuModuleNVX");
5233 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5234 vkEnc->vkDestroyCuModuleNVX(device, module, pAllocator, true /* do lock */);
5235}
5236static void dynCheck_entry_vkDestroyCuModuleNVX(
5237 VkDevice device,
5238 VkCuModuleNVX module,
5239 const VkAllocationCallbacks* pAllocator)
5240{
5241 auto resources = ResourceTracker::get();
5242 if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import"))
5243 {
5244 sOnInvalidDynamicallyCheckedCall("vkDestroyCuModuleNVX", "VK_NVX_binary_import");
5245 }
5246 AEMU_SCOPED_TRACE("vkDestroyCuModuleNVX");
5247 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5248 vkEnc->vkDestroyCuModuleNVX(device, module, pAllocator, true /* do lock */);
5249}
5250static void entry_vkDestroyCuFunctionNVX(
5251 VkDevice device,
5252 VkCuFunctionNVX function,
5253 const VkAllocationCallbacks* pAllocator)
5254{
5255 AEMU_SCOPED_TRACE("vkDestroyCuFunctionNVX");
5256 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5257 vkEnc->vkDestroyCuFunctionNVX(device, function, pAllocator, true /* do lock */);
5258}
5259static void dynCheck_entry_vkDestroyCuFunctionNVX(
5260 VkDevice device,
5261 VkCuFunctionNVX function,
5262 const VkAllocationCallbacks* pAllocator)
5263{
5264 auto resources = ResourceTracker::get();
5265 if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import"))
5266 {
5267 sOnInvalidDynamicallyCheckedCall("vkDestroyCuFunctionNVX", "VK_NVX_binary_import");
5268 }
5269 AEMU_SCOPED_TRACE("vkDestroyCuFunctionNVX");
5270 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5271 vkEnc->vkDestroyCuFunctionNVX(device, function, pAllocator, true /* do lock */);
5272}
5273static void entry_vkCmdCuLaunchKernelNVX(
5274 VkCommandBuffer commandBuffer,
5275 const VkCuLaunchInfoNVX* pLaunchInfo)
5276{
5277 AEMU_SCOPED_TRACE("vkCmdCuLaunchKernelNVX");
5278 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5279 vkEnc->vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, true /* do lock */);
5280}
5281#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005282#ifdef VK_NVX_image_view_handle
5283static uint32_t entry_vkGetImageViewHandleNVX(
5284 VkDevice device,
5285 const VkImageViewHandleInfoNVX* pInfo)
5286{
5287 AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
5288 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5289 uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
5290 vkGetImageViewHandleNVX_uint32_t_return = vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
5291 return vkGetImageViewHandleNVX_uint32_t_return;
5292}
5293static uint32_t dynCheck_entry_vkGetImageViewHandleNVX(
5294 VkDevice device,
5295 const VkImageViewHandleInfoNVX* pInfo)
5296{
5297 auto resources = ResourceTracker::get();
5298 if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle"))
5299 {
5300 sOnInvalidDynamicallyCheckedCall("vkGetImageViewHandleNVX", "VK_NVX_image_view_handle");
5301 }
5302 AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
5303 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5304 uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
5305 vkGetImageViewHandleNVX_uint32_t_return = vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
5306 return vkGetImageViewHandleNVX_uint32_t_return;
5307}
5308static VkResult entry_vkGetImageViewAddressNVX(
5309 VkDevice device,
5310 VkImageView imageView,
5311 VkImageViewAddressPropertiesNVX* pProperties)
5312{
5313 AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
5314 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5315 VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
5316 vkGetImageViewAddressNVX_VkResult_return = vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
5317 return vkGetImageViewAddressNVX_VkResult_return;
5318}
5319static VkResult dynCheck_entry_vkGetImageViewAddressNVX(
5320 VkDevice device,
5321 VkImageView imageView,
5322 VkImageViewAddressPropertiesNVX* pProperties)
5323{
5324 auto resources = ResourceTracker::get();
5325 if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle"))
5326 {
5327 sOnInvalidDynamicallyCheckedCall("vkGetImageViewAddressNVX", "VK_NVX_image_view_handle");
5328 }
5329 AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
5330 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5331 VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
5332 vkGetImageViewAddressNVX_VkResult_return = vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
5333 return vkGetImageViewAddressNVX_VkResult_return;
5334}
5335#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005336#ifdef VK_AMD_draw_indirect_count
5337static void entry_vkCmdDrawIndirectCountAMD(
5338 VkCommandBuffer commandBuffer,
5339 VkBuffer buffer,
5340 VkDeviceSize offset,
5341 VkBuffer countBuffer,
5342 VkDeviceSize countBufferOffset,
5343 uint32_t maxDrawCount,
5344 uint32_t stride)
5345{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005346 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005347 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005348 vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005349}
5350static void entry_vkCmdDrawIndexedIndirectCountAMD(
5351 VkCommandBuffer commandBuffer,
5352 VkBuffer buffer,
5353 VkDeviceSize offset,
5354 VkBuffer countBuffer,
5355 VkDeviceSize countBufferOffset,
5356 uint32_t maxDrawCount,
5357 uint32_t stride)
5358{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005359 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005360 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005361 vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005362}
5363#endif
5364#ifdef VK_AMD_negative_viewport_height
5365#endif
5366#ifdef VK_AMD_gpu_shader_half_float
5367#endif
5368#ifdef VK_AMD_shader_ballot
5369#endif
Yilong Li353409a2022-01-04 02:37:56 -08005370#ifdef VK_EXT_video_encode_h264
5371#endif
5372#ifdef VK_EXT_video_encode_h265
5373#endif
5374#ifdef VK_EXT_video_decode_h264
5375#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005376#ifdef VK_AMD_texture_gather_bias_lod
5377#endif
5378#ifdef VK_AMD_shader_info
5379static VkResult entry_vkGetShaderInfoAMD(
5380 VkDevice device,
5381 VkPipeline pipeline,
5382 VkShaderStageFlagBits shaderStage,
5383 VkShaderInfoTypeAMD infoType,
5384 size_t* pInfoSize,
5385 void* pInfo)
5386{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005387 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005388 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005389 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005390 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005391 return vkGetShaderInfoAMD_VkResult_return;
5392}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005393static VkResult dynCheck_entry_vkGetShaderInfoAMD(
5394 VkDevice device,
5395 VkPipeline pipeline,
5396 VkShaderStageFlagBits shaderStage,
5397 VkShaderInfoTypeAMD infoType,
5398 size_t* pInfoSize,
5399 void* pInfo)
5400{
5401 auto resources = ResourceTracker::get();
5402 if (!resources->hasDeviceExtension(device, "VK_AMD_shader_info"))
5403 {
5404 sOnInvalidDynamicallyCheckedCall("vkGetShaderInfoAMD", "VK_AMD_shader_info");
5405 }
5406 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005407 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005408 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005409 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005410 return vkGetShaderInfoAMD_VkResult_return;
5411}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005412#endif
5413#ifdef VK_AMD_shader_image_load_store_lod
5414#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005415#ifdef VK_GGP_stream_descriptor_surface
5416static VkResult entry_vkCreateStreamDescriptorSurfaceGGP(
5417 VkInstance instance,
5418 const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
5419 const VkAllocationCallbacks* pAllocator,
5420 VkSurfaceKHR* pSurface)
5421{
5422 AEMU_SCOPED_TRACE("vkCreateStreamDescriptorSurfaceGGP");
5423 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5424 VkResult vkCreateStreamDescriptorSurfaceGGP_VkResult_return = (VkResult)0;
5425 vkCreateStreamDescriptorSurfaceGGP_VkResult_return = vkEnc->vkCreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
5426 return vkCreateStreamDescriptorSurfaceGGP_VkResult_return;
5427}
5428#endif
5429#ifdef VK_NV_corner_sampled_image
5430#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005431#ifdef VK_IMG_format_pvrtc
5432#endif
5433#ifdef VK_NV_external_memory_capabilities
5434static VkResult entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
5435 VkPhysicalDevice physicalDevice,
5436 VkFormat format,
5437 VkImageType type,
5438 VkImageTiling tiling,
5439 VkImageUsageFlags usage,
5440 VkImageCreateFlags flags,
5441 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
5442 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
5443{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005444 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005445 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005446 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005447 vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005448 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
5449}
5450#endif
5451#ifdef VK_NV_external_memory
5452#endif
5453#ifdef VK_NV_external_memory_win32
5454static VkResult entry_vkGetMemoryWin32HandleNV(
5455 VkDevice device,
5456 VkDeviceMemory memory,
5457 VkExternalMemoryHandleTypeFlagsNV handleType,
5458 HANDLE* pHandle)
5459{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005460 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005461 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005462 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005463 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005464 return vkGetMemoryWin32HandleNV_VkResult_return;
5465}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005466static VkResult dynCheck_entry_vkGetMemoryWin32HandleNV(
5467 VkDevice device,
5468 VkDeviceMemory memory,
5469 VkExternalMemoryHandleTypeFlagsNV handleType,
5470 HANDLE* pHandle)
5471{
5472 auto resources = ResourceTracker::get();
5473 if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_win32"))
5474 {
5475 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleNV", "VK_NV_external_memory_win32");
5476 }
5477 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005478 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005479 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005480 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005481 return vkGetMemoryWin32HandleNV_VkResult_return;
5482}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005483#endif
5484#ifdef VK_NV_win32_keyed_mutex
5485#endif
5486#ifdef VK_EXT_validation_flags
5487#endif
5488#ifdef VK_NN_vi_surface
5489static VkResult entry_vkCreateViSurfaceNN(
5490 VkInstance instance,
5491 const VkViSurfaceCreateInfoNN* pCreateInfo,
5492 const VkAllocationCallbacks* pAllocator,
5493 VkSurfaceKHR* pSurface)
5494{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005495 AEMU_SCOPED_TRACE("vkCreateViSurfaceNN");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005496 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005497 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005498 vkCreateViSurfaceNN_VkResult_return = vkEnc->vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005499 return vkCreateViSurfaceNN_VkResult_return;
5500}
5501#endif
5502#ifdef VK_EXT_shader_subgroup_ballot
5503#endif
5504#ifdef VK_EXT_shader_subgroup_vote
5505#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005506#ifdef VK_EXT_texture_compression_astc_hdr
5507#endif
5508#ifdef VK_EXT_astc_decode_mode
5509#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005510#ifdef VK_EXT_conditional_rendering
5511static void entry_vkCmdBeginConditionalRenderingEXT(
5512 VkCommandBuffer commandBuffer,
5513 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
5514{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005515 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005516 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005517 vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005518}
5519static void entry_vkCmdEndConditionalRenderingEXT(
5520 VkCommandBuffer commandBuffer)
5521{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005522 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005523 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005524 vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005525}
5526#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005527#ifdef VK_NV_clip_space_w_scaling
5528static void entry_vkCmdSetViewportWScalingNV(
5529 VkCommandBuffer commandBuffer,
5530 uint32_t firstViewport,
5531 uint32_t viewportCount,
5532 const VkViewportWScalingNV* pViewportWScalings)
5533{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005534 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005535 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005536 vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005537}
5538#endif
5539#ifdef VK_EXT_direct_mode_display
5540static VkResult entry_vkReleaseDisplayEXT(
5541 VkPhysicalDevice physicalDevice,
5542 VkDisplayKHR display)
5543{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005544 AEMU_SCOPED_TRACE("vkReleaseDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005545 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005546 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005547 vkReleaseDisplayEXT_VkResult_return = vkEnc->vkReleaseDisplayEXT(physicalDevice, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005548 return vkReleaseDisplayEXT_VkResult_return;
5549}
5550#endif
5551#ifdef VK_EXT_acquire_xlib_display
5552static VkResult entry_vkAcquireXlibDisplayEXT(
5553 VkPhysicalDevice physicalDevice,
5554 Display* dpy,
5555 VkDisplayKHR display)
5556{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005557 AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005558 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005559 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005560 vkAcquireXlibDisplayEXT_VkResult_return = vkEnc->vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005561 return vkAcquireXlibDisplayEXT_VkResult_return;
5562}
5563static VkResult entry_vkGetRandROutputDisplayEXT(
5564 VkPhysicalDevice physicalDevice,
5565 Display* dpy,
5566 RROutput rrOutput,
5567 VkDisplayKHR* pDisplay)
5568{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005569 AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005570 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005571 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005572 vkGetRandROutputDisplayEXT_VkResult_return = vkEnc->vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005573 return vkGetRandROutputDisplayEXT_VkResult_return;
5574}
5575#endif
5576#ifdef VK_EXT_display_surface_counter
5577static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
5578 VkPhysicalDevice physicalDevice,
5579 VkSurfaceKHR surface,
5580 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
5581{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005582 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005583 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005584 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005585 vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005586 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
5587}
5588#endif
5589#ifdef VK_EXT_display_control
5590static VkResult entry_vkDisplayPowerControlEXT(
5591 VkDevice device,
5592 VkDisplayKHR display,
5593 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
5594{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005595 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005596 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005597 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005598 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005599 return vkDisplayPowerControlEXT_VkResult_return;
5600}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005601static VkResult dynCheck_entry_vkDisplayPowerControlEXT(
5602 VkDevice device,
5603 VkDisplayKHR display,
5604 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
5605{
5606 auto resources = ResourceTracker::get();
5607 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5608 {
5609 sOnInvalidDynamicallyCheckedCall("vkDisplayPowerControlEXT", "VK_EXT_display_control");
5610 }
5611 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005612 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005613 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005614 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005615 return vkDisplayPowerControlEXT_VkResult_return;
5616}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005617static VkResult entry_vkRegisterDeviceEventEXT(
5618 VkDevice device,
5619 const VkDeviceEventInfoEXT* pDeviceEventInfo,
5620 const VkAllocationCallbacks* pAllocator,
5621 VkFence* pFence)
5622{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005623 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005624 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005625 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005626 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005627 return vkRegisterDeviceEventEXT_VkResult_return;
5628}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005629static VkResult dynCheck_entry_vkRegisterDeviceEventEXT(
5630 VkDevice device,
5631 const VkDeviceEventInfoEXT* pDeviceEventInfo,
5632 const VkAllocationCallbacks* pAllocator,
5633 VkFence* pFence)
5634{
5635 auto resources = ResourceTracker::get();
5636 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5637 {
5638 sOnInvalidDynamicallyCheckedCall("vkRegisterDeviceEventEXT", "VK_EXT_display_control");
5639 }
5640 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005641 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005642 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005643 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005644 return vkRegisterDeviceEventEXT_VkResult_return;
5645}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005646static VkResult entry_vkRegisterDisplayEventEXT(
5647 VkDevice device,
5648 VkDisplayKHR display,
5649 const VkDisplayEventInfoEXT* pDisplayEventInfo,
5650 const VkAllocationCallbacks* pAllocator,
5651 VkFence* pFence)
5652{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005653 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005654 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005655 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005656 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005657 return vkRegisterDisplayEventEXT_VkResult_return;
5658}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005659static VkResult dynCheck_entry_vkRegisterDisplayEventEXT(
5660 VkDevice device,
5661 VkDisplayKHR display,
5662 const VkDisplayEventInfoEXT* pDisplayEventInfo,
5663 const VkAllocationCallbacks* pAllocator,
5664 VkFence* pFence)
5665{
5666 auto resources = ResourceTracker::get();
5667 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5668 {
5669 sOnInvalidDynamicallyCheckedCall("vkRegisterDisplayEventEXT", "VK_EXT_display_control");
5670 }
5671 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005672 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005673 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005674 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005675 return vkRegisterDisplayEventEXT_VkResult_return;
5676}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005677static VkResult entry_vkGetSwapchainCounterEXT(
5678 VkDevice device,
5679 VkSwapchainKHR swapchain,
5680 VkSurfaceCounterFlagBitsEXT counter,
5681 uint64_t* pCounterValue)
5682{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005683 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005684 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005685 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005686 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005687 return vkGetSwapchainCounterEXT_VkResult_return;
5688}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005689static VkResult dynCheck_entry_vkGetSwapchainCounterEXT(
5690 VkDevice device,
5691 VkSwapchainKHR swapchain,
5692 VkSurfaceCounterFlagBitsEXT counter,
5693 uint64_t* pCounterValue)
5694{
5695 auto resources = ResourceTracker::get();
5696 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5697 {
5698 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainCounterEXT", "VK_EXT_display_control");
5699 }
5700 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005701 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005702 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005703 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005704 return vkGetSwapchainCounterEXT_VkResult_return;
5705}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005706#endif
5707#ifdef VK_GOOGLE_display_timing
5708static VkResult entry_vkGetRefreshCycleDurationGOOGLE(
5709 VkDevice device,
5710 VkSwapchainKHR swapchain,
5711 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
5712{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005713 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005714 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005715 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005716 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005717 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
5718}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005719static VkResult dynCheck_entry_vkGetRefreshCycleDurationGOOGLE(
5720 VkDevice device,
5721 VkSwapchainKHR swapchain,
5722 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
5723{
5724 auto resources = ResourceTracker::get();
5725 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
5726 {
5727 sOnInvalidDynamicallyCheckedCall("vkGetRefreshCycleDurationGOOGLE", "VK_GOOGLE_display_timing");
5728 }
5729 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005730 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005731 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005732 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005733 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
5734}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005735static VkResult entry_vkGetPastPresentationTimingGOOGLE(
5736 VkDevice device,
5737 VkSwapchainKHR swapchain,
5738 uint32_t* pPresentationTimingCount,
5739 VkPastPresentationTimingGOOGLE* pPresentationTimings)
5740{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005741 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005742 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005743 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005744 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005745 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
5746}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005747static VkResult dynCheck_entry_vkGetPastPresentationTimingGOOGLE(
5748 VkDevice device,
5749 VkSwapchainKHR swapchain,
5750 uint32_t* pPresentationTimingCount,
5751 VkPastPresentationTimingGOOGLE* pPresentationTimings)
5752{
5753 auto resources = ResourceTracker::get();
5754 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
5755 {
5756 sOnInvalidDynamicallyCheckedCall("vkGetPastPresentationTimingGOOGLE", "VK_GOOGLE_display_timing");
5757 }
5758 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005759 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005760 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005761 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005762 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
5763}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005764#endif
5765#ifdef VK_NV_sample_mask_override_coverage
5766#endif
5767#ifdef VK_NV_geometry_shader_passthrough
5768#endif
5769#ifdef VK_NV_viewport_array2
5770#endif
5771#ifdef VK_NVX_multiview_per_view_attributes
5772#endif
5773#ifdef VK_NV_viewport_swizzle
5774#endif
5775#ifdef VK_EXT_discard_rectangles
5776static void entry_vkCmdSetDiscardRectangleEXT(
5777 VkCommandBuffer commandBuffer,
5778 uint32_t firstDiscardRectangle,
5779 uint32_t discardRectangleCount,
5780 const VkRect2D* pDiscardRectangles)
5781{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005782 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005783 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005784 vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005785}
5786#endif
5787#ifdef VK_EXT_conservative_rasterization
5788#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005789#ifdef VK_EXT_depth_clip_enable
5790#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005791#ifdef VK_EXT_swapchain_colorspace
5792#endif
5793#ifdef VK_EXT_hdr_metadata
5794static void entry_vkSetHdrMetadataEXT(
5795 VkDevice device,
5796 uint32_t swapchainCount,
5797 const VkSwapchainKHR* pSwapchains,
5798 const VkHdrMetadataEXT* pMetadata)
5799{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005800 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005801 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005802 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005803}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005804static void dynCheck_entry_vkSetHdrMetadataEXT(
5805 VkDevice device,
5806 uint32_t swapchainCount,
5807 const VkSwapchainKHR* pSwapchains,
5808 const VkHdrMetadataEXT* pMetadata)
5809{
5810 auto resources = ResourceTracker::get();
5811 if (!resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata"))
5812 {
5813 sOnInvalidDynamicallyCheckedCall("vkSetHdrMetadataEXT", "VK_EXT_hdr_metadata");
5814 }
5815 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005816 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005817 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005818}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005819#endif
5820#ifdef VK_MVK_ios_surface
5821static VkResult entry_vkCreateIOSSurfaceMVK(
5822 VkInstance instance,
5823 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
5824 const VkAllocationCallbacks* pAllocator,
5825 VkSurfaceKHR* pSurface)
5826{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005827 AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005828 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005829 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005830 vkCreateIOSSurfaceMVK_VkResult_return = vkEnc->vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005831 return vkCreateIOSSurfaceMVK_VkResult_return;
5832}
5833#endif
5834#ifdef VK_MVK_macos_surface
5835static VkResult entry_vkCreateMacOSSurfaceMVK(
5836 VkInstance instance,
5837 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
5838 const VkAllocationCallbacks* pAllocator,
5839 VkSurfaceKHR* pSurface)
5840{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005841 AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005842 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005843 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005844 vkCreateMacOSSurfaceMVK_VkResult_return = vkEnc->vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005845 return vkCreateMacOSSurfaceMVK_VkResult_return;
5846}
5847#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005848#ifdef VK_MVK_moltenvk
5849static void entry_vkGetMTLDeviceMVK(
5850 VkPhysicalDevice physicalDevice,
5851 void** pMTLDevice)
5852{
5853 AEMU_SCOPED_TRACE("vkGetMTLDeviceMVK");
5854 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5855 vkEnc->vkGetMTLDeviceMVK(physicalDevice, pMTLDevice, true /* do lock */);
5856}
5857static VkResult entry_vkSetMTLTextureMVK(
5858 VkImage image,
5859 void* mtlTexture)
5860{
5861 AEMU_SCOPED_TRACE("vkSetMTLTextureMVK");
5862 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5863 VkResult vkSetMTLTextureMVK_VkResult_return = (VkResult)0;
5864 vkSetMTLTextureMVK_VkResult_return = vkEnc->vkSetMTLTextureMVK(image, mtlTexture, true /* do lock */);
5865 return vkSetMTLTextureMVK_VkResult_return;
5866}
5867static void entry_vkGetMTLTextureMVK(
5868 VkImage image,
5869 void** pMTLTexture)
5870{
5871 AEMU_SCOPED_TRACE("vkGetMTLTextureMVK");
5872 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5873 vkEnc->vkGetMTLTextureMVK(image, pMTLTexture, true /* do lock */);
5874}
5875static void entry_vkGetMTLBufferMVK(
5876 VkBuffer buffer,
5877 void** pMTLBuffer)
5878{
5879 AEMU_SCOPED_TRACE("vkGetMTLBufferMVK");
5880 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5881 vkEnc->vkGetMTLBufferMVK(buffer, pMTLBuffer, true /* do lock */);
5882}
5883static VkResult entry_vkUseIOSurfaceMVK(
5884 VkImage image,
5885 void* ioSurface)
5886{
5887 AEMU_SCOPED_TRACE("vkUseIOSurfaceMVK");
5888 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5889 VkResult vkUseIOSurfaceMVK_VkResult_return = (VkResult)0;
5890 vkUseIOSurfaceMVK_VkResult_return = vkEnc->vkUseIOSurfaceMVK(image, ioSurface, true /* do lock */);
5891 return vkUseIOSurfaceMVK_VkResult_return;
5892}
5893static void entry_vkGetIOSurfaceMVK(
5894 VkImage image,
5895 void** pIOSurface)
5896{
5897 AEMU_SCOPED_TRACE("vkGetIOSurfaceMVK");
5898 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5899 vkEnc->vkGetIOSurfaceMVK(image, pIOSurface, true /* do lock */);
5900}
5901#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005902#ifdef VK_EXT_external_memory_dma_buf
5903#endif
5904#ifdef VK_EXT_queue_family_foreign
5905#endif
5906#ifdef VK_EXT_debug_utils
5907static VkResult entry_vkSetDebugUtilsObjectNameEXT(
5908 VkDevice device,
5909 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
5910{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005911 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005912 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005913 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005914 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005915 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
5916}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005917static VkResult dynCheck_entry_vkSetDebugUtilsObjectNameEXT(
5918 VkDevice device,
5919 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
5920{
5921 auto resources = ResourceTracker::get();
5922 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
5923 {
5924 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectNameEXT", "VK_EXT_debug_utils");
5925 }
5926 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005927 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005928 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005929 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005930 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
5931}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005932static VkResult entry_vkSetDebugUtilsObjectTagEXT(
5933 VkDevice device,
5934 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
5935{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005936 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005937 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005938 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005939 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005940 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
5941}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005942static VkResult dynCheck_entry_vkSetDebugUtilsObjectTagEXT(
5943 VkDevice device,
5944 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
5945{
5946 auto resources = ResourceTracker::get();
5947 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
5948 {
5949 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectTagEXT", "VK_EXT_debug_utils");
5950 }
5951 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005952 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005953 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005954 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005955 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
5956}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005957static void entry_vkQueueBeginDebugUtilsLabelEXT(
5958 VkQueue queue,
5959 const VkDebugUtilsLabelEXT* pLabelInfo)
5960{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005961 AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005962 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005963 vkEnc->vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005964}
5965static void entry_vkQueueEndDebugUtilsLabelEXT(
5966 VkQueue queue)
5967{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005968 AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005969 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005970 vkEnc->vkQueueEndDebugUtilsLabelEXT(queue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005971}
5972static void entry_vkQueueInsertDebugUtilsLabelEXT(
5973 VkQueue queue,
5974 const VkDebugUtilsLabelEXT* pLabelInfo)
5975{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005976 AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005977 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005978 vkEnc->vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005979}
5980static void entry_vkCmdBeginDebugUtilsLabelEXT(
5981 VkCommandBuffer commandBuffer,
5982 const VkDebugUtilsLabelEXT* pLabelInfo)
5983{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005984 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005985 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005986 vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005987}
5988static void entry_vkCmdEndDebugUtilsLabelEXT(
5989 VkCommandBuffer commandBuffer)
5990{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005991 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005992 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005993 vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005994}
5995static void entry_vkCmdInsertDebugUtilsLabelEXT(
5996 VkCommandBuffer commandBuffer,
5997 const VkDebugUtilsLabelEXT* pLabelInfo)
5998{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005999 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006000 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006001 vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006002}
6003static VkResult entry_vkCreateDebugUtilsMessengerEXT(
6004 VkInstance instance,
6005 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
6006 const VkAllocationCallbacks* pAllocator,
6007 VkDebugUtilsMessengerEXT* pMessenger)
6008{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006009 AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006010 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006011 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006012 vkCreateDebugUtilsMessengerEXT_VkResult_return = vkEnc->vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006013 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
6014}
6015static void entry_vkDestroyDebugUtilsMessengerEXT(
6016 VkInstance instance,
6017 VkDebugUtilsMessengerEXT messenger,
6018 const VkAllocationCallbacks* pAllocator)
6019{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006020 AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006021 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006022 vkEnc->vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006023}
6024static void entry_vkSubmitDebugUtilsMessageEXT(
6025 VkInstance instance,
6026 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
6027 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
6028 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
6029{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006030 AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006031 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006032 vkEnc->vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006033}
6034#endif
6035#ifdef VK_ANDROID_external_memory_android_hardware_buffer
6036static VkResult entry_vkGetAndroidHardwareBufferPropertiesANDROID(
6037 VkDevice device,
6038 const AHardwareBuffer* buffer,
6039 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
6040{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006041 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006042 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006043 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08006044 auto resources = ResourceTracker::get();
6045 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006046 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
6047}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006048static VkResult dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID(
6049 VkDevice device,
6050 const AHardwareBuffer* buffer,
6051 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
6052{
6053 auto resources = ResourceTracker::get();
6054 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
6055 {
6056 sOnInvalidDynamicallyCheckedCall("vkGetAndroidHardwareBufferPropertiesANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
6057 }
6058 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006059 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006060 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
6061 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
6062 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
6063}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006064static VkResult entry_vkGetMemoryAndroidHardwareBufferANDROID(
6065 VkDevice device,
6066 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
6067 AHardwareBuffer** pBuffer)
6068{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006069 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006070 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006071 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08006072 auto resources = ResourceTracker::get();
6073 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006074 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
6075}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006076static VkResult dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID(
6077 VkDevice device,
6078 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
6079 AHardwareBuffer** pBuffer)
6080{
6081 auto resources = ResourceTracker::get();
6082 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
6083 {
6084 sOnInvalidDynamicallyCheckedCall("vkGetMemoryAndroidHardwareBufferANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
6085 }
6086 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006087 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006088 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
6089 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
6090 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
6091}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006092#endif
6093#ifdef VK_EXT_sampler_filter_minmax
6094#endif
6095#ifdef VK_AMD_gpu_shader_int16
6096#endif
6097#ifdef VK_AMD_mixed_attachment_samples
6098#endif
6099#ifdef VK_AMD_shader_fragment_mask
6100#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006101#ifdef VK_EXT_inline_uniform_block
6102#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006103#ifdef VK_EXT_shader_stencil_export
6104#endif
6105#ifdef VK_EXT_sample_locations
6106static void entry_vkCmdSetSampleLocationsEXT(
6107 VkCommandBuffer commandBuffer,
6108 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
6109{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006110 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006111 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006112 vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006113}
6114static void entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(
6115 VkPhysicalDevice physicalDevice,
6116 VkSampleCountFlagBits samples,
6117 VkMultisamplePropertiesEXT* pMultisampleProperties)
6118{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006119 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006120 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006121 vkEnc->vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006122}
6123#endif
6124#ifdef VK_EXT_blend_operation_advanced
6125#endif
6126#ifdef VK_NV_fragment_coverage_to_color
6127#endif
6128#ifdef VK_NV_framebuffer_mixed_samples
6129#endif
6130#ifdef VK_NV_fill_rectangle
6131#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006132#ifdef VK_NV_shader_sm_builtins
6133#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006134#ifdef VK_EXT_post_depth_coverage
6135#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006136#ifdef VK_EXT_image_drm_format_modifier
6137static VkResult entry_vkGetImageDrmFormatModifierPropertiesEXT(
6138 VkDevice device,
6139 VkImage image,
6140 VkImageDrmFormatModifierPropertiesEXT* pProperties)
6141{
6142 AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
6143 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6144 VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
6145 vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, true /* do lock */);
6146 return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
6147}
6148static VkResult dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT(
6149 VkDevice device,
6150 VkImage image,
6151 VkImageDrmFormatModifierPropertiesEXT* pProperties)
6152{
6153 auto resources = ResourceTracker::get();
6154 if (!resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier"))
6155 {
6156 sOnInvalidDynamicallyCheckedCall("vkGetImageDrmFormatModifierPropertiesEXT", "VK_EXT_image_drm_format_modifier");
6157 }
6158 AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
6159 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6160 VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
6161 vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, true /* do lock */);
6162 return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
6163}
6164#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006165#ifdef VK_EXT_validation_cache
6166static VkResult entry_vkCreateValidationCacheEXT(
6167 VkDevice device,
6168 const VkValidationCacheCreateInfoEXT* pCreateInfo,
6169 const VkAllocationCallbacks* pAllocator,
6170 VkValidationCacheEXT* pValidationCache)
6171{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006172 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006173 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006174 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006175 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006176 return vkCreateValidationCacheEXT_VkResult_return;
6177}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006178static VkResult dynCheck_entry_vkCreateValidationCacheEXT(
6179 VkDevice device,
6180 const VkValidationCacheCreateInfoEXT* pCreateInfo,
6181 const VkAllocationCallbacks* pAllocator,
6182 VkValidationCacheEXT* pValidationCache)
6183{
6184 auto resources = ResourceTracker::get();
6185 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
6186 {
6187 sOnInvalidDynamicallyCheckedCall("vkCreateValidationCacheEXT", "VK_EXT_validation_cache");
6188 }
6189 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006190 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006191 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006192 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006193 return vkCreateValidationCacheEXT_VkResult_return;
6194}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006195static void entry_vkDestroyValidationCacheEXT(
6196 VkDevice device,
6197 VkValidationCacheEXT validationCache,
6198 const VkAllocationCallbacks* pAllocator)
6199{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006200 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006201 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006202 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006203}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006204static void dynCheck_entry_vkDestroyValidationCacheEXT(
6205 VkDevice device,
6206 VkValidationCacheEXT validationCache,
6207 const VkAllocationCallbacks* pAllocator)
6208{
6209 auto resources = ResourceTracker::get();
6210 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
6211 {
6212 sOnInvalidDynamicallyCheckedCall("vkDestroyValidationCacheEXT", "VK_EXT_validation_cache");
6213 }
6214 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006215 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006216 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006217}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006218static VkResult entry_vkMergeValidationCachesEXT(
6219 VkDevice device,
6220 VkValidationCacheEXT dstCache,
6221 uint32_t srcCacheCount,
6222 const VkValidationCacheEXT* pSrcCaches)
6223{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006224 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006225 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006226 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006227 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006228 return vkMergeValidationCachesEXT_VkResult_return;
6229}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006230static VkResult dynCheck_entry_vkMergeValidationCachesEXT(
6231 VkDevice device,
6232 VkValidationCacheEXT dstCache,
6233 uint32_t srcCacheCount,
6234 const VkValidationCacheEXT* pSrcCaches)
6235{
6236 auto resources = ResourceTracker::get();
6237 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
6238 {
6239 sOnInvalidDynamicallyCheckedCall("vkMergeValidationCachesEXT", "VK_EXT_validation_cache");
6240 }
6241 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006242 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006243 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006244 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006245 return vkMergeValidationCachesEXT_VkResult_return;
6246}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006247static VkResult entry_vkGetValidationCacheDataEXT(
6248 VkDevice device,
6249 VkValidationCacheEXT validationCache,
6250 size_t* pDataSize,
6251 void* pData)
6252{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006253 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006254 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006255 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006256 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006257 return vkGetValidationCacheDataEXT_VkResult_return;
6258}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006259static VkResult dynCheck_entry_vkGetValidationCacheDataEXT(
6260 VkDevice device,
6261 VkValidationCacheEXT validationCache,
6262 size_t* pDataSize,
6263 void* pData)
6264{
6265 auto resources = ResourceTracker::get();
6266 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
6267 {
6268 sOnInvalidDynamicallyCheckedCall("vkGetValidationCacheDataEXT", "VK_EXT_validation_cache");
6269 }
6270 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006271 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006272 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006273 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006274 return vkGetValidationCacheDataEXT_VkResult_return;
6275}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006276#endif
6277#ifdef VK_EXT_descriptor_indexing
6278#endif
6279#ifdef VK_EXT_shader_viewport_index_layer
6280#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006281#ifdef VK_NV_shading_rate_image
6282static void entry_vkCmdBindShadingRateImageNV(
6283 VkCommandBuffer commandBuffer,
6284 VkImageView imageView,
6285 VkImageLayout imageLayout)
6286{
6287 AEMU_SCOPED_TRACE("vkCmdBindShadingRateImageNV");
6288 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6289 vkEnc->vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, true /* do lock */);
6290}
6291static void entry_vkCmdSetViewportShadingRatePaletteNV(
6292 VkCommandBuffer commandBuffer,
6293 uint32_t firstViewport,
6294 uint32_t viewportCount,
6295 const VkShadingRatePaletteNV* pShadingRatePalettes)
6296{
6297 AEMU_SCOPED_TRACE("vkCmdSetViewportShadingRatePaletteNV");
6298 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6299 vkEnc->vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, true /* do lock */);
6300}
6301static void entry_vkCmdSetCoarseSampleOrderNV(
6302 VkCommandBuffer commandBuffer,
6303 VkCoarseSampleOrderTypeNV sampleOrderType,
6304 uint32_t customSampleOrderCount,
6305 const VkCoarseSampleOrderCustomNV* pCustomSampleOrders)
6306{
6307 AEMU_SCOPED_TRACE("vkCmdSetCoarseSampleOrderNV");
6308 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6309 vkEnc->vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, true /* do lock */);
6310}
6311#endif
6312#ifdef VK_NV_ray_tracing
6313static VkResult entry_vkCreateAccelerationStructureNV(
6314 VkDevice device,
6315 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
6316 const VkAllocationCallbacks* pAllocator,
6317 VkAccelerationStructureNV* pAccelerationStructure)
6318{
6319 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
6320 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6321 VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
6322 vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
6323 return vkCreateAccelerationStructureNV_VkResult_return;
6324}
6325static VkResult dynCheck_entry_vkCreateAccelerationStructureNV(
6326 VkDevice device,
6327 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
6328 const VkAllocationCallbacks* pAllocator,
6329 VkAccelerationStructureNV* pAccelerationStructure)
6330{
6331 auto resources = ResourceTracker::get();
6332 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6333 {
6334 sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureNV", "VK_NV_ray_tracing");
6335 }
6336 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
6337 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6338 VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
6339 vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
6340 return vkCreateAccelerationStructureNV_VkResult_return;
6341}
6342static void entry_vkDestroyAccelerationStructureNV(
6343 VkDevice device,
6344 VkAccelerationStructureNV accelerationStructure,
6345 const VkAllocationCallbacks* pAllocator)
6346{
6347 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
6348 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6349 vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, true /* do lock */);
6350}
6351static void dynCheck_entry_vkDestroyAccelerationStructureNV(
6352 VkDevice device,
6353 VkAccelerationStructureNV accelerationStructure,
6354 const VkAllocationCallbacks* pAllocator)
6355{
6356 auto resources = ResourceTracker::get();
6357 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6358 {
6359 sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureNV", "VK_NV_ray_tracing");
6360 }
6361 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
6362 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6363 vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, true /* do lock */);
6364}
6365static void entry_vkGetAccelerationStructureMemoryRequirementsNV(
6366 VkDevice device,
6367 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
6368 VkMemoryRequirements2KHR* pMemoryRequirements)
6369{
6370 AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
6371 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6372 vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
6373}
6374static void dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV(
6375 VkDevice device,
6376 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
6377 VkMemoryRequirements2KHR* pMemoryRequirements)
6378{
6379 auto resources = ResourceTracker::get();
6380 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6381 {
6382 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureMemoryRequirementsNV", "VK_NV_ray_tracing");
6383 }
6384 AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
6385 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6386 vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
6387}
6388static VkResult entry_vkBindAccelerationStructureMemoryNV(
6389 VkDevice device,
6390 uint32_t bindInfoCount,
6391 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
6392{
6393 AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
6394 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6395 VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
6396 vkBindAccelerationStructureMemoryNV_VkResult_return = vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, true /* do lock */);
6397 return vkBindAccelerationStructureMemoryNV_VkResult_return;
6398}
6399static VkResult dynCheck_entry_vkBindAccelerationStructureMemoryNV(
6400 VkDevice device,
6401 uint32_t bindInfoCount,
6402 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
6403{
6404 auto resources = ResourceTracker::get();
6405 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6406 {
6407 sOnInvalidDynamicallyCheckedCall("vkBindAccelerationStructureMemoryNV", "VK_NV_ray_tracing");
6408 }
6409 AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
6410 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6411 VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
6412 vkBindAccelerationStructureMemoryNV_VkResult_return = vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, true /* do lock */);
6413 return vkBindAccelerationStructureMemoryNV_VkResult_return;
6414}
6415static void entry_vkCmdBuildAccelerationStructureNV(
6416 VkCommandBuffer commandBuffer,
6417 const VkAccelerationStructureInfoNV* pInfo,
6418 VkBuffer instanceData,
6419 VkDeviceSize instanceOffset,
6420 VkBool32 update,
6421 VkAccelerationStructureNV dst,
6422 VkAccelerationStructureNV src,
6423 VkBuffer scratch,
6424 VkDeviceSize scratchOffset)
6425{
6426 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructureNV");
6427 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6428 vkEnc->vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, true /* do lock */);
6429}
6430static void entry_vkCmdCopyAccelerationStructureNV(
6431 VkCommandBuffer commandBuffer,
6432 VkAccelerationStructureNV dst,
6433 VkAccelerationStructureNV src,
6434 VkCopyAccelerationStructureModeKHR mode)
6435{
6436 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureNV");
6437 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6438 vkEnc->vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, true /* do lock */);
6439}
6440static void entry_vkCmdTraceRaysNV(
6441 VkCommandBuffer commandBuffer,
6442 VkBuffer raygenShaderBindingTableBuffer,
6443 VkDeviceSize raygenShaderBindingOffset,
6444 VkBuffer missShaderBindingTableBuffer,
6445 VkDeviceSize missShaderBindingOffset,
6446 VkDeviceSize missShaderBindingStride,
6447 VkBuffer hitShaderBindingTableBuffer,
6448 VkDeviceSize hitShaderBindingOffset,
6449 VkDeviceSize hitShaderBindingStride,
6450 VkBuffer callableShaderBindingTableBuffer,
6451 VkDeviceSize callableShaderBindingOffset,
6452 VkDeviceSize callableShaderBindingStride,
6453 uint32_t width,
6454 uint32_t height,
6455 uint32_t depth)
6456{
6457 AEMU_SCOPED_TRACE("vkCmdTraceRaysNV");
6458 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6459 vkEnc->vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, true /* do lock */);
6460}
6461static VkResult entry_vkCreateRayTracingPipelinesNV(
6462 VkDevice device,
6463 VkPipelineCache pipelineCache,
6464 uint32_t createInfoCount,
6465 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
6466 const VkAllocationCallbacks* pAllocator,
6467 VkPipeline* pPipelines)
6468{
6469 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
6470 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6471 VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
6472 vkCreateRayTracingPipelinesNV_VkResult_return = vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
6473 return vkCreateRayTracingPipelinesNV_VkResult_return;
6474}
6475static VkResult dynCheck_entry_vkCreateRayTracingPipelinesNV(
6476 VkDevice device,
6477 VkPipelineCache pipelineCache,
6478 uint32_t createInfoCount,
6479 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
6480 const VkAllocationCallbacks* pAllocator,
6481 VkPipeline* pPipelines)
6482{
6483 auto resources = ResourceTracker::get();
6484 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6485 {
6486 sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesNV", "VK_NV_ray_tracing");
6487 }
6488 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
6489 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6490 VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
6491 vkCreateRayTracingPipelinesNV_VkResult_return = vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
6492 return vkCreateRayTracingPipelinesNV_VkResult_return;
6493}
6494static VkResult entry_vkGetRayTracingShaderGroupHandlesKHR(
6495 VkDevice device,
6496 VkPipeline pipeline,
6497 uint32_t firstGroup,
6498 uint32_t groupCount,
6499 size_t dataSize,
6500 void* pData)
6501{
6502 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
6503 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6504 VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
6505 vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
6506 return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
6507}
6508static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR(
6509 VkDevice device,
6510 VkPipeline pipeline,
6511 uint32_t firstGroup,
6512 uint32_t groupCount,
6513 size_t dataSize,
6514 void* pData)
6515{
6516 auto resources = ResourceTracker::get();
6517 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6518 {
6519 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesKHR", "VK_NV_ray_tracing");
6520 }
6521 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
6522 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6523 VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
6524 vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
6525 return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
6526}
6527static VkResult entry_vkGetRayTracingShaderGroupHandlesNV(
6528 VkDevice device,
6529 VkPipeline pipeline,
6530 uint32_t firstGroup,
6531 uint32_t groupCount,
6532 size_t dataSize,
6533 void* pData)
6534{
6535 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
6536 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6537 VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
6538 vkGetRayTracingShaderGroupHandlesNV_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
6539 return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
6540}
6541static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV(
6542 VkDevice device,
6543 VkPipeline pipeline,
6544 uint32_t firstGroup,
6545 uint32_t groupCount,
6546 size_t dataSize,
6547 void* pData)
6548{
6549 auto resources = ResourceTracker::get();
6550 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6551 {
6552 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesNV", "VK_NV_ray_tracing");
6553 }
6554 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
6555 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6556 VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
6557 vkGetRayTracingShaderGroupHandlesNV_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
6558 return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
6559}
6560static VkResult entry_vkGetAccelerationStructureHandleNV(
6561 VkDevice device,
6562 VkAccelerationStructureNV accelerationStructure,
6563 size_t dataSize,
6564 void* pData)
6565{
6566 AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
6567 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6568 VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
6569 vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, true /* do lock */);
6570 return vkGetAccelerationStructureHandleNV_VkResult_return;
6571}
6572static VkResult dynCheck_entry_vkGetAccelerationStructureHandleNV(
6573 VkDevice device,
6574 VkAccelerationStructureNV accelerationStructure,
6575 size_t dataSize,
6576 void* pData)
6577{
6578 auto resources = ResourceTracker::get();
6579 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6580 {
6581 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureHandleNV", "VK_NV_ray_tracing");
6582 }
6583 AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
6584 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6585 VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
6586 vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, true /* do lock */);
6587 return vkGetAccelerationStructureHandleNV_VkResult_return;
6588}
6589static void entry_vkCmdWriteAccelerationStructuresPropertiesNV(
6590 VkCommandBuffer commandBuffer,
6591 uint32_t accelerationStructureCount,
6592 const VkAccelerationStructureNV* pAccelerationStructures,
6593 VkQueryType queryType,
6594 VkQueryPool queryPool,
6595 uint32_t firstQuery)
6596{
6597 AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesNV");
6598 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6599 vkEnc->vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
6600}
6601static VkResult entry_vkCompileDeferredNV(
6602 VkDevice device,
6603 VkPipeline pipeline,
6604 uint32_t shader)
6605{
6606 AEMU_SCOPED_TRACE("vkCompileDeferredNV");
6607 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6608 VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
6609 vkCompileDeferredNV_VkResult_return = vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
6610 return vkCompileDeferredNV_VkResult_return;
6611}
6612static VkResult dynCheck_entry_vkCompileDeferredNV(
6613 VkDevice device,
6614 VkPipeline pipeline,
6615 uint32_t shader)
6616{
6617 auto resources = ResourceTracker::get();
6618 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6619 {
6620 sOnInvalidDynamicallyCheckedCall("vkCompileDeferredNV", "VK_NV_ray_tracing");
6621 }
6622 AEMU_SCOPED_TRACE("vkCompileDeferredNV");
6623 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6624 VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
6625 vkCompileDeferredNV_VkResult_return = vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
6626 return vkCompileDeferredNV_VkResult_return;
6627}
6628#endif
6629#ifdef VK_NV_representative_fragment_test
6630#endif
6631#ifdef VK_EXT_filter_cubic
6632#endif
6633#ifdef VK_QCOM_render_pass_shader_resolve
6634#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006635#ifdef VK_EXT_global_priority
6636#endif
6637#ifdef VK_EXT_external_memory_host
6638static VkResult entry_vkGetMemoryHostPointerPropertiesEXT(
6639 VkDevice device,
6640 VkExternalMemoryHandleTypeFlagBits handleType,
6641 const void* pHostPointer,
6642 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
6643{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006644 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006645 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006646 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006647 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006648 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
6649}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006650static VkResult dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT(
6651 VkDevice device,
6652 VkExternalMemoryHandleTypeFlagBits handleType,
6653 const void* pHostPointer,
6654 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
6655{
6656 auto resources = ResourceTracker::get();
6657 if (!resources->hasDeviceExtension(device, "VK_EXT_external_memory_host"))
6658 {
6659 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostPointerPropertiesEXT", "VK_EXT_external_memory_host");
6660 }
6661 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006662 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006663 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006664 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006665 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
6666}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006667#endif
6668#ifdef VK_AMD_buffer_marker
6669static void entry_vkCmdWriteBufferMarkerAMD(
6670 VkCommandBuffer commandBuffer,
6671 VkPipelineStageFlagBits pipelineStage,
6672 VkBuffer dstBuffer,
6673 VkDeviceSize dstOffset,
6674 uint32_t marker)
6675{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006676 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006677 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006678 vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006679}
6680#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006681#ifdef VK_AMD_pipeline_compiler_control
6682#endif
6683#ifdef VK_EXT_calibrated_timestamps
6684static VkResult entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
6685 VkPhysicalDevice physicalDevice,
6686 uint32_t* pTimeDomainCount,
6687 VkTimeDomainEXT* pTimeDomains)
6688{
6689 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCalibrateableTimeDomainsEXT");
6690 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6691 VkResult vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return = (VkResult)0;
6692 vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return = vkEnc->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, true /* do lock */);
6693 return vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return;
6694}
6695static VkResult entry_vkGetCalibratedTimestampsEXT(
6696 VkDevice device,
6697 uint32_t timestampCount,
6698 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
6699 uint64_t* pTimestamps,
6700 uint64_t* pMaxDeviation)
6701{
6702 AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
6703 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6704 VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
6705 vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
6706 return vkGetCalibratedTimestampsEXT_VkResult_return;
6707}
6708static VkResult dynCheck_entry_vkGetCalibratedTimestampsEXT(
6709 VkDevice device,
6710 uint32_t timestampCount,
6711 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
6712 uint64_t* pTimestamps,
6713 uint64_t* pMaxDeviation)
6714{
6715 auto resources = ResourceTracker::get();
6716 if (!resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps"))
6717 {
6718 sOnInvalidDynamicallyCheckedCall("vkGetCalibratedTimestampsEXT", "VK_EXT_calibrated_timestamps");
6719 }
6720 AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
6721 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6722 VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
6723 vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
6724 return vkGetCalibratedTimestampsEXT_VkResult_return;
6725}
6726#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006727#ifdef VK_AMD_shader_core_properties
6728#endif
Yilong Li353409a2022-01-04 02:37:56 -08006729#ifdef VK_EXT_video_decode_h265
6730#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006731#ifdef VK_AMD_memory_overallocation_behavior
6732#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006733#ifdef VK_EXT_vertex_attribute_divisor
6734#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006735#ifdef VK_GGP_frame_token
6736#endif
6737#ifdef VK_EXT_pipeline_creation_feedback
6738#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006739#ifdef VK_NV_shader_subgroup_partitioned
6740#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006741#ifdef VK_NV_compute_shader_derivatives
6742#endif
6743#ifdef VK_NV_mesh_shader
6744static void entry_vkCmdDrawMeshTasksNV(
6745 VkCommandBuffer commandBuffer,
6746 uint32_t taskCount,
6747 uint32_t firstTask)
6748{
6749 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksNV");
6750 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6751 vkEnc->vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, true /* do lock */);
6752}
6753static void entry_vkCmdDrawMeshTasksIndirectNV(
6754 VkCommandBuffer commandBuffer,
6755 VkBuffer buffer,
6756 VkDeviceSize offset,
6757 uint32_t drawCount,
6758 uint32_t stride)
6759{
6760 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectNV");
6761 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6762 vkEnc->vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
6763}
6764static void entry_vkCmdDrawMeshTasksIndirectCountNV(
6765 VkCommandBuffer commandBuffer,
6766 VkBuffer buffer,
6767 VkDeviceSize offset,
6768 VkBuffer countBuffer,
6769 VkDeviceSize countBufferOffset,
6770 uint32_t maxDrawCount,
6771 uint32_t stride)
6772{
6773 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectCountNV");
6774 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6775 vkEnc->vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
6776}
6777#endif
6778#ifdef VK_NV_fragment_shader_barycentric
6779#endif
6780#ifdef VK_NV_shader_image_footprint
6781#endif
6782#ifdef VK_NV_scissor_exclusive
6783static void entry_vkCmdSetExclusiveScissorNV(
6784 VkCommandBuffer commandBuffer,
6785 uint32_t firstExclusiveScissor,
6786 uint32_t exclusiveScissorCount,
6787 const VkRect2D* pExclusiveScissors)
6788{
6789 AEMU_SCOPED_TRACE("vkCmdSetExclusiveScissorNV");
6790 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6791 vkEnc->vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, true /* do lock */);
6792}
6793#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006794#ifdef VK_NV_device_diagnostic_checkpoints
6795static void entry_vkCmdSetCheckpointNV(
6796 VkCommandBuffer commandBuffer,
6797 const void* pCheckpointMarker)
6798{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006799 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006800 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006801 vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006802}
6803static void entry_vkGetQueueCheckpointDataNV(
6804 VkQueue queue,
6805 uint32_t* pCheckpointDataCount,
6806 VkCheckpointDataNV* pCheckpointData)
6807{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006808 AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006809 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006810 vkEnc->vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006811}
6812#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006813#ifdef VK_INTEL_shader_integer_functions2
6814#endif
6815#ifdef VK_INTEL_performance_query
6816static VkResult entry_vkInitializePerformanceApiINTEL(
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006817 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08006818 const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006819{
Yilong Lia8d45f12021-02-07 02:30:21 -08006820 AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006821 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Yilong Lia8d45f12021-02-07 02:30:21 -08006822 VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
6823 vkInitializePerformanceApiINTEL_VkResult_return = vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
6824 return vkInitializePerformanceApiINTEL_VkResult_return;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006825}
Yilong Lia8d45f12021-02-07 02:30:21 -08006826static VkResult dynCheck_entry_vkInitializePerformanceApiINTEL(
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006827 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08006828 const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006829{
6830 auto resources = ResourceTracker::get();
Yilong Lia8d45f12021-02-07 02:30:21 -08006831 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006832 {
Yilong Lia8d45f12021-02-07 02:30:21 -08006833 sOnInvalidDynamicallyCheckedCall("vkInitializePerformanceApiINTEL", "VK_INTEL_performance_query");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006834 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006835 AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006836 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Yilong Lia8d45f12021-02-07 02:30:21 -08006837 VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
6838 vkInitializePerformanceApiINTEL_VkResult_return = vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
6839 return vkInitializePerformanceApiINTEL_VkResult_return;
6840}
6841static void entry_vkUninitializePerformanceApiINTEL(
6842 VkDevice device)
6843{
6844 AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
6845 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6846 vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
6847}
6848static void dynCheck_entry_vkUninitializePerformanceApiINTEL(
6849 VkDevice device)
6850{
6851 auto resources = ResourceTracker::get();
6852 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6853 {
6854 sOnInvalidDynamicallyCheckedCall("vkUninitializePerformanceApiINTEL", "VK_INTEL_performance_query");
6855 }
6856 AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
6857 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6858 vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
6859}
6860static VkResult entry_vkCmdSetPerformanceMarkerINTEL(
6861 VkCommandBuffer commandBuffer,
6862 const VkPerformanceMarkerInfoINTEL* pMarkerInfo)
6863{
6864 AEMU_SCOPED_TRACE("vkCmdSetPerformanceMarkerINTEL");
6865 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6866 VkResult vkCmdSetPerformanceMarkerINTEL_VkResult_return = (VkResult)0;
6867 vkCmdSetPerformanceMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
6868 return vkCmdSetPerformanceMarkerINTEL_VkResult_return;
6869}
6870static VkResult entry_vkCmdSetPerformanceStreamMarkerINTEL(
6871 VkCommandBuffer commandBuffer,
6872 const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo)
6873{
6874 AEMU_SCOPED_TRACE("vkCmdSetPerformanceStreamMarkerINTEL");
6875 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6876 VkResult vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = (VkResult)0;
6877 vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
6878 return vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return;
6879}
6880static VkResult entry_vkCmdSetPerformanceOverrideINTEL(
6881 VkCommandBuffer commandBuffer,
6882 const VkPerformanceOverrideInfoINTEL* pOverrideInfo)
6883{
6884 AEMU_SCOPED_TRACE("vkCmdSetPerformanceOverrideINTEL");
6885 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6886 VkResult vkCmdSetPerformanceOverrideINTEL_VkResult_return = (VkResult)0;
6887 vkCmdSetPerformanceOverrideINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, true /* do lock */);
6888 return vkCmdSetPerformanceOverrideINTEL_VkResult_return;
6889}
6890static VkResult entry_vkAcquirePerformanceConfigurationINTEL(
6891 VkDevice device,
6892 const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
6893 VkPerformanceConfigurationINTEL* pConfiguration)
6894{
6895 AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
6896 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6897 VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6898 vkAcquirePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, true /* do lock */);
6899 return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
6900}
6901static VkResult dynCheck_entry_vkAcquirePerformanceConfigurationINTEL(
6902 VkDevice device,
6903 const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
6904 VkPerformanceConfigurationINTEL* pConfiguration)
6905{
6906 auto resources = ResourceTracker::get();
6907 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6908 {
6909 sOnInvalidDynamicallyCheckedCall("vkAcquirePerformanceConfigurationINTEL", "VK_INTEL_performance_query");
6910 }
6911 AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
6912 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6913 VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6914 vkAcquirePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, true /* do lock */);
6915 return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
6916}
6917static VkResult entry_vkReleasePerformanceConfigurationINTEL(
6918 VkDevice device,
6919 VkPerformanceConfigurationINTEL configuration)
6920{
6921 AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
6922 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6923 VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6924 vkReleasePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
6925 return vkReleasePerformanceConfigurationINTEL_VkResult_return;
6926}
6927static VkResult dynCheck_entry_vkReleasePerformanceConfigurationINTEL(
6928 VkDevice device,
6929 VkPerformanceConfigurationINTEL configuration)
6930{
6931 auto resources = ResourceTracker::get();
6932 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6933 {
6934 sOnInvalidDynamicallyCheckedCall("vkReleasePerformanceConfigurationINTEL", "VK_INTEL_performance_query");
6935 }
6936 AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
6937 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6938 VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6939 vkReleasePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
6940 return vkReleasePerformanceConfigurationINTEL_VkResult_return;
6941}
6942static VkResult entry_vkQueueSetPerformanceConfigurationINTEL(
6943 VkQueue queue,
6944 VkPerformanceConfigurationINTEL configuration)
6945{
6946 AEMU_SCOPED_TRACE("vkQueueSetPerformanceConfigurationINTEL");
6947 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
6948 VkResult vkQueueSetPerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6949 vkQueueSetPerformanceConfigurationINTEL_VkResult_return = vkEnc->vkQueueSetPerformanceConfigurationINTEL(queue, configuration, true /* do lock */);
6950 return vkQueueSetPerformanceConfigurationINTEL_VkResult_return;
6951}
6952static VkResult entry_vkGetPerformanceParameterINTEL(
6953 VkDevice device,
6954 VkPerformanceParameterTypeINTEL parameter,
6955 VkPerformanceValueINTEL* pValue)
6956{
6957 AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
6958 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6959 VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
6960 vkGetPerformanceParameterINTEL_VkResult_return = vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
6961 return vkGetPerformanceParameterINTEL_VkResult_return;
6962}
6963static VkResult dynCheck_entry_vkGetPerformanceParameterINTEL(
6964 VkDevice device,
6965 VkPerformanceParameterTypeINTEL parameter,
6966 VkPerformanceValueINTEL* pValue)
6967{
6968 auto resources = ResourceTracker::get();
6969 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6970 {
6971 sOnInvalidDynamicallyCheckedCall("vkGetPerformanceParameterINTEL", "VK_INTEL_performance_query");
6972 }
6973 AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
6974 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6975 VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
6976 vkGetPerformanceParameterINTEL_VkResult_return = vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
6977 return vkGetPerformanceParameterINTEL_VkResult_return;
6978}
6979#endif
6980#ifdef VK_EXT_pci_bus_info
6981#endif
6982#ifdef VK_AMD_display_native_hdr
6983static void entry_vkSetLocalDimmingAMD(
6984 VkDevice device,
6985 VkSwapchainKHR swapChain,
6986 VkBool32 localDimmingEnable)
6987{
6988 AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
6989 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6990 vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
6991}
6992static void dynCheck_entry_vkSetLocalDimmingAMD(
6993 VkDevice device,
6994 VkSwapchainKHR swapChain,
6995 VkBool32 localDimmingEnable)
6996{
6997 auto resources = ResourceTracker::get();
6998 if (!resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr"))
6999 {
7000 sOnInvalidDynamicallyCheckedCall("vkSetLocalDimmingAMD", "VK_AMD_display_native_hdr");
7001 }
7002 AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
7003 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7004 vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
7005}
7006#endif
7007#ifdef VK_FUCHSIA_imagepipe_surface
7008static VkResult entry_vkCreateImagePipeSurfaceFUCHSIA(
7009 VkInstance instance,
7010 const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
7011 const VkAllocationCallbacks* pAllocator,
7012 VkSurfaceKHR* pSurface)
7013{
7014 AEMU_SCOPED_TRACE("vkCreateImagePipeSurfaceFUCHSIA");
7015 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7016 VkResult vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = (VkResult)0;
7017 vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = vkEnc->vkCreateImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
7018 return vkCreateImagePipeSurfaceFUCHSIA_VkResult_return;
7019}
7020#endif
7021#ifdef VK_EXT_metal_surface
7022static VkResult entry_vkCreateMetalSurfaceEXT(
7023 VkInstance instance,
7024 const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
7025 const VkAllocationCallbacks* pAllocator,
7026 VkSurfaceKHR* pSurface)
7027{
7028 AEMU_SCOPED_TRACE("vkCreateMetalSurfaceEXT");
7029 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7030 VkResult vkCreateMetalSurfaceEXT_VkResult_return = (VkResult)0;
7031 vkCreateMetalSurfaceEXT_VkResult_return = vkEnc->vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
7032 return vkCreateMetalSurfaceEXT_VkResult_return;
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007033}
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08007034#endif
Yilong Li48081632021-04-13 22:38:10 -07007035#ifdef VK_EXT_fragment_density_map
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08007036#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007037#ifdef VK_EXT_scalar_block_layout
7038#endif
7039#ifdef VK_GOOGLE_hlsl_functionality1
7040#endif
7041#ifdef VK_GOOGLE_decorate_string
7042#endif
7043#ifdef VK_EXT_subgroup_size_control
7044#endif
7045#ifdef VK_AMD_shader_core_properties2
7046#endif
7047#ifdef VK_AMD_device_coherent_memory
7048#endif
7049#ifdef VK_EXT_shader_image_atomic_int64
7050#endif
7051#ifdef VK_EXT_memory_budget
7052#endif
7053#ifdef VK_EXT_memory_priority
7054#endif
7055#ifdef VK_NV_dedicated_allocation_image_aliasing
7056#endif
7057#ifdef VK_EXT_buffer_device_address
7058static VkDeviceAddress entry_vkGetBufferDeviceAddressEXT(
7059 VkDevice device,
7060 const VkBufferDeviceAddressInfo* pInfo)
7061{
7062 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
7063 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7064 VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
7065 vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
7066 return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
7067}
7068static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressEXT(
7069 VkDevice device,
7070 const VkBufferDeviceAddressInfo* pInfo)
7071{
7072 auto resources = ResourceTracker::get();
7073 if (!resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address"))
7074 {
7075 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressEXT", "VK_EXT_buffer_device_address");
7076 }
7077 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
7078 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7079 VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
7080 vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
7081 return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
7082}
7083#endif
7084#ifdef VK_EXT_tooling_info
7085static VkResult entry_vkGetPhysicalDeviceToolPropertiesEXT(
7086 VkPhysicalDevice physicalDevice,
7087 uint32_t* pToolCount,
7088 VkPhysicalDeviceToolPropertiesEXT* pToolProperties)
7089{
7090 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceToolPropertiesEXT");
7091 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7092 VkResult vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = (VkResult)0;
7093 vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = vkEnc->vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, true /* do lock */);
7094 return vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return;
7095}
7096#endif
7097#ifdef VK_EXT_separate_stencil_usage
7098#endif
7099#ifdef VK_EXT_validation_features
7100#endif
7101#ifdef VK_NV_cooperative_matrix
7102static VkResult entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
7103 VkPhysicalDevice physicalDevice,
7104 uint32_t* pPropertyCount,
7105 VkCooperativeMatrixPropertiesNV* pProperties)
7106{
7107 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
7108 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7109 VkResult vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return = (VkResult)0;
7110 vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
7111 return vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return;
7112}
7113#endif
7114#ifdef VK_NV_coverage_reduction_mode
7115static VkResult entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
7116 VkPhysicalDevice physicalDevice,
7117 uint32_t* pCombinationCount,
7118 VkFramebufferMixedSamplesCombinationNV* pCombinations)
7119{
7120 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
7121 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7122 VkResult vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return = (VkResult)0;
7123 vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return = vkEnc->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, true /* do lock */);
7124 return vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return;
7125}
7126#endif
7127#ifdef VK_EXT_fragment_shader_interlock
7128#endif
7129#ifdef VK_EXT_ycbcr_image_arrays
7130#endif
Yilong Li353409a2022-01-04 02:37:56 -08007131#ifdef VK_EXT_provoking_vertex
7132#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007133#ifdef VK_EXT_full_screen_exclusive
7134static VkResult entry_vkGetPhysicalDeviceSurfacePresentModes2EXT(
7135 VkPhysicalDevice physicalDevice,
7136 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
7137 uint32_t* pPresentModeCount,
7138 VkPresentModeKHR* pPresentModes)
7139{
7140 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModes2EXT");
7141 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7142 VkResult vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
7143 vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes, true /* do lock */);
7144 return vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return;
7145}
7146static VkResult entry_vkAcquireFullScreenExclusiveModeEXT(
7147 VkDevice device,
7148 VkSwapchainKHR swapchain)
7149{
7150 AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
7151 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7152 VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
7153 vkAcquireFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
7154 return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
7155}
7156static VkResult dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT(
7157 VkDevice device,
7158 VkSwapchainKHR swapchain)
7159{
7160 auto resources = ResourceTracker::get();
7161 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
7162 {
7163 sOnInvalidDynamicallyCheckedCall("vkAcquireFullScreenExclusiveModeEXT", "VK_EXT_full_screen_exclusive");
7164 }
7165 AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
7166 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7167 VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
7168 vkAcquireFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
7169 return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
7170}
7171static VkResult entry_vkReleaseFullScreenExclusiveModeEXT(
7172 VkDevice device,
7173 VkSwapchainKHR swapchain)
7174{
7175 AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
7176 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7177 VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
7178 vkReleaseFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
7179 return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
7180}
7181static VkResult dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT(
7182 VkDevice device,
7183 VkSwapchainKHR swapchain)
7184{
7185 auto resources = ResourceTracker::get();
7186 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
7187 {
7188 sOnInvalidDynamicallyCheckedCall("vkReleaseFullScreenExclusiveModeEXT", "VK_EXT_full_screen_exclusive");
7189 }
7190 AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
7191 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7192 VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
7193 vkReleaseFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
7194 return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
7195}
7196static VkResult entry_vkGetDeviceGroupSurfacePresentModes2EXT(
7197 VkDevice device,
7198 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
7199 VkDeviceGroupPresentModeFlagsKHR* pModes)
7200{
7201 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
7202 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7203 VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
7204 vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, true /* do lock */);
7205 return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
7206}
7207static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT(
7208 VkDevice device,
7209 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
7210 VkDeviceGroupPresentModeFlagsKHR* pModes)
7211{
7212 auto resources = ResourceTracker::get();
7213 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
7214 {
7215 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModes2EXT", "VK_EXT_full_screen_exclusive");
7216 }
7217 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
7218 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7219 VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
7220 vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, true /* do lock */);
7221 return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
7222}
7223#endif
7224#ifdef VK_EXT_headless_surface
7225static VkResult entry_vkCreateHeadlessSurfaceEXT(
7226 VkInstance instance,
7227 const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo,
7228 const VkAllocationCallbacks* pAllocator,
7229 VkSurfaceKHR* pSurface)
7230{
7231 AEMU_SCOPED_TRACE("vkCreateHeadlessSurfaceEXT");
7232 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7233 VkResult vkCreateHeadlessSurfaceEXT_VkResult_return = (VkResult)0;
7234 vkCreateHeadlessSurfaceEXT_VkResult_return = vkEnc->vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
7235 return vkCreateHeadlessSurfaceEXT_VkResult_return;
7236}
7237#endif
7238#ifdef VK_EXT_line_rasterization
7239static void entry_vkCmdSetLineStippleEXT(
7240 VkCommandBuffer commandBuffer,
7241 uint32_t lineStippleFactor,
7242 uint16_t lineStipplePattern)
7243{
7244 AEMU_SCOPED_TRACE("vkCmdSetLineStippleEXT");
7245 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7246 vkEnc->vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, true /* do lock */);
7247}
7248#endif
7249#ifdef VK_EXT_shader_atomic_float
7250#endif
7251#ifdef VK_EXT_host_query_reset
7252static void entry_vkResetQueryPoolEXT(
7253 VkDevice device,
7254 VkQueryPool queryPool,
7255 uint32_t firstQuery,
7256 uint32_t queryCount)
7257{
7258 AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
7259 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7260 vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
7261}
7262static void dynCheck_entry_vkResetQueryPoolEXT(
7263 VkDevice device,
7264 VkQueryPool queryPool,
7265 uint32_t firstQuery,
7266 uint32_t queryCount)
7267{
7268 auto resources = ResourceTracker::get();
7269 if (!resources->hasDeviceExtension(device, "VK_EXT_host_query_reset"))
7270 {
7271 sOnInvalidDynamicallyCheckedCall("vkResetQueryPoolEXT", "VK_EXT_host_query_reset");
7272 }
7273 AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
7274 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7275 vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
7276}
7277#endif
7278#ifdef VK_EXT_index_type_uint8
7279#endif
7280#ifdef VK_EXT_extended_dynamic_state
7281static void entry_vkCmdSetCullModeEXT(
7282 VkCommandBuffer commandBuffer,
7283 VkCullModeFlags cullMode)
7284{
7285 AEMU_SCOPED_TRACE("vkCmdSetCullModeEXT");
7286 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7287 vkEnc->vkCmdSetCullModeEXT(commandBuffer, cullMode, true /* do lock */);
7288}
7289static void entry_vkCmdSetFrontFaceEXT(
7290 VkCommandBuffer commandBuffer,
7291 VkFrontFace frontFace)
7292{
7293 AEMU_SCOPED_TRACE("vkCmdSetFrontFaceEXT");
7294 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7295 vkEnc->vkCmdSetFrontFaceEXT(commandBuffer, frontFace, true /* do lock */);
7296}
7297static void entry_vkCmdSetPrimitiveTopologyEXT(
7298 VkCommandBuffer commandBuffer,
7299 VkPrimitiveTopology primitiveTopology)
7300{
7301 AEMU_SCOPED_TRACE("vkCmdSetPrimitiveTopologyEXT");
7302 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7303 vkEnc->vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, true /* do lock */);
7304}
7305static void entry_vkCmdSetViewportWithCountEXT(
7306 VkCommandBuffer commandBuffer,
7307 uint32_t viewportCount,
7308 const VkViewport* pViewports)
7309{
7310 AEMU_SCOPED_TRACE("vkCmdSetViewportWithCountEXT");
7311 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7312 vkEnc->vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, true /* do lock */);
7313}
7314static void entry_vkCmdSetScissorWithCountEXT(
7315 VkCommandBuffer commandBuffer,
7316 uint32_t scissorCount,
7317 const VkRect2D* pScissors)
7318{
7319 AEMU_SCOPED_TRACE("vkCmdSetScissorWithCountEXT");
7320 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7321 vkEnc->vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, true /* do lock */);
7322}
7323static void entry_vkCmdBindVertexBuffers2EXT(
7324 VkCommandBuffer commandBuffer,
7325 uint32_t firstBinding,
7326 uint32_t bindingCount,
7327 const VkBuffer* pBuffers,
7328 const VkDeviceSize* pOffsets,
7329 const VkDeviceSize* pSizes,
7330 const VkDeviceSize* pStrides)
7331{
7332 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers2EXT");
7333 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7334 vkEnc->vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, true /* do lock */);
7335}
7336static void entry_vkCmdSetDepthTestEnableEXT(
7337 VkCommandBuffer commandBuffer,
7338 VkBool32 depthTestEnable)
7339{
7340 AEMU_SCOPED_TRACE("vkCmdSetDepthTestEnableEXT");
7341 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7342 vkEnc->vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, true /* do lock */);
7343}
7344static void entry_vkCmdSetDepthWriteEnableEXT(
7345 VkCommandBuffer commandBuffer,
7346 VkBool32 depthWriteEnable)
7347{
7348 AEMU_SCOPED_TRACE("vkCmdSetDepthWriteEnableEXT");
7349 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7350 vkEnc->vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, true /* do lock */);
7351}
7352static void entry_vkCmdSetDepthCompareOpEXT(
7353 VkCommandBuffer commandBuffer,
7354 VkCompareOp depthCompareOp)
7355{
7356 AEMU_SCOPED_TRACE("vkCmdSetDepthCompareOpEXT");
7357 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7358 vkEnc->vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, true /* do lock */);
7359}
7360static void entry_vkCmdSetDepthBoundsTestEnableEXT(
7361 VkCommandBuffer commandBuffer,
7362 VkBool32 depthBoundsTestEnable)
7363{
7364 AEMU_SCOPED_TRACE("vkCmdSetDepthBoundsTestEnableEXT");
7365 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7366 vkEnc->vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, true /* do lock */);
7367}
7368static void entry_vkCmdSetStencilTestEnableEXT(
7369 VkCommandBuffer commandBuffer,
7370 VkBool32 stencilTestEnable)
7371{
7372 AEMU_SCOPED_TRACE("vkCmdSetStencilTestEnableEXT");
7373 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7374 vkEnc->vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, true /* do lock */);
7375}
7376static void entry_vkCmdSetStencilOpEXT(
7377 VkCommandBuffer commandBuffer,
7378 VkStencilFaceFlags faceMask,
7379 VkStencilOp failOp,
7380 VkStencilOp passOp,
7381 VkStencilOp depthFailOp,
7382 VkCompareOp compareOp)
7383{
7384 AEMU_SCOPED_TRACE("vkCmdSetStencilOpEXT");
7385 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7386 vkEnc->vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, true /* do lock */);
7387}
7388#endif
Yilong Li353409a2022-01-04 02:37:56 -08007389#ifdef VK_EXT_shader_atomic_float2
7390#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007391#ifdef VK_EXT_shader_demote_to_helper_invocation
7392#endif
7393#ifdef VK_NV_device_generated_commands
7394static void entry_vkGetGeneratedCommandsMemoryRequirementsNV(
7395 VkDevice device,
7396 const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
7397 VkMemoryRequirements2* pMemoryRequirements)
7398{
7399 AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
7400 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7401 vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
7402}
7403static void dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV(
7404 VkDevice device,
7405 const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
7406 VkMemoryRequirements2* pMemoryRequirements)
7407{
7408 auto resources = ResourceTracker::get();
7409 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
7410 {
7411 sOnInvalidDynamicallyCheckedCall("vkGetGeneratedCommandsMemoryRequirementsNV", "VK_NV_device_generated_commands");
7412 }
7413 AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
7414 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7415 vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
7416}
7417static void entry_vkCmdPreprocessGeneratedCommandsNV(
7418 VkCommandBuffer commandBuffer,
7419 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
7420{
7421 AEMU_SCOPED_TRACE("vkCmdPreprocessGeneratedCommandsNV");
7422 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7423 vkEnc->vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, true /* do lock */);
7424}
7425static void entry_vkCmdExecuteGeneratedCommandsNV(
7426 VkCommandBuffer commandBuffer,
7427 VkBool32 isPreprocessed,
7428 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
7429{
7430 AEMU_SCOPED_TRACE("vkCmdExecuteGeneratedCommandsNV");
7431 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7432 vkEnc->vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, true /* do lock */);
7433}
7434static void entry_vkCmdBindPipelineShaderGroupNV(
7435 VkCommandBuffer commandBuffer,
7436 VkPipelineBindPoint pipelineBindPoint,
7437 VkPipeline pipeline,
7438 uint32_t groupIndex)
7439{
7440 AEMU_SCOPED_TRACE("vkCmdBindPipelineShaderGroupNV");
7441 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7442 vkEnc->vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, true /* do lock */);
7443}
7444static VkResult entry_vkCreateIndirectCommandsLayoutNV(
7445 VkDevice device,
7446 const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
7447 const VkAllocationCallbacks* pAllocator,
7448 VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
7449{
7450 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
7451 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7452 VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
7453 vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
7454 return vkCreateIndirectCommandsLayoutNV_VkResult_return;
7455}
7456static VkResult dynCheck_entry_vkCreateIndirectCommandsLayoutNV(
7457 VkDevice device,
7458 const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
7459 const VkAllocationCallbacks* pAllocator,
7460 VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
7461{
7462 auto resources = ResourceTracker::get();
7463 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
7464 {
7465 sOnInvalidDynamicallyCheckedCall("vkCreateIndirectCommandsLayoutNV", "VK_NV_device_generated_commands");
7466 }
7467 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
7468 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7469 VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
7470 vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
7471 return vkCreateIndirectCommandsLayoutNV_VkResult_return;
7472}
7473static void entry_vkDestroyIndirectCommandsLayoutNV(
7474 VkDevice device,
7475 VkIndirectCommandsLayoutNV indirectCommandsLayout,
7476 const VkAllocationCallbacks* pAllocator)
7477{
7478 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
7479 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7480 vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, true /* do lock */);
7481}
7482static void dynCheck_entry_vkDestroyIndirectCommandsLayoutNV(
7483 VkDevice device,
7484 VkIndirectCommandsLayoutNV indirectCommandsLayout,
7485 const VkAllocationCallbacks* pAllocator)
7486{
7487 auto resources = ResourceTracker::get();
7488 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
7489 {
7490 sOnInvalidDynamicallyCheckedCall("vkDestroyIndirectCommandsLayoutNV", "VK_NV_device_generated_commands");
7491 }
7492 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
7493 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7494 vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, true /* do lock */);
7495}
7496#endif
Yilong Li353409a2022-01-04 02:37:56 -08007497#ifdef VK_NV_inherited_viewport_scissor
7498#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007499#ifdef VK_EXT_texel_buffer_alignment
7500#endif
7501#ifdef VK_QCOM_render_pass_transform
7502#endif
7503#ifdef VK_EXT_device_memory_report
7504#endif
Yilong Li353409a2022-01-04 02:37:56 -08007505#ifdef VK_EXT_acquire_drm_display
7506static VkResult entry_vkAcquireDrmDisplayEXT(
7507 VkPhysicalDevice physicalDevice,
7508 int32_t drmFd,
7509 VkDisplayKHR display)
7510{
7511 AEMU_SCOPED_TRACE("vkAcquireDrmDisplayEXT");
7512 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7513 VkResult vkAcquireDrmDisplayEXT_VkResult_return = (VkResult)0;
7514 vkAcquireDrmDisplayEXT_VkResult_return = vkEnc->vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, true /* do lock */);
7515 return vkAcquireDrmDisplayEXT_VkResult_return;
7516}
7517static VkResult entry_vkGetDrmDisplayEXT(
7518 VkPhysicalDevice physicalDevice,
7519 int32_t drmFd,
7520 uint32_t connectorId,
7521 VkDisplayKHR* display)
7522{
7523 AEMU_SCOPED_TRACE("vkGetDrmDisplayEXT");
7524 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7525 VkResult vkGetDrmDisplayEXT_VkResult_return = (VkResult)0;
7526 vkGetDrmDisplayEXT_VkResult_return = vkEnc->vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, true /* do lock */);
7527 return vkGetDrmDisplayEXT_VkResult_return;
7528}
7529#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007530#ifdef VK_EXT_robustness2
7531#endif
7532#ifdef VK_EXT_custom_border_color
7533#endif
7534#ifdef VK_GOOGLE_user_type
7535#endif
7536#ifdef VK_EXT_private_data
7537static VkResult entry_vkCreatePrivateDataSlotEXT(
7538 VkDevice device,
7539 const VkPrivateDataSlotCreateInfoEXT* pCreateInfo,
7540 const VkAllocationCallbacks* pAllocator,
7541 VkPrivateDataSlotEXT* pPrivateDataSlot)
7542{
7543 AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
7544 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7545 VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
7546 vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
7547 return vkCreatePrivateDataSlotEXT_VkResult_return;
7548}
7549static VkResult dynCheck_entry_vkCreatePrivateDataSlotEXT(
7550 VkDevice device,
7551 const VkPrivateDataSlotCreateInfoEXT* pCreateInfo,
7552 const VkAllocationCallbacks* pAllocator,
7553 VkPrivateDataSlotEXT* pPrivateDataSlot)
7554{
7555 auto resources = ResourceTracker::get();
7556 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
7557 {
7558 sOnInvalidDynamicallyCheckedCall("vkCreatePrivateDataSlotEXT", "VK_EXT_private_data");
7559 }
7560 AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
7561 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7562 VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
7563 vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
7564 return vkCreatePrivateDataSlotEXT_VkResult_return;
7565}
7566static void entry_vkDestroyPrivateDataSlotEXT(
7567 VkDevice device,
7568 VkPrivateDataSlotEXT privateDataSlot,
7569 const VkAllocationCallbacks* pAllocator)
7570{
7571 AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
7572 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7573 vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
7574}
7575static void dynCheck_entry_vkDestroyPrivateDataSlotEXT(
7576 VkDevice device,
7577 VkPrivateDataSlotEXT privateDataSlot,
7578 const VkAllocationCallbacks* pAllocator)
7579{
7580 auto resources = ResourceTracker::get();
7581 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
7582 {
7583 sOnInvalidDynamicallyCheckedCall("vkDestroyPrivateDataSlotEXT", "VK_EXT_private_data");
7584 }
7585 AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
7586 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7587 vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
7588}
7589static VkResult entry_vkSetPrivateDataEXT(
7590 VkDevice device,
7591 VkObjectType objectType,
7592 uint64_t objectHandle,
7593 VkPrivateDataSlotEXT privateDataSlot,
7594 uint64_t data)
7595{
7596 AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
7597 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7598 VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
7599 vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
7600 return vkSetPrivateDataEXT_VkResult_return;
7601}
7602static VkResult dynCheck_entry_vkSetPrivateDataEXT(
7603 VkDevice device,
7604 VkObjectType objectType,
7605 uint64_t objectHandle,
7606 VkPrivateDataSlotEXT privateDataSlot,
7607 uint64_t data)
7608{
7609 auto resources = ResourceTracker::get();
7610 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
7611 {
7612 sOnInvalidDynamicallyCheckedCall("vkSetPrivateDataEXT", "VK_EXT_private_data");
7613 }
7614 AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
7615 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7616 VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
7617 vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
7618 return vkSetPrivateDataEXT_VkResult_return;
7619}
7620static void entry_vkGetPrivateDataEXT(
7621 VkDevice device,
7622 VkObjectType objectType,
7623 uint64_t objectHandle,
7624 VkPrivateDataSlotEXT privateDataSlot,
7625 uint64_t* pData)
7626{
7627 AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
7628 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7629 vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, true /* do lock */);
7630}
7631static void dynCheck_entry_vkGetPrivateDataEXT(
7632 VkDevice device,
7633 VkObjectType objectType,
7634 uint64_t objectHandle,
7635 VkPrivateDataSlotEXT privateDataSlot,
7636 uint64_t* pData)
7637{
7638 auto resources = ResourceTracker::get();
7639 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
7640 {
7641 sOnInvalidDynamicallyCheckedCall("vkGetPrivateDataEXT", "VK_EXT_private_data");
7642 }
7643 AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
7644 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7645 vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, true /* do lock */);
7646}
7647#endif
7648#ifdef VK_EXT_pipeline_creation_cache_control
7649#endif
7650#ifdef VK_NV_device_diagnostics_config
7651#endif
7652#ifdef VK_QCOM_render_pass_store_ops
7653#endif
7654#ifdef VK_NV_fragment_shading_rate_enums
7655static void entry_vkCmdSetFragmentShadingRateEnumNV(
7656 VkCommandBuffer commandBuffer,
7657 VkFragmentShadingRateNV shadingRate,
7658 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
7659{
7660 AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateEnumNV");
7661 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7662 vkEnc->vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, true /* do lock */);
7663}
7664#endif
Yilong Li353409a2022-01-04 02:37:56 -08007665#ifdef VK_NV_ray_tracing_motion_blur
7666#endif
7667#ifdef VK_EXT_ycbcr_2plane_444_formats
7668#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007669#ifdef VK_EXT_fragment_density_map2
7670#endif
7671#ifdef VK_QCOM_rotated_copy_commands
7672#endif
7673#ifdef VK_EXT_image_robustness
7674#endif
7675#ifdef VK_EXT_4444_formats
7676#endif
Yilong Li353409a2022-01-04 02:37:56 -08007677#ifdef VK_EXT_rgba10x6_formats
7678#endif
7679#ifdef VK_NV_acquire_winrt_display
7680static VkResult entry_vkAcquireWinrtDisplayNV(
7681 VkPhysicalDevice physicalDevice,
7682 VkDisplayKHR display)
7683{
7684 AEMU_SCOPED_TRACE("vkAcquireWinrtDisplayNV");
7685 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7686 VkResult vkAcquireWinrtDisplayNV_VkResult_return = (VkResult)0;
7687 vkAcquireWinrtDisplayNV_VkResult_return = vkEnc->vkAcquireWinrtDisplayNV(physicalDevice, display, true /* do lock */);
7688 return vkAcquireWinrtDisplayNV_VkResult_return;
7689}
7690static VkResult entry_vkGetWinrtDisplayNV(
7691 VkPhysicalDevice physicalDevice,
7692 uint32_t deviceRelativeId,
7693 VkDisplayKHR* pDisplay)
7694{
7695 AEMU_SCOPED_TRACE("vkGetWinrtDisplayNV");
7696 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7697 VkResult vkGetWinrtDisplayNV_VkResult_return = (VkResult)0;
7698 vkGetWinrtDisplayNV_VkResult_return = vkEnc->vkGetWinrtDisplayNV(physicalDevice, deviceRelativeId, pDisplay, true /* do lock */);
7699 return vkGetWinrtDisplayNV_VkResult_return;
7700}
7701#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007702#ifdef VK_EXT_directfb_surface
7703static VkResult entry_vkCreateDirectFBSurfaceEXT(
7704 VkInstance instance,
7705 const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo,
7706 const VkAllocationCallbacks* pAllocator,
7707 VkSurfaceKHR* pSurface)
7708{
7709 AEMU_SCOPED_TRACE("vkCreateDirectFBSurfaceEXT");
7710 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7711 VkResult vkCreateDirectFBSurfaceEXT_VkResult_return = (VkResult)0;
7712 vkCreateDirectFBSurfaceEXT_VkResult_return = vkEnc->vkCreateDirectFBSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
7713 return vkCreateDirectFBSurfaceEXT_VkResult_return;
7714}
7715static VkBool32 entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT(
7716 VkPhysicalDevice physicalDevice,
7717 uint32_t queueFamilyIndex,
7718 IDirectFB* dfb)
7719{
7720 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDirectFBPresentationSupportEXT");
7721 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7722 VkBool32 vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return = (VkBool32)0;
7723 vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return = vkEnc->vkGetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice, queueFamilyIndex, dfb, true /* do lock */);
7724 return vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return;
7725}
7726#endif
Yilong Li353409a2022-01-04 02:37:56 -08007727#ifdef VK_VALVE_mutable_descriptor_type
7728#endif
7729#ifdef VK_EXT_vertex_input_dynamic_state
7730static void entry_vkCmdSetVertexInputEXT(
7731 VkCommandBuffer commandBuffer,
7732 uint32_t vertexBindingDescriptionCount,
7733 const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions,
7734 uint32_t vertexAttributeDescriptionCount,
7735 const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions)
7736{
7737 AEMU_SCOPED_TRACE("vkCmdSetVertexInputEXT");
7738 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7739 vkEnc->vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, true /* do lock */);
7740}
7741#endif
7742#ifdef VK_EXT_physical_device_drm
7743#endif
7744#ifdef VK_EXT_primitive_topology_list_restart
7745#endif
7746#ifdef VK_FUCHSIA_external_memory
7747static VkResult entry_vkGetMemoryZirconHandleFUCHSIA(
7748 VkDevice device,
7749 const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
7750 zx_handle_t* pZirconHandle)
7751{
7752 AEMU_SCOPED_TRACE("vkGetMemoryZirconHandleFUCHSIA");
7753 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7754 VkResult vkGetMemoryZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
7755 vkGetMemoryZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetMemoryZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
7756 return vkGetMemoryZirconHandleFUCHSIA_VkResult_return;
7757}
7758static VkResult dynCheck_entry_vkGetMemoryZirconHandleFUCHSIA(
7759 VkDevice device,
7760 const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
7761 zx_handle_t* pZirconHandle)
7762{
7763 auto resources = ResourceTracker::get();
7764 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_external_memory"))
7765 {
7766 sOnInvalidDynamicallyCheckedCall("vkGetMemoryZirconHandleFUCHSIA", "VK_FUCHSIA_external_memory");
7767 }
7768 AEMU_SCOPED_TRACE("vkGetMemoryZirconHandleFUCHSIA");
7769 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7770 VkResult vkGetMemoryZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
7771 vkGetMemoryZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetMemoryZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
7772 return vkGetMemoryZirconHandleFUCHSIA_VkResult_return;
7773}
7774static VkResult entry_vkGetMemoryZirconHandlePropertiesFUCHSIA(
7775 VkDevice device,
7776 VkExternalMemoryHandleTypeFlagBits handleType,
7777 zx_handle_t zirconHandle,
7778 VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties)
7779{
7780 AEMU_SCOPED_TRACE("vkGetMemoryZirconHandlePropertiesFUCHSIA");
7781 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7782 VkResult vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return = (VkResult)0;
7783 vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return = vkEnc->vkGetMemoryZirconHandlePropertiesFUCHSIA(device, handleType, zirconHandle, pMemoryZirconHandleProperties, true /* do lock */);
7784 return vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return;
7785}
7786static VkResult dynCheck_entry_vkGetMemoryZirconHandlePropertiesFUCHSIA(
7787 VkDevice device,
7788 VkExternalMemoryHandleTypeFlagBits handleType,
7789 zx_handle_t zirconHandle,
7790 VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties)
7791{
7792 auto resources = ResourceTracker::get();
7793 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_external_memory"))
7794 {
7795 sOnInvalidDynamicallyCheckedCall("vkGetMemoryZirconHandlePropertiesFUCHSIA", "VK_FUCHSIA_external_memory");
7796 }
7797 AEMU_SCOPED_TRACE("vkGetMemoryZirconHandlePropertiesFUCHSIA");
7798 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7799 VkResult vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return = (VkResult)0;
7800 vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return = vkEnc->vkGetMemoryZirconHandlePropertiesFUCHSIA(device, handleType, zirconHandle, pMemoryZirconHandleProperties, true /* do lock */);
7801 return vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return;
7802}
7803#endif
7804#ifdef VK_FUCHSIA_external_semaphore
7805static VkResult entry_vkImportSemaphoreZirconHandleFUCHSIA(
7806 VkDevice device,
7807 const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo)
7808{
7809 AEMU_SCOPED_TRACE("vkImportSemaphoreZirconHandleFUCHSIA");
7810 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7811 VkResult vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
7812 vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return = vkEnc->vkImportSemaphoreZirconHandleFUCHSIA(device, pImportSemaphoreZirconHandleInfo, true /* do lock */);
7813 return vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return;
7814}
7815static VkResult dynCheck_entry_vkImportSemaphoreZirconHandleFUCHSIA(
7816 VkDevice device,
7817 const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo)
7818{
7819 auto resources = ResourceTracker::get();
7820 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_external_semaphore"))
7821 {
7822 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreZirconHandleFUCHSIA", "VK_FUCHSIA_external_semaphore");
7823 }
7824 AEMU_SCOPED_TRACE("vkImportSemaphoreZirconHandleFUCHSIA");
7825 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7826 VkResult vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
7827 vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return = vkEnc->vkImportSemaphoreZirconHandleFUCHSIA(device, pImportSemaphoreZirconHandleInfo, true /* do lock */);
7828 return vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return;
7829}
7830static VkResult entry_vkGetSemaphoreZirconHandleFUCHSIA(
7831 VkDevice device,
7832 const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
7833 zx_handle_t* pZirconHandle)
7834{
7835 AEMU_SCOPED_TRACE("vkGetSemaphoreZirconHandleFUCHSIA");
7836 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7837 VkResult vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
7838 vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetSemaphoreZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
7839 return vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return;
7840}
7841static VkResult dynCheck_entry_vkGetSemaphoreZirconHandleFUCHSIA(
7842 VkDevice device,
7843 const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
7844 zx_handle_t* pZirconHandle)
7845{
7846 auto resources = ResourceTracker::get();
7847 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_external_semaphore"))
7848 {
7849 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreZirconHandleFUCHSIA", "VK_FUCHSIA_external_semaphore");
7850 }
7851 AEMU_SCOPED_TRACE("vkGetSemaphoreZirconHandleFUCHSIA");
7852 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7853 VkResult vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
7854 vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetSemaphoreZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
7855 return vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return;
7856}
7857#endif
7858#ifdef VK_FUCHSIA_buffer_collection
7859static VkResult entry_vkCreateBufferCollectionFUCHSIA(
7860 VkDevice device,
7861 const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo,
7862 const VkAllocationCallbacks* pAllocator,
7863 VkBufferCollectionFUCHSIA* pCollection)
7864{
7865 AEMU_SCOPED_TRACE("vkCreateBufferCollectionFUCHSIA");
7866 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7867 VkResult vkCreateBufferCollectionFUCHSIA_VkResult_return = (VkResult)0;
7868 vkCreateBufferCollectionFUCHSIA_VkResult_return = vkEnc->vkCreateBufferCollectionFUCHSIA(device, pCreateInfo, pAllocator, pCollection, true /* do lock */);
7869 return vkCreateBufferCollectionFUCHSIA_VkResult_return;
7870}
7871static VkResult dynCheck_entry_vkCreateBufferCollectionFUCHSIA(
7872 VkDevice device,
7873 const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo,
7874 const VkAllocationCallbacks* pAllocator,
7875 VkBufferCollectionFUCHSIA* pCollection)
7876{
7877 auto resources = ResourceTracker::get();
7878 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection"))
7879 {
7880 sOnInvalidDynamicallyCheckedCall("vkCreateBufferCollectionFUCHSIA", "VK_FUCHSIA_buffer_collection");
7881 }
7882 AEMU_SCOPED_TRACE("vkCreateBufferCollectionFUCHSIA");
7883 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7884 VkResult vkCreateBufferCollectionFUCHSIA_VkResult_return = (VkResult)0;
7885 vkCreateBufferCollectionFUCHSIA_VkResult_return = vkEnc->vkCreateBufferCollectionFUCHSIA(device, pCreateInfo, pAllocator, pCollection, true /* do lock */);
7886 return vkCreateBufferCollectionFUCHSIA_VkResult_return;
7887}
7888static VkResult entry_vkSetBufferCollectionImageConstraintsFUCHSIA(
7889 VkDevice device,
7890 VkBufferCollectionFUCHSIA collection,
7891 const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo)
7892{
7893 AEMU_SCOPED_TRACE("vkSetBufferCollectionImageConstraintsFUCHSIA");
7894 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7895 VkResult vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return = (VkResult)0;
7896 vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return = vkEnc->vkSetBufferCollectionImageConstraintsFUCHSIA(device, collection, pImageConstraintsInfo, true /* do lock */);
7897 return vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return;
7898}
7899static VkResult dynCheck_entry_vkSetBufferCollectionImageConstraintsFUCHSIA(
7900 VkDevice device,
7901 VkBufferCollectionFUCHSIA collection,
7902 const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo)
7903{
7904 auto resources = ResourceTracker::get();
7905 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection"))
7906 {
7907 sOnInvalidDynamicallyCheckedCall("vkSetBufferCollectionImageConstraintsFUCHSIA", "VK_FUCHSIA_buffer_collection");
7908 }
7909 AEMU_SCOPED_TRACE("vkSetBufferCollectionImageConstraintsFUCHSIA");
7910 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7911 VkResult vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return = (VkResult)0;
7912 vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return = vkEnc->vkSetBufferCollectionImageConstraintsFUCHSIA(device, collection, pImageConstraintsInfo, true /* do lock */);
7913 return vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return;
7914}
7915static VkResult entry_vkSetBufferCollectionBufferConstraintsFUCHSIA(
7916 VkDevice device,
7917 VkBufferCollectionFUCHSIA collection,
7918 const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo)
7919{
7920 AEMU_SCOPED_TRACE("vkSetBufferCollectionBufferConstraintsFUCHSIA");
7921 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7922 VkResult vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return = (VkResult)0;
7923 vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return = vkEnc->vkSetBufferCollectionBufferConstraintsFUCHSIA(device, collection, pBufferConstraintsInfo, true /* do lock */);
7924 return vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return;
7925}
7926static VkResult dynCheck_entry_vkSetBufferCollectionBufferConstraintsFUCHSIA(
7927 VkDevice device,
7928 VkBufferCollectionFUCHSIA collection,
7929 const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo)
7930{
7931 auto resources = ResourceTracker::get();
7932 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection"))
7933 {
7934 sOnInvalidDynamicallyCheckedCall("vkSetBufferCollectionBufferConstraintsFUCHSIA", "VK_FUCHSIA_buffer_collection");
7935 }
7936 AEMU_SCOPED_TRACE("vkSetBufferCollectionBufferConstraintsFUCHSIA");
7937 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7938 VkResult vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return = (VkResult)0;
7939 vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return = vkEnc->vkSetBufferCollectionBufferConstraintsFUCHSIA(device, collection, pBufferConstraintsInfo, true /* do lock */);
7940 return vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return;
7941}
7942static void entry_vkDestroyBufferCollectionFUCHSIA(
7943 VkDevice device,
7944 VkBufferCollectionFUCHSIA collection,
7945 const VkAllocationCallbacks* pAllocator)
7946{
7947 AEMU_SCOPED_TRACE("vkDestroyBufferCollectionFUCHSIA");
7948 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7949 vkEnc->vkDestroyBufferCollectionFUCHSIA(device, collection, pAllocator, true /* do lock */);
7950}
7951static void dynCheck_entry_vkDestroyBufferCollectionFUCHSIA(
7952 VkDevice device,
7953 VkBufferCollectionFUCHSIA collection,
7954 const VkAllocationCallbacks* pAllocator)
7955{
7956 auto resources = ResourceTracker::get();
7957 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection"))
7958 {
7959 sOnInvalidDynamicallyCheckedCall("vkDestroyBufferCollectionFUCHSIA", "VK_FUCHSIA_buffer_collection");
7960 }
7961 AEMU_SCOPED_TRACE("vkDestroyBufferCollectionFUCHSIA");
7962 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7963 vkEnc->vkDestroyBufferCollectionFUCHSIA(device, collection, pAllocator, true /* do lock */);
7964}
7965static VkResult entry_vkGetBufferCollectionPropertiesFUCHSIA(
7966 VkDevice device,
7967 VkBufferCollectionFUCHSIA collection,
7968 VkBufferCollectionPropertiesFUCHSIA* pProperties)
7969{
7970 AEMU_SCOPED_TRACE("vkGetBufferCollectionPropertiesFUCHSIA");
7971 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7972 VkResult vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return = (VkResult)0;
7973 vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return = vkEnc->vkGetBufferCollectionPropertiesFUCHSIA(device, collection, pProperties, true /* do lock */);
7974 return vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return;
7975}
7976static VkResult dynCheck_entry_vkGetBufferCollectionPropertiesFUCHSIA(
7977 VkDevice device,
7978 VkBufferCollectionFUCHSIA collection,
7979 VkBufferCollectionPropertiesFUCHSIA* pProperties)
7980{
7981 auto resources = ResourceTracker::get();
7982 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection"))
7983 {
7984 sOnInvalidDynamicallyCheckedCall("vkGetBufferCollectionPropertiesFUCHSIA", "VK_FUCHSIA_buffer_collection");
7985 }
7986 AEMU_SCOPED_TRACE("vkGetBufferCollectionPropertiesFUCHSIA");
7987 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7988 VkResult vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return = (VkResult)0;
7989 vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return = vkEnc->vkGetBufferCollectionPropertiesFUCHSIA(device, collection, pProperties, true /* do lock */);
7990 return vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return;
7991}
7992#endif
7993#ifdef VK_HUAWEI_subpass_shading
7994static VkResult entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
7995 VkDevice device,
7996 VkRenderPass renderpass,
7997 VkExtent2D* pMaxWorkgroupSize)
7998{
7999 AEMU_SCOPED_TRACE("vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI");
8000 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8001 VkResult vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return = (VkResult)0;
8002 vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return = vkEnc->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, true /* do lock */);
8003 return vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return;
8004}
8005static VkResult dynCheck_entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
8006 VkDevice device,
8007 VkRenderPass renderpass,
8008 VkExtent2D* pMaxWorkgroupSize)
8009{
8010 auto resources = ResourceTracker::get();
8011 if (!resources->hasDeviceExtension(device, "VK_HUAWEI_subpass_shading"))
8012 {
8013 sOnInvalidDynamicallyCheckedCall("vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI", "VK_HUAWEI_subpass_shading");
8014 }
8015 AEMU_SCOPED_TRACE("vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI");
8016 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8017 VkResult vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return = (VkResult)0;
8018 vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return = vkEnc->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, true /* do lock */);
8019 return vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return;
8020}
8021static void entry_vkCmdSubpassShadingHUAWEI(
8022 VkCommandBuffer commandBuffer)
8023{
8024 AEMU_SCOPED_TRACE("vkCmdSubpassShadingHUAWEI");
8025 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8026 vkEnc->vkCmdSubpassShadingHUAWEI(commandBuffer, true /* do lock */);
8027}
8028#endif
8029#ifdef VK_HUAWEI_invocation_mask
8030static void entry_vkCmdBindInvocationMaskHUAWEI(
8031 VkCommandBuffer commandBuffer,
8032 VkImageView imageView,
8033 VkImageLayout imageLayout)
8034{
8035 AEMU_SCOPED_TRACE("vkCmdBindInvocationMaskHUAWEI");
8036 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8037 vkEnc->vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, true /* do lock */);
8038}
8039#endif
8040#ifdef VK_NV_external_memory_rdma
8041static VkResult entry_vkGetMemoryRemoteAddressNV(
8042 VkDevice device,
8043 const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo,
8044 VkRemoteAddressNV* pAddress)
8045{
8046 AEMU_SCOPED_TRACE("vkGetMemoryRemoteAddressNV");
8047 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8048 VkResult vkGetMemoryRemoteAddressNV_VkResult_return = (VkResult)0;
8049 vkGetMemoryRemoteAddressNV_VkResult_return = vkEnc->vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, true /* do lock */);
8050 return vkGetMemoryRemoteAddressNV_VkResult_return;
8051}
8052static VkResult dynCheck_entry_vkGetMemoryRemoteAddressNV(
8053 VkDevice device,
8054 const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo,
8055 VkRemoteAddressNV* pAddress)
8056{
8057 auto resources = ResourceTracker::get();
8058 if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_rdma"))
8059 {
8060 sOnInvalidDynamicallyCheckedCall("vkGetMemoryRemoteAddressNV", "VK_NV_external_memory_rdma");
8061 }
8062 AEMU_SCOPED_TRACE("vkGetMemoryRemoteAddressNV");
8063 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8064 VkResult vkGetMemoryRemoteAddressNV_VkResult_return = (VkResult)0;
8065 vkGetMemoryRemoteAddressNV_VkResult_return = vkEnc->vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, true /* do lock */);
8066 return vkGetMemoryRemoteAddressNV_VkResult_return;
8067}
8068#endif
8069#ifdef VK_EXT_extended_dynamic_state2
8070static void entry_vkCmdSetPatchControlPointsEXT(
8071 VkCommandBuffer commandBuffer,
8072 uint32_t patchControlPoints)
8073{
8074 AEMU_SCOPED_TRACE("vkCmdSetPatchControlPointsEXT");
8075 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8076 vkEnc->vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, true /* do lock */);
8077}
8078static void entry_vkCmdSetRasterizerDiscardEnableEXT(
8079 VkCommandBuffer commandBuffer,
8080 VkBool32 rasterizerDiscardEnable)
8081{
8082 AEMU_SCOPED_TRACE("vkCmdSetRasterizerDiscardEnableEXT");
8083 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8084 vkEnc->vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, true /* do lock */);
8085}
8086static void entry_vkCmdSetDepthBiasEnableEXT(
8087 VkCommandBuffer commandBuffer,
8088 VkBool32 depthBiasEnable)
8089{
8090 AEMU_SCOPED_TRACE("vkCmdSetDepthBiasEnableEXT");
8091 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8092 vkEnc->vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, true /* do lock */);
8093}
8094static void entry_vkCmdSetLogicOpEXT(
8095 VkCommandBuffer commandBuffer,
8096 VkLogicOp logicOp)
8097{
8098 AEMU_SCOPED_TRACE("vkCmdSetLogicOpEXT");
8099 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8100 vkEnc->vkCmdSetLogicOpEXT(commandBuffer, logicOp, true /* do lock */);
8101}
8102static void entry_vkCmdSetPrimitiveRestartEnableEXT(
8103 VkCommandBuffer commandBuffer,
8104 VkBool32 primitiveRestartEnable)
8105{
8106 AEMU_SCOPED_TRACE("vkCmdSetPrimitiveRestartEnableEXT");
8107 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8108 vkEnc->vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, true /* do lock */);
8109}
8110#endif
8111#ifdef VK_QNX_screen_surface
8112static VkResult entry_vkCreateScreenSurfaceQNX(
8113 VkInstance instance,
8114 const VkScreenSurfaceCreateInfoQNX* pCreateInfo,
8115 const VkAllocationCallbacks* pAllocator,
8116 VkSurfaceKHR* pSurface)
8117{
8118 AEMU_SCOPED_TRACE("vkCreateScreenSurfaceQNX");
8119 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8120 VkResult vkCreateScreenSurfaceQNX_VkResult_return = (VkResult)0;
8121 vkCreateScreenSurfaceQNX_VkResult_return = vkEnc->vkCreateScreenSurfaceQNX(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
8122 return vkCreateScreenSurfaceQNX_VkResult_return;
8123}
8124static VkBool32 entry_vkGetPhysicalDeviceScreenPresentationSupportQNX(
8125 VkPhysicalDevice physicalDevice,
8126 uint32_t queueFamilyIndex,
8127 _screen_window* window)
8128{
8129 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceScreenPresentationSupportQNX");
8130 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8131 VkBool32 vkGetPhysicalDeviceScreenPresentationSupportQNX_VkBool32_return = (VkBool32)0;
8132 vkGetPhysicalDeviceScreenPresentationSupportQNX_VkBool32_return = vkEnc->vkGetPhysicalDeviceScreenPresentationSupportQNX(physicalDevice, queueFamilyIndex, window, true /* do lock */);
8133 return vkGetPhysicalDeviceScreenPresentationSupportQNX_VkBool32_return;
8134}
8135#endif
8136#ifdef VK_EXT_color_write_enable
8137static void entry_vkCmdSetColorWriteEnableEXT(
8138 VkCommandBuffer commandBuffer,
8139 uint32_t attachmentCount,
8140 const VkBool32* pColorWriteEnables)
8141{
8142 AEMU_SCOPED_TRACE("vkCmdSetColorWriteEnableEXT");
8143 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8144 vkEnc->vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, true /* do lock */);
8145}
8146#endif
Yilong Li71c43c52021-02-10 02:50:43 -08008147#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -07008148static VkResult entry_vkRegisterImageColorBufferGOOGLE(
8149 VkDevice device,
8150 VkImage image,
8151 uint32_t colorBuffer)
8152{
8153 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
8154 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8155 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
8156 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
8157 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
8158}
8159static VkResult dynCheck_entry_vkRegisterImageColorBufferGOOGLE(
8160 VkDevice device,
8161 VkImage image,
8162 uint32_t colorBuffer)
8163{
8164 auto resources = ResourceTracker::get();
8165 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
8166 {
8167 sOnInvalidDynamicallyCheckedCall("vkRegisterImageColorBufferGOOGLE", "VK_GOOGLE_gfxstream");
8168 }
8169 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
8170 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8171 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
8172 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
8173 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
8174}
8175static VkResult entry_vkRegisterBufferColorBufferGOOGLE(
8176 VkDevice device,
8177 VkBuffer buffer,
8178 uint32_t colorBuffer)
8179{
8180 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
8181 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8182 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
8183 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
8184 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
8185}
8186static VkResult dynCheck_entry_vkRegisterBufferColorBufferGOOGLE(
8187 VkDevice device,
8188 VkBuffer buffer,
8189 uint32_t colorBuffer)
8190{
8191 auto resources = ResourceTracker::get();
8192 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
8193 {
8194 sOnInvalidDynamicallyCheckedCall("vkRegisterBufferColorBufferGOOGLE", "VK_GOOGLE_gfxstream");
8195 }
8196 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
8197 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8198 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
8199 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
8200 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
8201}
Yilong Lia8d45f12021-02-07 02:30:21 -08008202static VkResult entry_vkMapMemoryIntoAddressSpaceGOOGLE(
8203 VkDevice device,
8204 VkDeviceMemory memory,
8205 uint64_t* pAddress)
8206{
8207 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
8208 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8209 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
8210 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
8211 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
8212}
8213static VkResult dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE(
8214 VkDevice device,
8215 VkDeviceMemory memory,
8216 uint64_t* pAddress)
8217{
8218 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08008219 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Yilong Lia8d45f12021-02-07 02:30:21 -08008220 {
Yilong Li71c43c52021-02-10 02:50:43 -08008221 sOnInvalidDynamicallyCheckedCall("vkMapMemoryIntoAddressSpaceGOOGLE", "VK_GOOGLE_gfxstream");
Yilong Lia8d45f12021-02-07 02:30:21 -08008222 }
8223 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
8224 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8225 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
8226 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
8227 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
8228}
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008229static void entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
8230 VkDevice device,
8231 VkDescriptorSet descriptorSet,
8232 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
8233 uint32_t imageInfoCount,
8234 uint32_t bufferInfoCount,
8235 uint32_t bufferViewCount,
8236 const uint32_t* pImageInfoEntryIndices,
8237 const uint32_t* pBufferInfoEntryIndices,
8238 const uint32_t* pBufferViewEntryIndices,
8239 const VkDescriptorImageInfo* pImageInfos,
8240 const VkDescriptorBufferInfo* pBufferInfos,
8241 const VkBufferView* pBufferViews)
8242{
8243 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008244 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008245 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008246}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008247static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
8248 VkDevice device,
8249 VkDescriptorSet descriptorSet,
8250 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
8251 uint32_t imageInfoCount,
8252 uint32_t bufferInfoCount,
8253 uint32_t bufferViewCount,
8254 const uint32_t* pImageInfoEntryIndices,
8255 const uint32_t* pBufferInfoEntryIndices,
8256 const uint32_t* pBufferViewEntryIndices,
8257 const VkDescriptorImageInfo* pImageInfos,
8258 const VkDescriptorBufferInfo* pBufferInfos,
8259 const VkBufferView* pBufferViews)
8260{
8261 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08008262 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008263 {
Yilong Li71c43c52021-02-10 02:50:43 -08008264 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateSizedGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008265 }
8266 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008267 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008268 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008269}
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008270static void entry_vkBeginCommandBufferAsyncGOOGLE(
8271 VkCommandBuffer commandBuffer,
8272 const VkCommandBufferBeginInfo* pBeginInfo)
8273{
8274 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008275 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008276 vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008277}
8278static void entry_vkEndCommandBufferAsyncGOOGLE(
8279 VkCommandBuffer commandBuffer)
8280{
8281 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008282 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008283 vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008284}
8285static void entry_vkResetCommandBufferAsyncGOOGLE(
8286 VkCommandBuffer commandBuffer,
8287 VkCommandBufferResetFlags flags)
8288{
8289 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008290 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008291 vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008292}
Lingfeng Yang39a276e2019-06-17 13:27:22 -07008293static void entry_vkCommandBufferHostSyncGOOGLE(
8294 VkCommandBuffer commandBuffer,
8295 uint32_t needHostSync,
8296 uint32_t sequenceNumber)
8297{
8298 AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008299 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008300 vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber, true /* do lock */);
Lingfeng Yang39a276e2019-06-17 13:27:22 -07008301}
Lingfeng Yang87f11962019-06-27 16:28:53 +00008302static VkResult entry_vkCreateImageWithRequirementsGOOGLE(
8303 VkDevice device,
8304 const VkImageCreateInfo* pCreateInfo,
8305 const VkAllocationCallbacks* pAllocator,
8306 VkImage* pImage,
8307 VkMemoryRequirements* pMemoryRequirements)
8308{
8309 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008310 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang87f11962019-06-27 16:28:53 +00008311 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008312 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
Lingfeng Yang87f11962019-06-27 16:28:53 +00008313 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
8314}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008315static VkResult dynCheck_entry_vkCreateImageWithRequirementsGOOGLE(
8316 VkDevice device,
8317 const VkImageCreateInfo* pCreateInfo,
8318 const VkAllocationCallbacks* pAllocator,
8319 VkImage* pImage,
8320 VkMemoryRequirements* pMemoryRequirements)
8321{
8322 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08008323 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008324 {
Yilong Li71c43c52021-02-10 02:50:43 -08008325 sOnInvalidDynamicallyCheckedCall("vkCreateImageWithRequirementsGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008326 }
8327 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008328 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008329 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008330 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008331 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
8332}
Lingfeng Yang87f11962019-06-27 16:28:53 +00008333static VkResult entry_vkCreateBufferWithRequirementsGOOGLE(
8334 VkDevice device,
8335 const VkBufferCreateInfo* pCreateInfo,
8336 const VkAllocationCallbacks* pAllocator,
8337 VkBuffer* pBuffer,
8338 VkMemoryRequirements* pMemoryRequirements)
8339{
8340 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008341 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang87f11962019-06-27 16:28:53 +00008342 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008343 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
Lingfeng Yang87f11962019-06-27 16:28:53 +00008344 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
8345}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008346static VkResult dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE(
8347 VkDevice device,
8348 const VkBufferCreateInfo* pCreateInfo,
8349 const VkAllocationCallbacks* pAllocator,
8350 VkBuffer* pBuffer,
8351 VkMemoryRequirements* pMemoryRequirements)
8352{
8353 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08008354 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008355 {
Yilong Li71c43c52021-02-10 02:50:43 -08008356 sOnInvalidDynamicallyCheckedCall("vkCreateBufferWithRequirementsGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008357 }
8358 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008359 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008360 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008361 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008362 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
8363}
Lingfeng Yang4c542412020-02-04 18:18:32 -08008364static VkResult entry_vkGetMemoryHostAddressInfoGOOGLE(
8365 VkDevice device,
8366 VkDeviceMemory memory,
8367 uint64_t* pAddress,
8368 uint64_t* pSize,
8369 uint64_t* pHostmemId)
8370{
8371 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008372 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4c542412020-02-04 18:18:32 -08008373 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008374 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
Lingfeng Yang4c542412020-02-04 18:18:32 -08008375 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
8376}
8377static VkResult dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE(
8378 VkDevice device,
8379 VkDeviceMemory memory,
8380 uint64_t* pAddress,
8381 uint64_t* pSize,
8382 uint64_t* pHostmemId)
8383{
8384 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08008385 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang4c542412020-02-04 18:18:32 -08008386 {
Yilong Li71c43c52021-02-10 02:50:43 -08008387 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostAddressInfoGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang4c542412020-02-04 18:18:32 -08008388 }
8389 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008390 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4c542412020-02-04 18:18:32 -08008391 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008392 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
Lingfeng Yang4c542412020-02-04 18:18:32 -08008393 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
8394}
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07008395static VkResult entry_vkFreeMemorySyncGOOGLE(
8396 VkDevice device,
8397 VkDeviceMemory memory,
8398 const VkAllocationCallbacks* pAllocator)
8399{
8400 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008401 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07008402 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008403 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07008404 return vkFreeMemorySyncGOOGLE_VkResult_return;
8405}
8406static VkResult dynCheck_entry_vkFreeMemorySyncGOOGLE(
8407 VkDevice device,
8408 VkDeviceMemory memory,
8409 const VkAllocationCallbacks* pAllocator)
8410{
8411 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08008412 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07008413 {
Yilong Li71c43c52021-02-10 02:50:43 -08008414 sOnInvalidDynamicallyCheckedCall("vkFreeMemorySyncGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07008415 }
8416 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008417 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07008418 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008419 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07008420 return vkFreeMemorySyncGOOGLE_VkResult_return;
8421}
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07008422static void entry_vkQueueHostSyncGOOGLE(
8423 VkQueue queue,
8424 uint32_t needHostSync,
8425 uint32_t sequenceNumber)
8426{
8427 AEMU_SCOPED_TRACE("vkQueueHostSyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008428 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008429 vkEnc->vkQueueHostSyncGOOGLE(queue, needHostSync, sequenceNumber, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07008430}
8431static void entry_vkQueueSubmitAsyncGOOGLE(
8432 VkQueue queue,
8433 uint32_t submitCount,
8434 const VkSubmitInfo* pSubmits,
8435 VkFence fence)
8436{
8437 AEMU_SCOPED_TRACE("vkQueueSubmitAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008438 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008439 vkEnc->vkQueueSubmitAsyncGOOGLE(queue, submitCount, pSubmits, fence, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07008440}
8441static void entry_vkQueueWaitIdleAsyncGOOGLE(
8442 VkQueue queue)
8443{
8444 AEMU_SCOPED_TRACE("vkQueueWaitIdleAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008445 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008446 vkEnc->vkQueueWaitIdleAsyncGOOGLE(queue, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07008447}
8448static void entry_vkQueueBindSparseAsyncGOOGLE(
8449 VkQueue queue,
8450 uint32_t bindInfoCount,
8451 const VkBindSparseInfo* pBindInfo,
8452 VkFence fence)
8453{
8454 AEMU_SCOPED_TRACE("vkQueueBindSparseAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008455 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008456 vkEnc->vkQueueBindSparseAsyncGOOGLE(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07008457}
Yilong Lia48b0102020-09-15 15:08:28 -07008458static void entry_vkGetLinearImageLayoutGOOGLE(
8459 VkDevice device,
8460 VkFormat format,
8461 VkDeviceSize* pOffset,
8462 VkDeviceSize* pRowPitchAlignment)
8463{
8464 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008465 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008466 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
Yilong Lia48b0102020-09-15 15:08:28 -07008467}
8468static void dynCheck_entry_vkGetLinearImageLayoutGOOGLE(
8469 VkDevice device,
8470 VkFormat format,
8471 VkDeviceSize* pOffset,
8472 VkDeviceSize* pRowPitchAlignment)
8473{
8474 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08008475 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Yilong Lia48b0102020-09-15 15:08:28 -07008476 {
Yilong Li71c43c52021-02-10 02:50:43 -08008477 sOnInvalidDynamicallyCheckedCall("vkGetLinearImageLayoutGOOGLE", "VK_GOOGLE_gfxstream");
Yilong Lia48b0102020-09-15 15:08:28 -07008478 }
8479 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08008480 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08008481 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
Yilong Lia48b0102020-09-15 15:08:28 -07008482}
Yilong Lidcaf0672022-02-22 16:39:57 -08008483static void entry_vkGetLinearImageLayout2GOOGLE(
8484 VkDevice device,
8485 const VkImageCreateInfo* pCreateInfo,
8486 VkDeviceSize* pOffset,
8487 VkDeviceSize* pRowPitchAlignment)
8488{
8489 AEMU_SCOPED_TRACE("vkGetLinearImageLayout2GOOGLE");
8490 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8491 vkEnc->vkGetLinearImageLayout2GOOGLE(device, pCreateInfo, pOffset, pRowPitchAlignment, true /* do lock */);
8492}
8493static void dynCheck_entry_vkGetLinearImageLayout2GOOGLE(
8494 VkDevice device,
8495 const VkImageCreateInfo* pCreateInfo,
8496 VkDeviceSize* pOffset,
8497 VkDeviceSize* pRowPitchAlignment)
8498{
8499 auto resources = ResourceTracker::get();
8500 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
8501 {
8502 sOnInvalidDynamicallyCheckedCall("vkGetLinearImageLayout2GOOGLE", "VK_GOOGLE_gfxstream");
8503 }
8504 AEMU_SCOPED_TRACE("vkGetLinearImageLayout2GOOGLE");
8505 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8506 vkEnc->vkGetLinearImageLayout2GOOGLE(device, pCreateInfo, pOffset, pRowPitchAlignment, true /* do lock */);
8507}
Lingfeng Yangded34672021-01-22 23:17:47 -08008508static void entry_vkQueueFlushCommandsGOOGLE(
8509 VkQueue queue,
8510 VkCommandBuffer commandBuffer,
8511 VkDeviceSize dataSize,
8512 const void* pData)
8513{
8514 AEMU_SCOPED_TRACE("vkQueueFlushCommandsGOOGLE");
8515 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
8516 vkEnc->vkQueueFlushCommandsGOOGLE(queue, commandBuffer, dataSize, pData, true /* do lock */);
8517}
Lingfeng Yang55676e02021-02-08 08:39:45 -08008518static void entry_vkQueueCommitDescriptorSetUpdatesGOOGLE(
8519 VkQueue queue,
8520 uint32_t descriptorPoolCount,
8521 const VkDescriptorPool* pDescriptorPools,
8522 uint32_t descriptorSetCount,
8523 const VkDescriptorSetLayout* pSetLayouts,
8524 const uint64_t* pDescriptorSetPoolIds,
8525 const uint32_t* pDescriptorSetWhichPool,
8526 const uint32_t* pDescriptorSetPendingAllocation,
8527 const uint32_t* pDescriptorWriteStartingIndices,
8528 uint32_t pendingDescriptorWriteCount,
8529 const VkWriteDescriptorSet* pPendingDescriptorWrites)
8530{
8531 AEMU_SCOPED_TRACE("vkQueueCommitDescriptorSetUpdatesGOOGLE");
8532 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
8533 vkEnc->vkQueueCommitDescriptorSetUpdatesGOOGLE(queue, descriptorPoolCount, pDescriptorPools, descriptorSetCount, pSetLayouts, pDescriptorSetPoolIds, pDescriptorSetWhichPool, pDescriptorSetPendingAllocation, pDescriptorWriteStartingIndices, pendingDescriptorWriteCount, pPendingDescriptorWrites, true /* do lock */);
8534}
8535static void entry_vkCollectDescriptorPoolIdsGOOGLE(
8536 VkDevice device,
8537 VkDescriptorPool descriptorPool,
8538 uint32_t* pPoolIdCount,
8539 uint64_t* pPoolIds)
8540{
8541 AEMU_SCOPED_TRACE("vkCollectDescriptorPoolIdsGOOGLE");
8542 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8543 vkEnc->vkCollectDescriptorPoolIdsGOOGLE(device, descriptorPool, pPoolIdCount, pPoolIds, true /* do lock */);
8544}
8545static void dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE(
8546 VkDevice device,
8547 VkDescriptorPool descriptorPool,
8548 uint32_t* pPoolIdCount,
8549 uint64_t* pPoolIds)
8550{
8551 auto resources = ResourceTracker::get();
8552 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
8553 {
8554 sOnInvalidDynamicallyCheckedCall("vkCollectDescriptorPoolIdsGOOGLE", "VK_GOOGLE_gfxstream");
8555 }
8556 AEMU_SCOPED_TRACE("vkCollectDescriptorPoolIdsGOOGLE");
8557 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8558 vkEnc->vkCollectDescriptorPoolIdsGOOGLE(device, descriptorPool, pPoolIdCount, pPoolIds, true /* do lock */);
8559}
Lingfeng Yang5678e1e2021-07-15 12:28:05 -07008560static void entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(
8561 VkQueue queue,
8562 uint32_t waitSemaphoreCount,
8563 const VkSemaphore* pWaitSemaphores,
8564 VkImage image)
8565{
8566 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROIDAsyncGOOGLE");
8567 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
8568 vkEnc->vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(queue, waitSemaphoreCount, pWaitSemaphores, image, true /* do lock */);
8569}
Lingfeng Yangded34672021-01-22 23:17:47 -08008570#endif
Yilong Li353409a2022-01-04 02:37:56 -08008571#ifdef VK_EXT_global_priority_query
8572#endif
8573#ifdef VK_EXT_multi_draw
8574static void entry_vkCmdDrawMultiEXT(
8575 VkCommandBuffer commandBuffer,
8576 uint32_t drawCount,
8577 const VkMultiDrawInfoEXT* pVertexInfo,
8578 uint32_t instanceCount,
8579 uint32_t firstInstance,
8580 uint32_t stride)
8581{
8582 AEMU_SCOPED_TRACE("vkCmdDrawMultiEXT");
8583 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8584 vkEnc->vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, true /* do lock */);
8585}
8586static void entry_vkCmdDrawMultiIndexedEXT(
8587 VkCommandBuffer commandBuffer,
8588 uint32_t drawCount,
8589 const VkMultiDrawIndexedInfoEXT* pIndexInfo,
8590 uint32_t instanceCount,
8591 uint32_t firstInstance,
8592 uint32_t stride,
8593 const int32_t* pVertexOffset)
8594{
8595 AEMU_SCOPED_TRACE("vkCmdDrawMultiIndexedEXT");
8596 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8597 vkEnc->vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, true /* do lock */);
8598}
8599#endif
8600#ifdef VK_EXT_load_store_op_none
8601#endif
8602#ifdef VK_EXT_border_color_swizzle
8603#endif
8604#ifdef VK_EXT_pageable_device_local_memory
8605static void entry_vkSetDeviceMemoryPriorityEXT(
8606 VkDevice device,
8607 VkDeviceMemory memory,
8608 float priority)
8609{
8610 AEMU_SCOPED_TRACE("vkSetDeviceMemoryPriorityEXT");
8611 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8612 vkEnc->vkSetDeviceMemoryPriorityEXT(device, memory, priority, true /* do lock */);
8613}
8614static void dynCheck_entry_vkSetDeviceMemoryPriorityEXT(
8615 VkDevice device,
8616 VkDeviceMemory memory,
8617 float priority)
8618{
8619 auto resources = ResourceTracker::get();
8620 if (!resources->hasDeviceExtension(device, "VK_EXT_pageable_device_local_memory"))
8621 {
8622 sOnInvalidDynamicallyCheckedCall("vkSetDeviceMemoryPriorityEXT", "VK_EXT_pageable_device_local_memory");
8623 }
8624 AEMU_SCOPED_TRACE("vkSetDeviceMemoryPriorityEXT");
8625 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8626 vkEnc->vkSetDeviceMemoryPriorityEXT(device, memory, priority, true /* do lock */);
8627}
8628#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008629#ifdef VK_KHR_acceleration_structure
8630static VkResult entry_vkCreateAccelerationStructureKHR(
8631 VkDevice device,
8632 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
8633 const VkAllocationCallbacks* pAllocator,
8634 VkAccelerationStructureKHR* pAccelerationStructure)
8635{
8636 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
8637 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8638 VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
8639 vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
8640 return vkCreateAccelerationStructureKHR_VkResult_return;
8641}
8642static VkResult dynCheck_entry_vkCreateAccelerationStructureKHR(
8643 VkDevice device,
8644 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
8645 const VkAllocationCallbacks* pAllocator,
8646 VkAccelerationStructureKHR* pAccelerationStructure)
8647{
8648 auto resources = ResourceTracker::get();
8649 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
8650 {
8651 sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureKHR", "VK_KHR_acceleration_structure");
8652 }
8653 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
8654 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8655 VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
8656 vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
8657 return vkCreateAccelerationStructureKHR_VkResult_return;
8658}
8659static void entry_vkDestroyAccelerationStructureKHR(
8660 VkDevice device,
8661 VkAccelerationStructureKHR accelerationStructure,
8662 const VkAllocationCallbacks* pAllocator)
8663{
8664 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
8665 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8666 vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
8667}
8668static void dynCheck_entry_vkDestroyAccelerationStructureKHR(
8669 VkDevice device,
8670 VkAccelerationStructureKHR accelerationStructure,
8671 const VkAllocationCallbacks* pAllocator)
8672{
8673 auto resources = ResourceTracker::get();
8674 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
8675 {
8676 sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
8677 }
8678 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
8679 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8680 vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
8681}
8682static void entry_vkCmdBuildAccelerationStructuresKHR(
8683 VkCommandBuffer commandBuffer,
8684 uint32_t infoCount,
8685 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
8686 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
8687{
8688 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresKHR");
8689 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8690 vkEnc->vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
8691}
8692static void entry_vkCmdBuildAccelerationStructuresIndirectKHR(
8693 VkCommandBuffer commandBuffer,
8694 uint32_t infoCount,
8695 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
8696 const VkDeviceAddress* pIndirectDeviceAddresses,
8697 const uint32_t* pIndirectStrides,
8698 const uint32_t* const* ppMaxPrimitiveCounts)
8699{
8700 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresIndirectKHR");
8701 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8702 vkEnc->vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, true /* do lock */);
8703}
8704static VkResult entry_vkBuildAccelerationStructuresKHR(
8705 VkDevice device,
8706 VkDeferredOperationKHR deferredOperation,
8707 uint32_t infoCount,
8708 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
8709 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
8710{
8711 AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
8712 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8713 VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
8714 vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
8715 return vkBuildAccelerationStructuresKHR_VkResult_return;
8716}
8717static VkResult dynCheck_entry_vkBuildAccelerationStructuresKHR(
8718 VkDevice device,
8719 VkDeferredOperationKHR deferredOperation,
8720 uint32_t infoCount,
8721 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
8722 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
8723{
8724 auto resources = ResourceTracker::get();
8725 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
8726 {
8727 sOnInvalidDynamicallyCheckedCall("vkBuildAccelerationStructuresKHR", "VK_KHR_acceleration_structure");
8728 }
8729 AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
8730 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8731 VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
8732 vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
8733 return vkBuildAccelerationStructuresKHR_VkResult_return;
8734}
8735static VkResult entry_vkCopyAccelerationStructureKHR(
8736 VkDevice device,
8737 VkDeferredOperationKHR deferredOperation,
8738 const VkCopyAccelerationStructureInfoKHR* pInfo)
8739{
8740 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
8741 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8742 VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
8743 vkCopyAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
8744 return vkCopyAccelerationStructureKHR_VkResult_return;
8745}
8746static VkResult dynCheck_entry_vkCopyAccelerationStructureKHR(
8747 VkDevice device,
8748 VkDeferredOperationKHR deferredOperation,
8749 const VkCopyAccelerationStructureInfoKHR* pInfo)
8750{
8751 auto resources = ResourceTracker::get();
8752 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
8753 {
8754 sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
8755 }
8756 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
8757 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8758 VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
8759 vkCopyAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
8760 return vkCopyAccelerationStructureKHR_VkResult_return;
8761}
8762static VkResult entry_vkCopyAccelerationStructureToMemoryKHR(
8763 VkDevice device,
8764 VkDeferredOperationKHR deferredOperation,
8765 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
8766{
8767 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
8768 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8769 VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
8770 vkCopyAccelerationStructureToMemoryKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, true /* do lock */);
8771 return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
8772}
8773static VkResult dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR(
8774 VkDevice device,
8775 VkDeferredOperationKHR deferredOperation,
8776 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
8777{
8778 auto resources = ResourceTracker::get();
8779 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
8780 {
8781 sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureToMemoryKHR", "VK_KHR_acceleration_structure");
8782 }
8783 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
8784 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8785 VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
8786 vkCopyAccelerationStructureToMemoryKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, true /* do lock */);
8787 return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
8788}
8789static VkResult entry_vkCopyMemoryToAccelerationStructureKHR(
8790 VkDevice device,
8791 VkDeferredOperationKHR deferredOperation,
8792 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
8793{
8794 AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
8795 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8796 VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
8797 vkCopyMemoryToAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
8798 return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
8799}
8800static VkResult dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR(
8801 VkDevice device,
8802 VkDeferredOperationKHR deferredOperation,
8803 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
8804{
8805 auto resources = ResourceTracker::get();
8806 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
8807 {
8808 sOnInvalidDynamicallyCheckedCall("vkCopyMemoryToAccelerationStructureKHR", "VK_KHR_acceleration_structure");
8809 }
8810 AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
8811 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8812 VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
8813 vkCopyMemoryToAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
8814 return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
8815}
8816static VkResult entry_vkWriteAccelerationStructuresPropertiesKHR(
8817 VkDevice device,
8818 uint32_t accelerationStructureCount,
8819 const VkAccelerationStructureKHR* pAccelerationStructures,
8820 VkQueryType queryType,
8821 size_t dataSize,
8822 void* pData,
8823 size_t stride)
8824{
8825 AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
8826 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8827 VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
8828 vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
8829 return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
8830}
8831static VkResult dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR(
8832 VkDevice device,
8833 uint32_t accelerationStructureCount,
8834 const VkAccelerationStructureKHR* pAccelerationStructures,
8835 VkQueryType queryType,
8836 size_t dataSize,
8837 void* pData,
8838 size_t stride)
8839{
8840 auto resources = ResourceTracker::get();
8841 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
8842 {
8843 sOnInvalidDynamicallyCheckedCall("vkWriteAccelerationStructuresPropertiesKHR", "VK_KHR_acceleration_structure");
8844 }
8845 AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
8846 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8847 VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
8848 vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
8849 return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
8850}
8851static void entry_vkCmdCopyAccelerationStructureKHR(
8852 VkCommandBuffer commandBuffer,
8853 const VkCopyAccelerationStructureInfoKHR* pInfo)
8854{
8855 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureKHR");
8856 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8857 vkEnc->vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
8858}
8859static void entry_vkCmdCopyAccelerationStructureToMemoryKHR(
8860 VkCommandBuffer commandBuffer,
8861 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
8862{
8863 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureToMemoryKHR");
8864 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8865 vkEnc->vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, true /* do lock */);
8866}
8867static void entry_vkCmdCopyMemoryToAccelerationStructureKHR(
8868 VkCommandBuffer commandBuffer,
8869 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
8870{
8871 AEMU_SCOPED_TRACE("vkCmdCopyMemoryToAccelerationStructureKHR");
8872 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8873 vkEnc->vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
8874}
8875static VkDeviceAddress entry_vkGetAccelerationStructureDeviceAddressKHR(
8876 VkDevice device,
8877 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
8878{
8879 AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
8880 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8881 VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
8882 vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
8883 return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
8884}
8885static VkDeviceAddress dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR(
8886 VkDevice device,
8887 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
8888{
8889 auto resources = ResourceTracker::get();
8890 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
8891 {
8892 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureDeviceAddressKHR", "VK_KHR_acceleration_structure");
8893 }
8894 AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
8895 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8896 VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
8897 vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
8898 return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
8899}
8900static void entry_vkCmdWriteAccelerationStructuresPropertiesKHR(
8901 VkCommandBuffer commandBuffer,
8902 uint32_t accelerationStructureCount,
8903 const VkAccelerationStructureKHR* pAccelerationStructures,
8904 VkQueryType queryType,
8905 VkQueryPool queryPool,
8906 uint32_t firstQuery)
8907{
8908 AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesKHR");
8909 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8910 vkEnc->vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
8911}
8912static void entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
8913 VkDevice device,
8914 const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
8915 VkAccelerationStructureCompatibilityKHR* pCompatibility)
8916{
8917 AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
8918 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8919 vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
8920}
8921static void dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
8922 VkDevice device,
8923 const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
8924 VkAccelerationStructureCompatibilityKHR* pCompatibility)
8925{
8926 auto resources = ResourceTracker::get();
8927 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
8928 {
8929 sOnInvalidDynamicallyCheckedCall("vkGetDeviceAccelerationStructureCompatibilityKHR", "VK_KHR_acceleration_structure");
8930 }
8931 AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
8932 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8933 vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
8934}
8935static void entry_vkGetAccelerationStructureBuildSizesKHR(
8936 VkDevice device,
8937 VkAccelerationStructureBuildTypeKHR buildType,
8938 const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
8939 const uint32_t* pMaxPrimitiveCounts,
8940 VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
8941{
8942 AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
8943 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8944 vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
8945}
8946static void dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR(
8947 VkDevice device,
8948 VkAccelerationStructureBuildTypeKHR buildType,
8949 const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
8950 const uint32_t* pMaxPrimitiveCounts,
8951 VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
8952{
8953 auto resources = ResourceTracker::get();
8954 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
8955 {
8956 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureBuildSizesKHR", "VK_KHR_acceleration_structure");
8957 }
8958 AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
8959 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8960 vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
8961}
8962#endif
8963#ifdef VK_KHR_ray_tracing_pipeline
8964static void entry_vkCmdTraceRaysKHR(
8965 VkCommandBuffer commandBuffer,
8966 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
8967 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
8968 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
8969 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
8970 uint32_t width,
8971 uint32_t height,
8972 uint32_t depth)
8973{
8974 AEMU_SCOPED_TRACE("vkCmdTraceRaysKHR");
8975 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8976 vkEnc->vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, true /* do lock */);
8977}
8978static VkResult entry_vkCreateRayTracingPipelinesKHR(
8979 VkDevice device,
8980 VkDeferredOperationKHR deferredOperation,
8981 VkPipelineCache pipelineCache,
8982 uint32_t createInfoCount,
8983 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
8984 const VkAllocationCallbacks* pAllocator,
8985 VkPipeline* pPipelines)
8986{
8987 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
8988 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8989 VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
8990 vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
8991 return vkCreateRayTracingPipelinesKHR_VkResult_return;
8992}
8993static VkResult dynCheck_entry_vkCreateRayTracingPipelinesKHR(
8994 VkDevice device,
8995 VkDeferredOperationKHR deferredOperation,
8996 VkPipelineCache pipelineCache,
8997 uint32_t createInfoCount,
8998 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
8999 const VkAllocationCallbacks* pAllocator,
9000 VkPipeline* pPipelines)
9001{
9002 auto resources = ResourceTracker::get();
9003 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
9004 {
9005 sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesKHR", "VK_KHR_ray_tracing_pipeline");
9006 }
9007 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
9008 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9009 VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
9010 vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
9011 return vkCreateRayTracingPipelinesKHR_VkResult_return;
9012}
9013static VkResult entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
9014 VkDevice device,
9015 VkPipeline pipeline,
9016 uint32_t firstGroup,
9017 uint32_t groupCount,
9018 size_t dataSize,
9019 void* pData)
9020{
9021 AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
9022 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9023 VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
9024 vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
9025 return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
9026}
9027static VkResult dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
9028 VkDevice device,
9029 VkPipeline pipeline,
9030 uint32_t firstGroup,
9031 uint32_t groupCount,
9032 size_t dataSize,
9033 void* pData)
9034{
9035 auto resources = ResourceTracker::get();
9036 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
9037 {
9038 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR", "VK_KHR_ray_tracing_pipeline");
9039 }
9040 AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
9041 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9042 VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
9043 vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
9044 return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
9045}
9046static void entry_vkCmdTraceRaysIndirectKHR(
9047 VkCommandBuffer commandBuffer,
9048 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
9049 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
9050 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
9051 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
9052 VkDeviceAddress indirectDeviceAddress)
9053{
9054 AEMU_SCOPED_TRACE("vkCmdTraceRaysIndirectKHR");
9055 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9056 vkEnc->vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, true /* do lock */);
9057}
9058static VkDeviceSize entry_vkGetRayTracingShaderGroupStackSizeKHR(
9059 VkDevice device,
9060 VkPipeline pipeline,
9061 uint32_t group,
9062 VkShaderGroupShaderKHR groupShader)
9063{
9064 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
9065 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9066 VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
9067 vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
9068 return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
9069}
9070static VkDeviceSize dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR(
9071 VkDevice device,
9072 VkPipeline pipeline,
9073 uint32_t group,
9074 VkShaderGroupShaderKHR groupShader)
9075{
9076 auto resources = ResourceTracker::get();
9077 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
9078 {
9079 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupStackSizeKHR", "VK_KHR_ray_tracing_pipeline");
9080 }
9081 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
9082 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9083 VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
9084 vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
9085 return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
9086}
9087static void entry_vkCmdSetRayTracingPipelineStackSizeKHR(
9088 VkCommandBuffer commandBuffer,
9089 uint32_t pipelineStackSize)
9090{
9091 AEMU_SCOPED_TRACE("vkCmdSetRayTracingPipelineStackSizeKHR");
9092 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9093 vkEnc->vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, true /* do lock */);
9094}
9095#endif
9096#ifdef VK_KHR_ray_query
9097#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009098void* goldfish_vulkan_get_proc_address(const char* name){
9099#ifdef VK_VERSION_1_0
9100 if (!strcmp(name, "vkCreateInstance"))
9101 {
9102 return (void*)entry_vkCreateInstance;
9103 }
9104 if (!strcmp(name, "vkDestroyInstance"))
9105 {
9106 return (void*)entry_vkDestroyInstance;
9107 }
9108 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
9109 {
9110 return (void*)entry_vkEnumeratePhysicalDevices;
9111 }
9112 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
9113 {
9114 return (void*)entry_vkGetPhysicalDeviceFeatures;
9115 }
9116 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
9117 {
9118 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
9119 }
9120 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
9121 {
9122 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
9123 }
9124 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
9125 {
9126 return (void*)entry_vkGetPhysicalDeviceProperties;
9127 }
9128 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
9129 {
9130 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
9131 }
9132 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
9133 {
9134 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
9135 }
9136 if (!strcmp(name, "vkGetInstanceProcAddr"))
9137 {
9138 return (void*)entry_vkGetInstanceProcAddr;
9139 }
9140 if (!strcmp(name, "vkGetDeviceProcAddr"))
9141 {
9142 return (void*)entry_vkGetDeviceProcAddr;
9143 }
9144 if (!strcmp(name, "vkCreateDevice"))
9145 {
9146 return (void*)entry_vkCreateDevice;
9147 }
9148 if (!strcmp(name, "vkDestroyDevice"))
9149 {
9150 return (void*)entry_vkDestroyDevice;
9151 }
9152 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
9153 {
9154 return (void*)entry_vkEnumerateInstanceExtensionProperties;
9155 }
9156 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
9157 {
9158 return (void*)entry_vkEnumerateDeviceExtensionProperties;
9159 }
9160 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
9161 {
9162 return (void*)entry_vkEnumerateInstanceLayerProperties;
9163 }
9164 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
9165 {
9166 return (void*)entry_vkEnumerateDeviceLayerProperties;
9167 }
9168 if (!strcmp(name, "vkGetDeviceQueue"))
9169 {
9170 return (void*)entry_vkGetDeviceQueue;
9171 }
9172 if (!strcmp(name, "vkQueueSubmit"))
9173 {
9174 return (void*)entry_vkQueueSubmit;
9175 }
9176 if (!strcmp(name, "vkQueueWaitIdle"))
9177 {
9178 return (void*)entry_vkQueueWaitIdle;
9179 }
9180 if (!strcmp(name, "vkDeviceWaitIdle"))
9181 {
9182 return (void*)entry_vkDeviceWaitIdle;
9183 }
9184 if (!strcmp(name, "vkAllocateMemory"))
9185 {
9186 return (void*)entry_vkAllocateMemory;
9187 }
9188 if (!strcmp(name, "vkFreeMemory"))
9189 {
9190 return (void*)entry_vkFreeMemory;
9191 }
9192 if (!strcmp(name, "vkMapMemory"))
9193 {
9194 return (void*)entry_vkMapMemory;
9195 }
9196 if (!strcmp(name, "vkUnmapMemory"))
9197 {
9198 return (void*)entry_vkUnmapMemory;
9199 }
9200 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
9201 {
9202 return (void*)entry_vkFlushMappedMemoryRanges;
9203 }
9204 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
9205 {
9206 return (void*)entry_vkInvalidateMappedMemoryRanges;
9207 }
9208 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
9209 {
9210 return (void*)entry_vkGetDeviceMemoryCommitment;
9211 }
9212 if (!strcmp(name, "vkBindBufferMemory"))
9213 {
9214 return (void*)entry_vkBindBufferMemory;
9215 }
9216 if (!strcmp(name, "vkBindImageMemory"))
9217 {
9218 return (void*)entry_vkBindImageMemory;
9219 }
9220 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
9221 {
9222 return (void*)entry_vkGetBufferMemoryRequirements;
9223 }
9224 if (!strcmp(name, "vkGetImageMemoryRequirements"))
9225 {
9226 return (void*)entry_vkGetImageMemoryRequirements;
9227 }
9228 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
9229 {
9230 return (void*)entry_vkGetImageSparseMemoryRequirements;
9231 }
9232 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
9233 {
9234 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
9235 }
9236 if (!strcmp(name, "vkQueueBindSparse"))
9237 {
9238 return (void*)entry_vkQueueBindSparse;
9239 }
9240 if (!strcmp(name, "vkCreateFence"))
9241 {
9242 return (void*)entry_vkCreateFence;
9243 }
9244 if (!strcmp(name, "vkDestroyFence"))
9245 {
9246 return (void*)entry_vkDestroyFence;
9247 }
9248 if (!strcmp(name, "vkResetFences"))
9249 {
9250 return (void*)entry_vkResetFences;
9251 }
9252 if (!strcmp(name, "vkGetFenceStatus"))
9253 {
9254 return (void*)entry_vkGetFenceStatus;
9255 }
9256 if (!strcmp(name, "vkWaitForFences"))
9257 {
9258 return (void*)entry_vkWaitForFences;
9259 }
9260 if (!strcmp(name, "vkCreateSemaphore"))
9261 {
9262 return (void*)entry_vkCreateSemaphore;
9263 }
9264 if (!strcmp(name, "vkDestroySemaphore"))
9265 {
9266 return (void*)entry_vkDestroySemaphore;
9267 }
9268 if (!strcmp(name, "vkCreateEvent"))
9269 {
9270 return (void*)entry_vkCreateEvent;
9271 }
9272 if (!strcmp(name, "vkDestroyEvent"))
9273 {
9274 return (void*)entry_vkDestroyEvent;
9275 }
9276 if (!strcmp(name, "vkGetEventStatus"))
9277 {
9278 return (void*)entry_vkGetEventStatus;
9279 }
9280 if (!strcmp(name, "vkSetEvent"))
9281 {
9282 return (void*)entry_vkSetEvent;
9283 }
9284 if (!strcmp(name, "vkResetEvent"))
9285 {
9286 return (void*)entry_vkResetEvent;
9287 }
9288 if (!strcmp(name, "vkCreateQueryPool"))
9289 {
9290 return (void*)entry_vkCreateQueryPool;
9291 }
9292 if (!strcmp(name, "vkDestroyQueryPool"))
9293 {
9294 return (void*)entry_vkDestroyQueryPool;
9295 }
9296 if (!strcmp(name, "vkGetQueryPoolResults"))
9297 {
9298 return (void*)entry_vkGetQueryPoolResults;
9299 }
9300 if (!strcmp(name, "vkCreateBuffer"))
9301 {
9302 return (void*)entry_vkCreateBuffer;
9303 }
9304 if (!strcmp(name, "vkDestroyBuffer"))
9305 {
9306 return (void*)entry_vkDestroyBuffer;
9307 }
9308 if (!strcmp(name, "vkCreateBufferView"))
9309 {
9310 return (void*)entry_vkCreateBufferView;
9311 }
9312 if (!strcmp(name, "vkDestroyBufferView"))
9313 {
9314 return (void*)entry_vkDestroyBufferView;
9315 }
9316 if (!strcmp(name, "vkCreateImage"))
9317 {
9318 return (void*)entry_vkCreateImage;
9319 }
9320 if (!strcmp(name, "vkDestroyImage"))
9321 {
9322 return (void*)entry_vkDestroyImage;
9323 }
9324 if (!strcmp(name, "vkGetImageSubresourceLayout"))
9325 {
9326 return (void*)entry_vkGetImageSubresourceLayout;
9327 }
9328 if (!strcmp(name, "vkCreateImageView"))
9329 {
9330 return (void*)entry_vkCreateImageView;
9331 }
9332 if (!strcmp(name, "vkDestroyImageView"))
9333 {
9334 return (void*)entry_vkDestroyImageView;
9335 }
9336 if (!strcmp(name, "vkCreateShaderModule"))
9337 {
9338 return (void*)entry_vkCreateShaderModule;
9339 }
9340 if (!strcmp(name, "vkDestroyShaderModule"))
9341 {
9342 return (void*)entry_vkDestroyShaderModule;
9343 }
9344 if (!strcmp(name, "vkCreatePipelineCache"))
9345 {
9346 return (void*)entry_vkCreatePipelineCache;
9347 }
9348 if (!strcmp(name, "vkDestroyPipelineCache"))
9349 {
9350 return (void*)entry_vkDestroyPipelineCache;
9351 }
9352 if (!strcmp(name, "vkGetPipelineCacheData"))
9353 {
9354 return (void*)entry_vkGetPipelineCacheData;
9355 }
9356 if (!strcmp(name, "vkMergePipelineCaches"))
9357 {
9358 return (void*)entry_vkMergePipelineCaches;
9359 }
9360 if (!strcmp(name, "vkCreateGraphicsPipelines"))
9361 {
9362 return (void*)entry_vkCreateGraphicsPipelines;
9363 }
9364 if (!strcmp(name, "vkCreateComputePipelines"))
9365 {
9366 return (void*)entry_vkCreateComputePipelines;
9367 }
9368 if (!strcmp(name, "vkDestroyPipeline"))
9369 {
9370 return (void*)entry_vkDestroyPipeline;
9371 }
9372 if (!strcmp(name, "vkCreatePipelineLayout"))
9373 {
9374 return (void*)entry_vkCreatePipelineLayout;
9375 }
9376 if (!strcmp(name, "vkDestroyPipelineLayout"))
9377 {
9378 return (void*)entry_vkDestroyPipelineLayout;
9379 }
9380 if (!strcmp(name, "vkCreateSampler"))
9381 {
9382 return (void*)entry_vkCreateSampler;
9383 }
9384 if (!strcmp(name, "vkDestroySampler"))
9385 {
9386 return (void*)entry_vkDestroySampler;
9387 }
9388 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
9389 {
9390 return (void*)entry_vkCreateDescriptorSetLayout;
9391 }
9392 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
9393 {
9394 return (void*)entry_vkDestroyDescriptorSetLayout;
9395 }
9396 if (!strcmp(name, "vkCreateDescriptorPool"))
9397 {
9398 return (void*)entry_vkCreateDescriptorPool;
9399 }
9400 if (!strcmp(name, "vkDestroyDescriptorPool"))
9401 {
9402 return (void*)entry_vkDestroyDescriptorPool;
9403 }
9404 if (!strcmp(name, "vkResetDescriptorPool"))
9405 {
9406 return (void*)entry_vkResetDescriptorPool;
9407 }
9408 if (!strcmp(name, "vkAllocateDescriptorSets"))
9409 {
9410 return (void*)entry_vkAllocateDescriptorSets;
9411 }
9412 if (!strcmp(name, "vkFreeDescriptorSets"))
9413 {
9414 return (void*)entry_vkFreeDescriptorSets;
9415 }
9416 if (!strcmp(name, "vkUpdateDescriptorSets"))
9417 {
9418 return (void*)entry_vkUpdateDescriptorSets;
9419 }
9420 if (!strcmp(name, "vkCreateFramebuffer"))
9421 {
9422 return (void*)entry_vkCreateFramebuffer;
9423 }
9424 if (!strcmp(name, "vkDestroyFramebuffer"))
9425 {
9426 return (void*)entry_vkDestroyFramebuffer;
9427 }
9428 if (!strcmp(name, "vkCreateRenderPass"))
9429 {
9430 return (void*)entry_vkCreateRenderPass;
9431 }
9432 if (!strcmp(name, "vkDestroyRenderPass"))
9433 {
9434 return (void*)entry_vkDestroyRenderPass;
9435 }
9436 if (!strcmp(name, "vkGetRenderAreaGranularity"))
9437 {
9438 return (void*)entry_vkGetRenderAreaGranularity;
9439 }
9440 if (!strcmp(name, "vkCreateCommandPool"))
9441 {
9442 return (void*)entry_vkCreateCommandPool;
9443 }
9444 if (!strcmp(name, "vkDestroyCommandPool"))
9445 {
9446 return (void*)entry_vkDestroyCommandPool;
9447 }
9448 if (!strcmp(name, "vkResetCommandPool"))
9449 {
9450 return (void*)entry_vkResetCommandPool;
9451 }
9452 if (!strcmp(name, "vkAllocateCommandBuffers"))
9453 {
9454 return (void*)entry_vkAllocateCommandBuffers;
9455 }
9456 if (!strcmp(name, "vkFreeCommandBuffers"))
9457 {
9458 return (void*)entry_vkFreeCommandBuffers;
9459 }
9460 if (!strcmp(name, "vkBeginCommandBuffer"))
9461 {
9462 return (void*)entry_vkBeginCommandBuffer;
9463 }
9464 if (!strcmp(name, "vkEndCommandBuffer"))
9465 {
9466 return (void*)entry_vkEndCommandBuffer;
9467 }
9468 if (!strcmp(name, "vkResetCommandBuffer"))
9469 {
9470 return (void*)entry_vkResetCommandBuffer;
9471 }
9472 if (!strcmp(name, "vkCmdBindPipeline"))
9473 {
9474 return (void*)entry_vkCmdBindPipeline;
9475 }
9476 if (!strcmp(name, "vkCmdSetViewport"))
9477 {
9478 return (void*)entry_vkCmdSetViewport;
9479 }
9480 if (!strcmp(name, "vkCmdSetScissor"))
9481 {
9482 return (void*)entry_vkCmdSetScissor;
9483 }
9484 if (!strcmp(name, "vkCmdSetLineWidth"))
9485 {
9486 return (void*)entry_vkCmdSetLineWidth;
9487 }
9488 if (!strcmp(name, "vkCmdSetDepthBias"))
9489 {
9490 return (void*)entry_vkCmdSetDepthBias;
9491 }
9492 if (!strcmp(name, "vkCmdSetBlendConstants"))
9493 {
9494 return (void*)entry_vkCmdSetBlendConstants;
9495 }
9496 if (!strcmp(name, "vkCmdSetDepthBounds"))
9497 {
9498 return (void*)entry_vkCmdSetDepthBounds;
9499 }
9500 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
9501 {
9502 return (void*)entry_vkCmdSetStencilCompareMask;
9503 }
9504 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
9505 {
9506 return (void*)entry_vkCmdSetStencilWriteMask;
9507 }
9508 if (!strcmp(name, "vkCmdSetStencilReference"))
9509 {
9510 return (void*)entry_vkCmdSetStencilReference;
9511 }
9512 if (!strcmp(name, "vkCmdBindDescriptorSets"))
9513 {
9514 return (void*)entry_vkCmdBindDescriptorSets;
9515 }
9516 if (!strcmp(name, "vkCmdBindIndexBuffer"))
9517 {
9518 return (void*)entry_vkCmdBindIndexBuffer;
9519 }
9520 if (!strcmp(name, "vkCmdBindVertexBuffers"))
9521 {
9522 return (void*)entry_vkCmdBindVertexBuffers;
9523 }
9524 if (!strcmp(name, "vkCmdDraw"))
9525 {
9526 return (void*)entry_vkCmdDraw;
9527 }
9528 if (!strcmp(name, "vkCmdDrawIndexed"))
9529 {
9530 return (void*)entry_vkCmdDrawIndexed;
9531 }
9532 if (!strcmp(name, "vkCmdDrawIndirect"))
9533 {
9534 return (void*)entry_vkCmdDrawIndirect;
9535 }
9536 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
9537 {
9538 return (void*)entry_vkCmdDrawIndexedIndirect;
9539 }
9540 if (!strcmp(name, "vkCmdDispatch"))
9541 {
9542 return (void*)entry_vkCmdDispatch;
9543 }
9544 if (!strcmp(name, "vkCmdDispatchIndirect"))
9545 {
9546 return (void*)entry_vkCmdDispatchIndirect;
9547 }
9548 if (!strcmp(name, "vkCmdCopyBuffer"))
9549 {
9550 return (void*)entry_vkCmdCopyBuffer;
9551 }
9552 if (!strcmp(name, "vkCmdCopyImage"))
9553 {
9554 return (void*)entry_vkCmdCopyImage;
9555 }
9556 if (!strcmp(name, "vkCmdBlitImage"))
9557 {
9558 return (void*)entry_vkCmdBlitImage;
9559 }
9560 if (!strcmp(name, "vkCmdCopyBufferToImage"))
9561 {
9562 return (void*)entry_vkCmdCopyBufferToImage;
9563 }
9564 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
9565 {
9566 return (void*)entry_vkCmdCopyImageToBuffer;
9567 }
9568 if (!strcmp(name, "vkCmdUpdateBuffer"))
9569 {
9570 return (void*)entry_vkCmdUpdateBuffer;
9571 }
9572 if (!strcmp(name, "vkCmdFillBuffer"))
9573 {
9574 return (void*)entry_vkCmdFillBuffer;
9575 }
9576 if (!strcmp(name, "vkCmdClearColorImage"))
9577 {
9578 return (void*)entry_vkCmdClearColorImage;
9579 }
9580 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
9581 {
9582 return (void*)entry_vkCmdClearDepthStencilImage;
9583 }
9584 if (!strcmp(name, "vkCmdClearAttachments"))
9585 {
9586 return (void*)entry_vkCmdClearAttachments;
9587 }
9588 if (!strcmp(name, "vkCmdResolveImage"))
9589 {
9590 return (void*)entry_vkCmdResolveImage;
9591 }
9592 if (!strcmp(name, "vkCmdSetEvent"))
9593 {
9594 return (void*)entry_vkCmdSetEvent;
9595 }
9596 if (!strcmp(name, "vkCmdResetEvent"))
9597 {
9598 return (void*)entry_vkCmdResetEvent;
9599 }
9600 if (!strcmp(name, "vkCmdWaitEvents"))
9601 {
9602 return (void*)entry_vkCmdWaitEvents;
9603 }
9604 if (!strcmp(name, "vkCmdPipelineBarrier"))
9605 {
9606 return (void*)entry_vkCmdPipelineBarrier;
9607 }
9608 if (!strcmp(name, "vkCmdBeginQuery"))
9609 {
9610 return (void*)entry_vkCmdBeginQuery;
9611 }
9612 if (!strcmp(name, "vkCmdEndQuery"))
9613 {
9614 return (void*)entry_vkCmdEndQuery;
9615 }
9616 if (!strcmp(name, "vkCmdResetQueryPool"))
9617 {
9618 return (void*)entry_vkCmdResetQueryPool;
9619 }
9620 if (!strcmp(name, "vkCmdWriteTimestamp"))
9621 {
9622 return (void*)entry_vkCmdWriteTimestamp;
9623 }
9624 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
9625 {
9626 return (void*)entry_vkCmdCopyQueryPoolResults;
9627 }
9628 if (!strcmp(name, "vkCmdPushConstants"))
9629 {
9630 return (void*)entry_vkCmdPushConstants;
9631 }
9632 if (!strcmp(name, "vkCmdBeginRenderPass"))
9633 {
9634 return (void*)entry_vkCmdBeginRenderPass;
9635 }
9636 if (!strcmp(name, "vkCmdNextSubpass"))
9637 {
9638 return (void*)entry_vkCmdNextSubpass;
9639 }
9640 if (!strcmp(name, "vkCmdEndRenderPass"))
9641 {
9642 return (void*)entry_vkCmdEndRenderPass;
9643 }
9644 if (!strcmp(name, "vkCmdExecuteCommands"))
9645 {
9646 return (void*)entry_vkCmdExecuteCommands;
9647 }
9648#endif
9649#ifdef VK_VERSION_1_1
9650 if (!strcmp(name, "vkEnumerateInstanceVersion"))
9651 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009652 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009653 }
9654 if (!strcmp(name, "vkBindBufferMemory2"))
9655 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009656 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009657 }
9658 if (!strcmp(name, "vkBindImageMemory2"))
9659 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009660 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009661 }
9662 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
9663 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009664 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009665 }
9666 if (!strcmp(name, "vkCmdSetDeviceMask"))
9667 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009668 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009669 }
9670 if (!strcmp(name, "vkCmdDispatchBase"))
9671 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009672 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009673 }
9674 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
9675 {
Lingfeng Yang113689e2018-11-11 16:48:50 -08009676 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009677 }
9678 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
9679 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009680 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009681 }
9682 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
9683 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009684 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009685 }
9686 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
9687 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009688 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009689 }
9690 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
9691 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009692 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009693 }
9694 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
9695 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009696 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009697 }
9698 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
9699 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009700 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009701 }
9702 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
9703 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009704 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009705 }
9706 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
9707 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009708 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009709 }
9710 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
9711 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009712 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009713 }
9714 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
9715 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009716 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009717 }
9718 if (!strcmp(name, "vkTrimCommandPool"))
9719 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009720 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009721 }
9722 if (!strcmp(name, "vkGetDeviceQueue2"))
9723 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009724 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009725 }
9726 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
9727 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009728 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009729 }
9730 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
9731 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009732 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009733 }
9734 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
9735 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009736 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009737 }
9738 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
9739 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009740 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009741 }
9742 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
9743 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009744 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009745 }
9746 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
9747 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009748 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009749 }
9750 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
9751 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009752 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009753 }
9754 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
9755 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009756 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009757 }
9758 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
9759 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009760 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009761 }
9762#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009763#ifdef VK_VERSION_1_2
9764 if (!strcmp(name, "vkCmdDrawIndirectCount"))
9765 {
9766 return nullptr;
9767 }
9768 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
9769 {
9770 return nullptr;
9771 }
9772 if (!strcmp(name, "vkCreateRenderPass2"))
9773 {
9774 return nullptr;
9775 }
9776 if (!strcmp(name, "vkCmdBeginRenderPass2"))
9777 {
9778 return nullptr;
9779 }
9780 if (!strcmp(name, "vkCmdNextSubpass2"))
9781 {
9782 return nullptr;
9783 }
9784 if (!strcmp(name, "vkCmdEndRenderPass2"))
9785 {
9786 return nullptr;
9787 }
9788 if (!strcmp(name, "vkResetQueryPool"))
9789 {
9790 return nullptr;
9791 }
9792 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
9793 {
9794 return nullptr;
9795 }
9796 if (!strcmp(name, "vkWaitSemaphores"))
9797 {
9798 return nullptr;
9799 }
9800 if (!strcmp(name, "vkSignalSemaphore"))
9801 {
9802 return nullptr;
9803 }
9804 if (!strcmp(name, "vkGetBufferDeviceAddress"))
9805 {
9806 return nullptr;
9807 }
9808 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
9809 {
9810 return nullptr;
9811 }
9812 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
9813 {
9814 return nullptr;
9815 }
9816#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009817#ifdef VK_KHR_surface
9818 if (!strcmp(name, "vkDestroySurfaceKHR"))
9819 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009820 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009821 }
9822 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
9823 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009824 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009825 }
9826 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
9827 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009828 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009829 }
9830 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
9831 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009832 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009833 }
9834 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
9835 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009836 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009837 }
9838#endif
9839#ifdef VK_KHR_swapchain
9840 if (!strcmp(name, "vkCreateSwapchainKHR"))
9841 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009842 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009843 }
9844 if (!strcmp(name, "vkDestroySwapchainKHR"))
9845 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009846 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009847 }
9848 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
9849 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009850 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009851 }
9852 if (!strcmp(name, "vkAcquireNextImageKHR"))
9853 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009854 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009855 }
9856 if (!strcmp(name, "vkQueuePresentKHR"))
9857 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009858 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009859 }
9860 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
9861 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009862 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009863 }
9864 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
9865 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009866 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009867 }
9868 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
9869 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009870 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009871 }
9872 if (!strcmp(name, "vkAcquireNextImage2KHR"))
9873 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009874 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009875 }
9876#endif
9877#ifdef VK_KHR_display
9878 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
9879 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009880 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009881 }
9882 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
9883 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009884 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009885 }
9886 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
9887 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009888 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009889 }
9890 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
9891 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009892 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009893 }
9894 if (!strcmp(name, "vkCreateDisplayModeKHR"))
9895 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009896 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009897 }
9898 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
9899 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009900 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009901 }
9902 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
9903 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009904 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009905 }
9906#endif
9907#ifdef VK_KHR_display_swapchain
9908 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
9909 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009910 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009911 }
9912#endif
9913#ifdef VK_KHR_xlib_surface
9914 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
9915 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009916 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009917 }
9918 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
9919 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009920 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009921 }
9922#endif
9923#ifdef VK_KHR_xcb_surface
9924 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
9925 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009926 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009927 }
9928 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
9929 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009930 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009931 }
9932#endif
9933#ifdef VK_KHR_wayland_surface
9934 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
9935 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009936 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009937 }
9938 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
9939 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009940 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009941 }
9942#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009943#ifdef VK_KHR_android_surface
9944 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
9945 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009946 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009947 }
9948#endif
9949#ifdef VK_KHR_win32_surface
9950 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
9951 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009952 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009953 }
9954 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
9955 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009956 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009957 }
9958#endif
Yilong Li353409a2022-01-04 02:37:56 -08009959#ifdef VK_KHR_video_queue
9960 if (!strcmp(name, "vkGetPhysicalDeviceVideoCapabilitiesKHR"))
9961 {
9962 return nullptr;
9963 }
9964 if (!strcmp(name, "vkGetPhysicalDeviceVideoFormatPropertiesKHR"))
9965 {
9966 return nullptr;
9967 }
9968 if (!strcmp(name, "vkCreateVideoSessionKHR"))
9969 {
9970 return nullptr;
9971 }
9972 if (!strcmp(name, "vkDestroyVideoSessionKHR"))
9973 {
9974 return nullptr;
9975 }
9976 if (!strcmp(name, "vkGetVideoSessionMemoryRequirementsKHR"))
9977 {
9978 return nullptr;
9979 }
9980 if (!strcmp(name, "vkBindVideoSessionMemoryKHR"))
9981 {
9982 return nullptr;
9983 }
9984 if (!strcmp(name, "vkCreateVideoSessionParametersKHR"))
9985 {
9986 return nullptr;
9987 }
9988 if (!strcmp(name, "vkUpdateVideoSessionParametersKHR"))
9989 {
9990 return nullptr;
9991 }
9992 if (!strcmp(name, "vkDestroyVideoSessionParametersKHR"))
9993 {
9994 return nullptr;
9995 }
9996 if (!strcmp(name, "vkCmdBeginVideoCodingKHR"))
9997 {
9998 return nullptr;
9999 }
10000 if (!strcmp(name, "vkCmdEndVideoCodingKHR"))
10001 {
10002 return nullptr;
10003 }
10004 if (!strcmp(name, "vkCmdControlVideoCodingKHR"))
10005 {
10006 return nullptr;
10007 }
10008#endif
10009#ifdef VK_KHR_video_decode_queue
10010 if (!strcmp(name, "vkCmdDecodeVideoKHR"))
10011 {
10012 return nullptr;
10013 }
10014#endif
10015#ifdef VK_KHR_dynamic_rendering
10016 if (!strcmp(name, "vkCmdBeginRenderingKHR"))
10017 {
10018 return nullptr;
10019 }
10020 if (!strcmp(name, "vkCmdEndRenderingKHR"))
10021 {
10022 return nullptr;
10023 }
10024#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010025#ifdef VK_KHR_get_physical_device_properties2
10026 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
10027 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010028 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010029 }
10030 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
10031 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010032 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010033 }
10034 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
10035 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010036 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010037 }
10038 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
10039 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010040 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010041 }
10042 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
10043 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010044 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010045 }
10046 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
10047 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010048 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010049 }
10050 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
10051 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010052 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010053 }
10054#endif
10055#ifdef VK_KHR_device_group
10056 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
10057 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010058 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010059 }
10060 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
10061 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010062 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010063 }
10064 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
10065 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010066 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010067 }
10068#endif
10069#ifdef VK_KHR_maintenance1
10070 if (!strcmp(name, "vkTrimCommandPoolKHR"))
10071 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010072 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010073 }
10074#endif
10075#ifdef VK_KHR_device_group_creation
10076 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
10077 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010078 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010079 }
10080#endif
10081#ifdef VK_KHR_external_memory_capabilities
10082 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
10083 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010084 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010085 }
10086#endif
10087#ifdef VK_KHR_external_memory_win32
10088 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
10089 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010090 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010091 }
10092 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
10093 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010094 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010095 }
10096#endif
10097#ifdef VK_KHR_external_memory_fd
10098 if (!strcmp(name, "vkGetMemoryFdKHR"))
10099 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010100 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010101 }
10102 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
10103 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010104 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010105 }
10106#endif
10107#ifdef VK_KHR_external_semaphore_capabilities
10108 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
10109 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010110 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010111 }
10112#endif
10113#ifdef VK_KHR_external_semaphore_win32
10114 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
10115 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010116 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010117 }
10118 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
10119 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010120 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010121 }
10122#endif
10123#ifdef VK_KHR_external_semaphore_fd
10124 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
10125 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010126 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010127 }
10128 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
10129 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010130 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010131 }
10132#endif
10133#ifdef VK_KHR_push_descriptor
10134 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
10135 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010136 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010137 }
10138 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
10139 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010140 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010141 }
10142#endif
10143#ifdef VK_KHR_descriptor_update_template
10144 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
10145 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010146 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010147 }
10148 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
10149 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010150 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010151 }
10152 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
10153 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010154 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010155 }
10156#endif
10157#ifdef VK_KHR_create_renderpass2
10158 if (!strcmp(name, "vkCreateRenderPass2KHR"))
10159 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010160 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010161 }
10162 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
10163 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010164 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010165 }
10166 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
10167 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010168 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010169 }
10170 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
10171 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010172 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010173 }
10174#endif
10175#ifdef VK_KHR_shared_presentable_image
10176 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
10177 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010178 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010179 }
10180#endif
10181#ifdef VK_KHR_external_fence_capabilities
10182 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
10183 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010184 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010185 }
10186#endif
10187#ifdef VK_KHR_external_fence_win32
10188 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
10189 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010190 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010191 }
10192 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
10193 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010194 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010195 }
10196#endif
10197#ifdef VK_KHR_external_fence_fd
10198 if (!strcmp(name, "vkImportFenceFdKHR"))
10199 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010200 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010201 }
10202 if (!strcmp(name, "vkGetFenceFdKHR"))
10203 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010204 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010205 }
10206#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010207#ifdef VK_KHR_performance_query
10208 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
10209 {
10210 return nullptr;
10211 }
10212 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
10213 {
10214 return nullptr;
10215 }
10216 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
10217 {
10218 return nullptr;
10219 }
10220 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
10221 {
10222 return nullptr;
10223 }
10224#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010225#ifdef VK_KHR_get_surface_capabilities2
10226 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
10227 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010228 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010229 }
10230 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
10231 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010232 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010233 }
10234#endif
10235#ifdef VK_KHR_get_display_properties2
10236 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
10237 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010238 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010239 }
10240 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
10241 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010242 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010243 }
10244 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
10245 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010246 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010247 }
10248 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
10249 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010250 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010251 }
10252#endif
10253#ifdef VK_KHR_get_memory_requirements2
10254 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
10255 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010256 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010257 }
10258 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
10259 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010260 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010261 }
10262 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
10263 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010264 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010265 }
10266#endif
10267#ifdef VK_KHR_sampler_ycbcr_conversion
10268 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
10269 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010270 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010271 }
10272 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
10273 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010274 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010275 }
10276#endif
10277#ifdef VK_KHR_bind_memory2
10278 if (!strcmp(name, "vkBindBufferMemory2KHR"))
10279 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010280 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010281 }
10282 if (!strcmp(name, "vkBindImageMemory2KHR"))
10283 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010284 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010285 }
10286#endif
10287#ifdef VK_KHR_maintenance3
10288 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
10289 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010290 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010291 }
10292#endif
10293#ifdef VK_KHR_draw_indirect_count
10294 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
10295 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010296 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010297 }
10298 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
10299 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010300 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010301 }
10302#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010303#ifdef VK_KHR_timeline_semaphore
10304 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
10305 {
10306 return nullptr;
10307 }
10308 if (!strcmp(name, "vkWaitSemaphoresKHR"))
10309 {
10310 return nullptr;
10311 }
10312 if (!strcmp(name, "vkSignalSemaphoreKHR"))
10313 {
10314 return nullptr;
10315 }
10316#endif
10317#ifdef VK_KHR_fragment_shading_rate
10318 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
10319 {
10320 return nullptr;
10321 }
10322 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
10323 {
10324 return nullptr;
10325 }
10326#endif
Yilong Li353409a2022-01-04 02:37:56 -080010327#ifdef VK_KHR_present_wait
10328 if (!strcmp(name, "vkWaitForPresentKHR"))
10329 {
10330 return nullptr;
10331 }
10332#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010333#ifdef VK_KHR_buffer_device_address
10334 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
10335 {
10336 return nullptr;
10337 }
10338 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
10339 {
10340 return nullptr;
10341 }
10342 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
10343 {
10344 return nullptr;
10345 }
10346#endif
10347#ifdef VK_KHR_deferred_host_operations
10348 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
10349 {
10350 return nullptr;
10351 }
10352 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
10353 {
10354 return nullptr;
10355 }
10356 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
10357 {
10358 return nullptr;
10359 }
10360 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
10361 {
10362 return nullptr;
10363 }
10364 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
10365 {
10366 return nullptr;
10367 }
10368#endif
10369#ifdef VK_KHR_pipeline_executable_properties
10370 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
10371 {
10372 return nullptr;
10373 }
10374 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
10375 {
10376 return nullptr;
10377 }
10378 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
10379 {
10380 return nullptr;
10381 }
10382#endif
Yilong Li353409a2022-01-04 02:37:56 -080010383#ifdef VK_KHR_video_encode_queue
10384 if (!strcmp(name, "vkCmdEncodeVideoKHR"))
10385 {
10386 return nullptr;
10387 }
10388#endif
10389#ifdef VK_KHR_synchronization2
10390 if (!strcmp(name, "vkCmdSetEvent2KHR"))
10391 {
10392 return nullptr;
10393 }
10394 if (!strcmp(name, "vkCmdResetEvent2KHR"))
10395 {
10396 return nullptr;
10397 }
10398 if (!strcmp(name, "vkCmdWaitEvents2KHR"))
10399 {
10400 return nullptr;
10401 }
10402 if (!strcmp(name, "vkCmdPipelineBarrier2KHR"))
10403 {
10404 return nullptr;
10405 }
10406 if (!strcmp(name, "vkCmdWriteTimestamp2KHR"))
10407 {
10408 return nullptr;
10409 }
10410 if (!strcmp(name, "vkQueueSubmit2KHR"))
10411 {
10412 return nullptr;
10413 }
10414 if (!strcmp(name, "vkCmdWriteBufferMarker2AMD"))
10415 {
10416 return nullptr;
10417 }
10418 if (!strcmp(name, "vkGetQueueCheckpointData2NV"))
10419 {
10420 return nullptr;
10421 }
10422#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010423#ifdef VK_KHR_copy_commands2
10424 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
10425 {
10426 return nullptr;
10427 }
10428 if (!strcmp(name, "vkCmdCopyImage2KHR"))
10429 {
10430 return nullptr;
10431 }
10432 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
10433 {
10434 return nullptr;
10435 }
10436 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
10437 {
10438 return nullptr;
10439 }
10440 if (!strcmp(name, "vkCmdBlitImage2KHR"))
10441 {
10442 return nullptr;
10443 }
10444 if (!strcmp(name, "vkCmdResolveImage2KHR"))
10445 {
10446 return nullptr;
10447 }
10448#endif
Yilong Li353409a2022-01-04 02:37:56 -080010449#ifdef VK_KHR_maintenance4
10450 if (!strcmp(name, "vkGetDeviceBufferMemoryRequirementsKHR"))
10451 {
10452 return nullptr;
10453 }
10454 if (!strcmp(name, "vkGetDeviceImageMemoryRequirementsKHR"))
10455 {
10456 return nullptr;
10457 }
10458 if (!strcmp(name, "vkGetDeviceImageSparseMemoryRequirementsKHR"))
10459 {
10460 return nullptr;
10461 }
10462#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -080010463#ifdef VK_ANDROID_native_buffer
10464 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
10465 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010466 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -080010467 }
10468 if (!strcmp(name, "vkAcquireImageANDROID"))
10469 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010470 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -080010471 }
10472 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
10473 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010474 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -080010475 }
10476#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010477#ifdef VK_EXT_debug_report
10478 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
10479 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010480 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010481 }
10482 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
10483 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010484 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010485 }
10486 if (!strcmp(name, "vkDebugReportMessageEXT"))
10487 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010488 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010489 }
10490#endif
10491#ifdef VK_EXT_debug_marker
10492 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
10493 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010494 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010495 }
10496 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
10497 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010498 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010499 }
10500 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
10501 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010502 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010503 }
10504 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
10505 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010506 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010507 }
10508 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
10509 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010510 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010511 }
10512#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010513#ifdef VK_EXT_transform_feedback
10514 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
10515 {
10516 return nullptr;
10517 }
10518 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
10519 {
10520 return nullptr;
10521 }
10522 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
10523 {
10524 return nullptr;
10525 }
10526 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
10527 {
10528 return nullptr;
10529 }
10530 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
10531 {
10532 return nullptr;
10533 }
10534 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
10535 {
10536 return nullptr;
10537 }
10538#endif
Yilong Li353409a2022-01-04 02:37:56 -080010539#ifdef VK_NVX_binary_import
10540 if (!strcmp(name, "vkCreateCuModuleNVX"))
10541 {
10542 return nullptr;
10543 }
10544 if (!strcmp(name, "vkCreateCuFunctionNVX"))
10545 {
10546 return nullptr;
10547 }
10548 if (!strcmp(name, "vkDestroyCuModuleNVX"))
10549 {
10550 return nullptr;
10551 }
10552 if (!strcmp(name, "vkDestroyCuFunctionNVX"))
10553 {
10554 return nullptr;
10555 }
10556 if (!strcmp(name, "vkCmdCuLaunchKernelNVX"))
10557 {
10558 return nullptr;
10559 }
10560#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010561#ifdef VK_NVX_image_view_handle
10562 if (!strcmp(name, "vkGetImageViewHandleNVX"))
10563 {
10564 return nullptr;
10565 }
10566 if (!strcmp(name, "vkGetImageViewAddressNVX"))
10567 {
10568 return nullptr;
10569 }
10570#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010571#ifdef VK_AMD_draw_indirect_count
10572 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
10573 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010574 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010575 }
10576 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
10577 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010578 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010579 }
10580#endif
10581#ifdef VK_AMD_shader_info
10582 if (!strcmp(name, "vkGetShaderInfoAMD"))
10583 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010584 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010585 }
10586#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010587#ifdef VK_GGP_stream_descriptor_surface
10588 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
10589 {
10590 return nullptr;
10591 }
10592#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010593#ifdef VK_NV_external_memory_capabilities
10594 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
10595 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010596 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010597 }
10598#endif
10599#ifdef VK_NV_external_memory_win32
10600 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
10601 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010602 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010603 }
10604#endif
10605#ifdef VK_NN_vi_surface
10606 if (!strcmp(name, "vkCreateViSurfaceNN"))
10607 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010608 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010609 }
10610#endif
10611#ifdef VK_EXT_conditional_rendering
10612 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
10613 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010614 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010615 }
10616 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
10617 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010618 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010619 }
10620#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010621#ifdef VK_NV_clip_space_w_scaling
10622 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
10623 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010624 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010625 }
10626#endif
10627#ifdef VK_EXT_direct_mode_display
10628 if (!strcmp(name, "vkReleaseDisplayEXT"))
10629 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010630 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010631 }
10632#endif
10633#ifdef VK_EXT_acquire_xlib_display
10634 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
10635 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010636 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010637 }
10638 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
10639 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010640 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010641 }
10642#endif
10643#ifdef VK_EXT_display_surface_counter
10644 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
10645 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010646 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010647 }
10648#endif
10649#ifdef VK_EXT_display_control
10650 if (!strcmp(name, "vkDisplayPowerControlEXT"))
10651 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010652 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010653 }
10654 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
10655 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010656 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010657 }
10658 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
10659 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010660 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010661 }
10662 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
10663 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010664 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010665 }
10666#endif
10667#ifdef VK_GOOGLE_display_timing
10668 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
10669 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010670 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010671 }
10672 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
10673 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010674 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010675 }
10676#endif
10677#ifdef VK_EXT_discard_rectangles
10678 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
10679 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010680 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010681 }
10682#endif
10683#ifdef VK_EXT_hdr_metadata
10684 if (!strcmp(name, "vkSetHdrMetadataEXT"))
10685 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010686 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010687 }
10688#endif
10689#ifdef VK_MVK_ios_surface
10690 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
10691 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010692 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010693 }
10694#endif
10695#ifdef VK_MVK_macos_surface
10696 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
10697 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010698 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010699 }
10700#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010701#ifdef VK_MVK_moltenvk
10702 if (!strcmp(name, "vkGetMTLDeviceMVK"))
10703 {
10704 return nullptr;
10705 }
10706 if (!strcmp(name, "vkSetMTLTextureMVK"))
10707 {
10708 return nullptr;
10709 }
10710 if (!strcmp(name, "vkGetMTLTextureMVK"))
10711 {
10712 return nullptr;
10713 }
10714 if (!strcmp(name, "vkGetMTLBufferMVK"))
10715 {
10716 return nullptr;
10717 }
10718 if (!strcmp(name, "vkUseIOSurfaceMVK"))
10719 {
10720 return nullptr;
10721 }
10722 if (!strcmp(name, "vkGetIOSurfaceMVK"))
10723 {
10724 return nullptr;
10725 }
10726#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010727#ifdef VK_EXT_debug_utils
10728 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
10729 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010730 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010731 }
10732 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
10733 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010734 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010735 }
10736 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
10737 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010738 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010739 }
10740 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
10741 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010742 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010743 }
10744 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
10745 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010746 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010747 }
10748 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
10749 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010750 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010751 }
10752 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
10753 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010754 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010755 }
10756 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
10757 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010758 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010759 }
10760 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
10761 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010762 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010763 }
10764 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
10765 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010766 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010767 }
10768 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
10769 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010770 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010771 }
10772#endif
10773#ifdef VK_ANDROID_external_memory_android_hardware_buffer
10774 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
10775 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010776 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010777 }
10778 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
10779 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010780 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010781 }
10782#endif
10783#ifdef VK_EXT_sample_locations
10784 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
10785 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010786 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010787 }
10788 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
10789 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010790 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010791 }
10792#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010793#ifdef VK_EXT_image_drm_format_modifier
10794 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
10795 {
10796 return nullptr;
10797 }
10798#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010799#ifdef VK_EXT_validation_cache
10800 if (!strcmp(name, "vkCreateValidationCacheEXT"))
10801 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010802 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010803 }
10804 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
10805 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010806 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010807 }
10808 if (!strcmp(name, "vkMergeValidationCachesEXT"))
10809 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010810 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010811 }
10812 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
10813 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010814 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010815 }
10816#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010817#ifdef VK_NV_shading_rate_image
10818 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
10819 {
10820 return nullptr;
10821 }
10822 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
10823 {
10824 return nullptr;
10825 }
10826 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
10827 {
10828 return nullptr;
10829 }
10830#endif
10831#ifdef VK_NV_ray_tracing
10832 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
10833 {
10834 return nullptr;
10835 }
10836 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
10837 {
10838 return nullptr;
10839 }
10840 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
10841 {
10842 return nullptr;
10843 }
10844 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
10845 {
10846 return nullptr;
10847 }
10848 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
10849 {
10850 return nullptr;
10851 }
10852 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
10853 {
10854 return nullptr;
10855 }
10856 if (!strcmp(name, "vkCmdTraceRaysNV"))
10857 {
10858 return nullptr;
10859 }
10860 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
10861 {
10862 return nullptr;
10863 }
10864 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
10865 {
10866 return nullptr;
10867 }
10868 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
10869 {
10870 return nullptr;
10871 }
10872 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
10873 {
10874 return nullptr;
10875 }
10876 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
10877 {
10878 return nullptr;
10879 }
10880 if (!strcmp(name, "vkCompileDeferredNV"))
10881 {
10882 return nullptr;
10883 }
10884#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010885#ifdef VK_EXT_external_memory_host
10886 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
10887 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010888 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010889 }
10890#endif
10891#ifdef VK_AMD_buffer_marker
10892 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
10893 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010894 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010895 }
10896#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010897#ifdef VK_EXT_calibrated_timestamps
10898 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
10899 {
10900 return nullptr;
10901 }
10902 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
10903 {
10904 return nullptr;
10905 }
10906#endif
10907#ifdef VK_NV_mesh_shader
10908 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
10909 {
10910 return nullptr;
10911 }
10912 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
10913 {
10914 return nullptr;
10915 }
10916 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
10917 {
10918 return nullptr;
10919 }
10920#endif
10921#ifdef VK_NV_scissor_exclusive
10922 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
10923 {
10924 return nullptr;
10925 }
10926#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010927#ifdef VK_NV_device_diagnostic_checkpoints
10928 if (!strcmp(name, "vkCmdSetCheckpointNV"))
10929 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010930 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010931 }
10932 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
10933 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010934 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010935 }
10936#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010937#ifdef VK_INTEL_performance_query
10938 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
10939 {
10940 return nullptr;
10941 }
10942 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
10943 {
10944 return nullptr;
10945 }
10946 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
10947 {
10948 return nullptr;
10949 }
10950 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
10951 {
10952 return nullptr;
10953 }
10954 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
10955 {
10956 return nullptr;
10957 }
10958 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
10959 {
10960 return nullptr;
10961 }
10962 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
10963 {
10964 return nullptr;
10965 }
10966 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
10967 {
10968 return nullptr;
10969 }
10970 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
10971 {
10972 return nullptr;
10973 }
10974#endif
10975#ifdef VK_AMD_display_native_hdr
10976 if (!strcmp(name, "vkSetLocalDimmingAMD"))
10977 {
10978 return nullptr;
10979 }
10980#endif
10981#ifdef VK_FUCHSIA_imagepipe_surface
10982 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
10983 {
10984 return nullptr;
10985 }
10986#endif
10987#ifdef VK_EXT_metal_surface
10988 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080010989 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010990 return nullptr;
10991 }
10992#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010993#ifdef VK_EXT_buffer_device_address
10994 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
10995 {
10996 return nullptr;
10997 }
10998#endif
10999#ifdef VK_EXT_tooling_info
11000 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
11001 {
11002 return nullptr;
11003 }
11004#endif
11005#ifdef VK_NV_cooperative_matrix
11006 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
11007 {
11008 return nullptr;
11009 }
11010#endif
11011#ifdef VK_NV_coverage_reduction_mode
11012 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
11013 {
11014 return nullptr;
11015 }
11016#endif
11017#ifdef VK_EXT_full_screen_exclusive
11018 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
11019 {
11020 return nullptr;
11021 }
11022 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
11023 {
11024 return nullptr;
11025 }
11026 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
11027 {
11028 return nullptr;
11029 }
11030 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
11031 {
11032 return nullptr;
11033 }
11034#endif
11035#ifdef VK_EXT_headless_surface
11036 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
11037 {
11038 return nullptr;
11039 }
11040#endif
11041#ifdef VK_EXT_line_rasterization
11042 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
11043 {
11044 return nullptr;
11045 }
11046#endif
11047#ifdef VK_EXT_host_query_reset
11048 if (!strcmp(name, "vkResetQueryPoolEXT"))
11049 {
11050 return nullptr;
11051 }
11052#endif
11053#ifdef VK_EXT_extended_dynamic_state
11054 if (!strcmp(name, "vkCmdSetCullModeEXT"))
11055 {
11056 return nullptr;
11057 }
11058 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
11059 {
11060 return nullptr;
11061 }
11062 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
11063 {
11064 return nullptr;
11065 }
11066 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
11067 {
11068 return nullptr;
11069 }
11070 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
11071 {
11072 return nullptr;
11073 }
11074 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
11075 {
11076 return nullptr;
11077 }
11078 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
11079 {
11080 return nullptr;
11081 }
11082 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
11083 {
11084 return nullptr;
11085 }
11086 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
11087 {
11088 return nullptr;
11089 }
11090 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
11091 {
11092 return nullptr;
11093 }
11094 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
11095 {
11096 return nullptr;
11097 }
11098 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
11099 {
11100 return nullptr;
11101 }
11102#endif
11103#ifdef VK_NV_device_generated_commands
11104 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
11105 {
11106 return nullptr;
11107 }
11108 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
11109 {
11110 return nullptr;
11111 }
11112 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
11113 {
11114 return nullptr;
11115 }
11116 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
11117 {
11118 return nullptr;
11119 }
11120 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
11121 {
11122 return nullptr;
11123 }
11124 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
11125 {
11126 return nullptr;
11127 }
11128#endif
Yilong Li353409a2022-01-04 02:37:56 -080011129#ifdef VK_EXT_acquire_drm_display
11130 if (!strcmp(name, "vkAcquireDrmDisplayEXT"))
11131 {
11132 return nullptr;
11133 }
11134 if (!strcmp(name, "vkGetDrmDisplayEXT"))
11135 {
11136 return nullptr;
11137 }
11138#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011139#ifdef VK_EXT_private_data
11140 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
11141 {
11142 return nullptr;
11143 }
11144 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
11145 {
11146 return nullptr;
11147 }
11148 if (!strcmp(name, "vkSetPrivateDataEXT"))
11149 {
11150 return nullptr;
11151 }
11152 if (!strcmp(name, "vkGetPrivateDataEXT"))
11153 {
11154 return nullptr;
11155 }
11156#endif
11157#ifdef VK_NV_fragment_shading_rate_enums
11158 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
11159 {
11160 return nullptr;
11161 }
11162#endif
Yilong Li353409a2022-01-04 02:37:56 -080011163#ifdef VK_NV_acquire_winrt_display
11164 if (!strcmp(name, "vkAcquireWinrtDisplayNV"))
11165 {
11166 return nullptr;
11167 }
11168 if (!strcmp(name, "vkGetWinrtDisplayNV"))
11169 {
11170 return nullptr;
11171 }
11172#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011173#ifdef VK_EXT_directfb_surface
11174 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
11175 {
11176 return nullptr;
11177 }
11178 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
11179 {
11180 return nullptr;
11181 }
11182#endif
Yilong Li353409a2022-01-04 02:37:56 -080011183#ifdef VK_EXT_vertex_input_dynamic_state
11184 if (!strcmp(name, "vkCmdSetVertexInputEXT"))
11185 {
11186 return nullptr;
11187 }
11188#endif
11189#ifdef VK_FUCHSIA_external_memory
11190 if (!strcmp(name, "vkGetMemoryZirconHandleFUCHSIA"))
11191 {
11192 return nullptr;
11193 }
11194 if (!strcmp(name, "vkGetMemoryZirconHandlePropertiesFUCHSIA"))
11195 {
11196 return nullptr;
11197 }
11198#endif
11199#ifdef VK_FUCHSIA_external_semaphore
11200 if (!strcmp(name, "vkImportSemaphoreZirconHandleFUCHSIA"))
11201 {
11202 return nullptr;
11203 }
11204 if (!strcmp(name, "vkGetSemaphoreZirconHandleFUCHSIA"))
11205 {
11206 return nullptr;
11207 }
11208#endif
11209#ifdef VK_FUCHSIA_buffer_collection
11210 if (!strcmp(name, "vkCreateBufferCollectionFUCHSIA"))
11211 {
11212 return nullptr;
11213 }
11214 if (!strcmp(name, "vkSetBufferCollectionImageConstraintsFUCHSIA"))
11215 {
11216 return nullptr;
11217 }
11218 if (!strcmp(name, "vkSetBufferCollectionBufferConstraintsFUCHSIA"))
11219 {
11220 return nullptr;
11221 }
11222 if (!strcmp(name, "vkDestroyBufferCollectionFUCHSIA"))
11223 {
11224 return nullptr;
11225 }
11226 if (!strcmp(name, "vkGetBufferCollectionPropertiesFUCHSIA"))
11227 {
11228 return nullptr;
11229 }
11230#endif
11231#ifdef VK_HUAWEI_subpass_shading
11232 if (!strcmp(name, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI"))
11233 {
11234 return nullptr;
11235 }
11236 if (!strcmp(name, "vkCmdSubpassShadingHUAWEI"))
11237 {
11238 return nullptr;
11239 }
11240#endif
11241#ifdef VK_HUAWEI_invocation_mask
11242 if (!strcmp(name, "vkCmdBindInvocationMaskHUAWEI"))
11243 {
11244 return nullptr;
11245 }
11246#endif
11247#ifdef VK_NV_external_memory_rdma
11248 if (!strcmp(name, "vkGetMemoryRemoteAddressNV"))
11249 {
11250 return nullptr;
11251 }
11252#endif
11253#ifdef VK_EXT_extended_dynamic_state2
11254 if (!strcmp(name, "vkCmdSetPatchControlPointsEXT"))
11255 {
11256 return nullptr;
11257 }
11258 if (!strcmp(name, "vkCmdSetRasterizerDiscardEnableEXT"))
11259 {
11260 return nullptr;
11261 }
11262 if (!strcmp(name, "vkCmdSetDepthBiasEnableEXT"))
11263 {
11264 return nullptr;
11265 }
11266 if (!strcmp(name, "vkCmdSetLogicOpEXT"))
11267 {
11268 return nullptr;
11269 }
11270 if (!strcmp(name, "vkCmdSetPrimitiveRestartEnableEXT"))
11271 {
11272 return nullptr;
11273 }
11274#endif
11275#ifdef VK_QNX_screen_surface
11276 if (!strcmp(name, "vkCreateScreenSurfaceQNX"))
11277 {
11278 return nullptr;
11279 }
11280 if (!strcmp(name, "vkGetPhysicalDeviceScreenPresentationSupportQNX"))
11281 {
11282 return nullptr;
11283 }
11284#endif
11285#ifdef VK_EXT_color_write_enable
11286 if (!strcmp(name, "vkCmdSetColorWriteEnableEXT"))
11287 {
11288 return nullptr;
11289 }
11290#endif
Yilong Li71c43c52021-02-10 02:50:43 -080011291#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -070011292 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
11293 {
11294 return nullptr;
11295 }
11296 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
11297 {
11298 return nullptr;
11299 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011300 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
11301 {
11302 return nullptr;
11303 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070011304 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
11305 {
11306 return nullptr;
11307 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070011308 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
11309 {
11310 return nullptr;
11311 }
11312 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
11313 {
11314 return nullptr;
11315 }
11316 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
11317 {
11318 return nullptr;
11319 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070011320 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
11321 {
11322 return nullptr;
11323 }
Lingfeng Yang87f11962019-06-27 16:28:53 +000011324 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
11325 {
11326 return nullptr;
11327 }
11328 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
11329 {
11330 return nullptr;
11331 }
Lingfeng Yang4c542412020-02-04 18:18:32 -080011332 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
11333 {
11334 return nullptr;
11335 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070011336 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
11337 {
11338 return nullptr;
11339 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070011340 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
11341 {
11342 return nullptr;
11343 }
11344 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
11345 {
11346 return nullptr;
11347 }
11348 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
11349 {
11350 return nullptr;
11351 }
11352 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
11353 {
11354 return nullptr;
11355 }
Yilong Lia48b0102020-09-15 15:08:28 -070011356 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
11357 {
11358 return nullptr;
11359 }
Yilong Lidcaf0672022-02-22 16:39:57 -080011360 if (!strcmp(name, "vkGetLinearImageLayout2GOOGLE"))
11361 {
11362 return nullptr;
11363 }
Yilong Lia8d45f12021-02-07 02:30:21 -080011364 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
Lingfeng Yang2178dc72021-01-08 14:01:47 -080011365 {
11366 return nullptr;
11367 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080011368 if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
11369 {
11370 return nullptr;
11371 }
11372 if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
11373 {
11374 return nullptr;
11375 }
Lingfeng Yang5678e1e2021-07-15 12:28:05 -070011376 if (!strcmp(name, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE"))
11377 {
11378 return nullptr;
11379 }
Lingfeng Yang2178dc72021-01-08 14:01:47 -080011380#endif
Yilong Li353409a2022-01-04 02:37:56 -080011381#ifdef VK_EXT_multi_draw
11382 if (!strcmp(name, "vkCmdDrawMultiEXT"))
11383 {
11384 return nullptr;
11385 }
11386 if (!strcmp(name, "vkCmdDrawMultiIndexedEXT"))
11387 {
11388 return nullptr;
11389 }
11390#endif
11391#ifdef VK_EXT_pageable_device_local_memory
11392 if (!strcmp(name, "vkSetDeviceMemoryPriorityEXT"))
11393 {
11394 return nullptr;
11395 }
11396#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011397#ifdef VK_KHR_acceleration_structure
11398 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
11399 {
11400 return nullptr;
11401 }
11402 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
11403 {
11404 return nullptr;
11405 }
11406 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
11407 {
11408 return nullptr;
11409 }
11410 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
11411 {
11412 return nullptr;
11413 }
11414 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
11415 {
11416 return nullptr;
11417 }
11418 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
11419 {
11420 return nullptr;
11421 }
11422 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
11423 {
11424 return nullptr;
11425 }
11426 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
11427 {
11428 return nullptr;
11429 }
11430 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
11431 {
11432 return nullptr;
11433 }
11434 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
11435 {
11436 return nullptr;
11437 }
11438 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
11439 {
11440 return nullptr;
11441 }
11442 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
11443 {
11444 return nullptr;
11445 }
11446 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
11447 {
11448 return nullptr;
11449 }
11450 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
11451 {
11452 return nullptr;
11453 }
11454 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
11455 {
11456 return nullptr;
11457 }
11458 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
11459 {
11460 return nullptr;
11461 }
11462#endif
11463#ifdef VK_KHR_ray_tracing_pipeline
11464 if (!strcmp(name, "vkCmdTraceRaysKHR"))
11465 {
11466 return nullptr;
11467 }
11468 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
11469 {
11470 return nullptr;
11471 }
11472 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
11473 {
11474 return nullptr;
11475 }
11476 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
11477 {
11478 return nullptr;
11479 }
11480 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
11481 {
11482 return nullptr;
11483 }
11484 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
Lingfeng Yangded34672021-01-22 23:17:47 -080011485 {
11486 return nullptr;
11487 }
11488#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011489 return nullptr;
11490}
11491void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
11492 auto resources = ResourceTracker::get();
11493 bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
11494#ifdef VK_VERSION_1_0
11495 if (!strcmp(name, "vkCreateInstance"))
11496 {
11497 return (void*)entry_vkCreateInstance;
11498 }
11499 if (!strcmp(name, "vkDestroyInstance"))
11500 {
11501 return (void*)entry_vkDestroyInstance;
11502 }
11503 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
11504 {
11505 return (void*)entry_vkEnumeratePhysicalDevices;
11506 }
11507 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
11508 {
11509 return (void*)entry_vkGetPhysicalDeviceFeatures;
11510 }
11511 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
11512 {
11513 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
11514 }
11515 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
11516 {
11517 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
11518 }
11519 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
11520 {
11521 return (void*)entry_vkGetPhysicalDeviceProperties;
11522 }
11523 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
11524 {
11525 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
11526 }
11527 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
11528 {
11529 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
11530 }
11531 if (!strcmp(name, "vkGetInstanceProcAddr"))
11532 {
11533 return (void*)entry_vkGetInstanceProcAddr;
11534 }
11535 if (!strcmp(name, "vkGetDeviceProcAddr"))
11536 {
11537 return (void*)entry_vkGetDeviceProcAddr;
11538 }
11539 if (!strcmp(name, "vkCreateDevice"))
11540 {
11541 return (void*)entry_vkCreateDevice;
11542 }
11543 if (!strcmp(name, "vkDestroyDevice"))
11544 {
11545 return (void*)entry_vkDestroyDevice;
11546 }
11547 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
11548 {
11549 return (void*)entry_vkEnumerateInstanceExtensionProperties;
11550 }
11551 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
11552 {
11553 return (void*)entry_vkEnumerateDeviceExtensionProperties;
11554 }
11555 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
11556 {
11557 return (void*)entry_vkEnumerateInstanceLayerProperties;
11558 }
11559 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
11560 {
11561 return (void*)entry_vkEnumerateDeviceLayerProperties;
11562 }
11563 if (!strcmp(name, "vkGetDeviceQueue"))
11564 {
11565 return (void*)entry_vkGetDeviceQueue;
11566 }
11567 if (!strcmp(name, "vkQueueSubmit"))
11568 {
11569 return (void*)entry_vkQueueSubmit;
11570 }
11571 if (!strcmp(name, "vkQueueWaitIdle"))
11572 {
11573 return (void*)entry_vkQueueWaitIdle;
11574 }
11575 if (!strcmp(name, "vkDeviceWaitIdle"))
11576 {
11577 return (void*)entry_vkDeviceWaitIdle;
11578 }
11579 if (!strcmp(name, "vkAllocateMemory"))
11580 {
11581 return (void*)entry_vkAllocateMemory;
11582 }
11583 if (!strcmp(name, "vkFreeMemory"))
11584 {
11585 return (void*)entry_vkFreeMemory;
11586 }
11587 if (!strcmp(name, "vkMapMemory"))
11588 {
11589 return (void*)entry_vkMapMemory;
11590 }
11591 if (!strcmp(name, "vkUnmapMemory"))
11592 {
11593 return (void*)entry_vkUnmapMemory;
11594 }
11595 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
11596 {
11597 return (void*)entry_vkFlushMappedMemoryRanges;
11598 }
11599 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
11600 {
11601 return (void*)entry_vkInvalidateMappedMemoryRanges;
11602 }
11603 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
11604 {
11605 return (void*)entry_vkGetDeviceMemoryCommitment;
11606 }
11607 if (!strcmp(name, "vkBindBufferMemory"))
11608 {
11609 return (void*)entry_vkBindBufferMemory;
11610 }
11611 if (!strcmp(name, "vkBindImageMemory"))
11612 {
11613 return (void*)entry_vkBindImageMemory;
11614 }
11615 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
11616 {
11617 return (void*)entry_vkGetBufferMemoryRequirements;
11618 }
11619 if (!strcmp(name, "vkGetImageMemoryRequirements"))
11620 {
11621 return (void*)entry_vkGetImageMemoryRequirements;
11622 }
11623 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
11624 {
11625 return (void*)entry_vkGetImageSparseMemoryRequirements;
11626 }
11627 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
11628 {
11629 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
11630 }
11631 if (!strcmp(name, "vkQueueBindSparse"))
11632 {
11633 return (void*)entry_vkQueueBindSparse;
11634 }
11635 if (!strcmp(name, "vkCreateFence"))
11636 {
11637 return (void*)entry_vkCreateFence;
11638 }
11639 if (!strcmp(name, "vkDestroyFence"))
11640 {
11641 return (void*)entry_vkDestroyFence;
11642 }
11643 if (!strcmp(name, "vkResetFences"))
11644 {
11645 return (void*)entry_vkResetFences;
11646 }
11647 if (!strcmp(name, "vkGetFenceStatus"))
11648 {
11649 return (void*)entry_vkGetFenceStatus;
11650 }
11651 if (!strcmp(name, "vkWaitForFences"))
11652 {
11653 return (void*)entry_vkWaitForFences;
11654 }
11655 if (!strcmp(name, "vkCreateSemaphore"))
11656 {
11657 return (void*)entry_vkCreateSemaphore;
11658 }
11659 if (!strcmp(name, "vkDestroySemaphore"))
11660 {
11661 return (void*)entry_vkDestroySemaphore;
11662 }
11663 if (!strcmp(name, "vkCreateEvent"))
11664 {
11665 return (void*)entry_vkCreateEvent;
11666 }
11667 if (!strcmp(name, "vkDestroyEvent"))
11668 {
11669 return (void*)entry_vkDestroyEvent;
11670 }
11671 if (!strcmp(name, "vkGetEventStatus"))
11672 {
11673 return (void*)entry_vkGetEventStatus;
11674 }
11675 if (!strcmp(name, "vkSetEvent"))
11676 {
11677 return (void*)entry_vkSetEvent;
11678 }
11679 if (!strcmp(name, "vkResetEvent"))
11680 {
11681 return (void*)entry_vkResetEvent;
11682 }
11683 if (!strcmp(name, "vkCreateQueryPool"))
11684 {
11685 return (void*)entry_vkCreateQueryPool;
11686 }
11687 if (!strcmp(name, "vkDestroyQueryPool"))
11688 {
11689 return (void*)entry_vkDestroyQueryPool;
11690 }
11691 if (!strcmp(name, "vkGetQueryPoolResults"))
11692 {
11693 return (void*)entry_vkGetQueryPoolResults;
11694 }
11695 if (!strcmp(name, "vkCreateBuffer"))
11696 {
11697 return (void*)entry_vkCreateBuffer;
11698 }
11699 if (!strcmp(name, "vkDestroyBuffer"))
11700 {
11701 return (void*)entry_vkDestroyBuffer;
11702 }
11703 if (!strcmp(name, "vkCreateBufferView"))
11704 {
11705 return (void*)entry_vkCreateBufferView;
11706 }
11707 if (!strcmp(name, "vkDestroyBufferView"))
11708 {
11709 return (void*)entry_vkDestroyBufferView;
11710 }
11711 if (!strcmp(name, "vkCreateImage"))
11712 {
11713 return (void*)entry_vkCreateImage;
11714 }
11715 if (!strcmp(name, "vkDestroyImage"))
11716 {
11717 return (void*)entry_vkDestroyImage;
11718 }
11719 if (!strcmp(name, "vkGetImageSubresourceLayout"))
11720 {
11721 return (void*)entry_vkGetImageSubresourceLayout;
11722 }
11723 if (!strcmp(name, "vkCreateImageView"))
11724 {
11725 return (void*)entry_vkCreateImageView;
11726 }
11727 if (!strcmp(name, "vkDestroyImageView"))
11728 {
11729 return (void*)entry_vkDestroyImageView;
11730 }
11731 if (!strcmp(name, "vkCreateShaderModule"))
11732 {
11733 return (void*)entry_vkCreateShaderModule;
11734 }
11735 if (!strcmp(name, "vkDestroyShaderModule"))
11736 {
11737 return (void*)entry_vkDestroyShaderModule;
11738 }
11739 if (!strcmp(name, "vkCreatePipelineCache"))
11740 {
11741 return (void*)entry_vkCreatePipelineCache;
11742 }
11743 if (!strcmp(name, "vkDestroyPipelineCache"))
11744 {
11745 return (void*)entry_vkDestroyPipelineCache;
11746 }
11747 if (!strcmp(name, "vkGetPipelineCacheData"))
11748 {
11749 return (void*)entry_vkGetPipelineCacheData;
11750 }
11751 if (!strcmp(name, "vkMergePipelineCaches"))
11752 {
11753 return (void*)entry_vkMergePipelineCaches;
11754 }
11755 if (!strcmp(name, "vkCreateGraphicsPipelines"))
11756 {
11757 return (void*)entry_vkCreateGraphicsPipelines;
11758 }
11759 if (!strcmp(name, "vkCreateComputePipelines"))
11760 {
11761 return (void*)entry_vkCreateComputePipelines;
11762 }
11763 if (!strcmp(name, "vkDestroyPipeline"))
11764 {
11765 return (void*)entry_vkDestroyPipeline;
11766 }
11767 if (!strcmp(name, "vkCreatePipelineLayout"))
11768 {
11769 return (void*)entry_vkCreatePipelineLayout;
11770 }
11771 if (!strcmp(name, "vkDestroyPipelineLayout"))
11772 {
11773 return (void*)entry_vkDestroyPipelineLayout;
11774 }
11775 if (!strcmp(name, "vkCreateSampler"))
11776 {
11777 return (void*)entry_vkCreateSampler;
11778 }
11779 if (!strcmp(name, "vkDestroySampler"))
11780 {
11781 return (void*)entry_vkDestroySampler;
11782 }
11783 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
11784 {
11785 return (void*)entry_vkCreateDescriptorSetLayout;
11786 }
11787 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
11788 {
11789 return (void*)entry_vkDestroyDescriptorSetLayout;
11790 }
11791 if (!strcmp(name, "vkCreateDescriptorPool"))
11792 {
11793 return (void*)entry_vkCreateDescriptorPool;
11794 }
11795 if (!strcmp(name, "vkDestroyDescriptorPool"))
11796 {
11797 return (void*)entry_vkDestroyDescriptorPool;
11798 }
11799 if (!strcmp(name, "vkResetDescriptorPool"))
11800 {
11801 return (void*)entry_vkResetDescriptorPool;
11802 }
11803 if (!strcmp(name, "vkAllocateDescriptorSets"))
11804 {
11805 return (void*)entry_vkAllocateDescriptorSets;
11806 }
11807 if (!strcmp(name, "vkFreeDescriptorSets"))
11808 {
11809 return (void*)entry_vkFreeDescriptorSets;
11810 }
11811 if (!strcmp(name, "vkUpdateDescriptorSets"))
11812 {
11813 return (void*)entry_vkUpdateDescriptorSets;
11814 }
11815 if (!strcmp(name, "vkCreateFramebuffer"))
11816 {
11817 return (void*)entry_vkCreateFramebuffer;
11818 }
11819 if (!strcmp(name, "vkDestroyFramebuffer"))
11820 {
11821 return (void*)entry_vkDestroyFramebuffer;
11822 }
11823 if (!strcmp(name, "vkCreateRenderPass"))
11824 {
11825 return (void*)entry_vkCreateRenderPass;
11826 }
11827 if (!strcmp(name, "vkDestroyRenderPass"))
11828 {
11829 return (void*)entry_vkDestroyRenderPass;
11830 }
11831 if (!strcmp(name, "vkGetRenderAreaGranularity"))
11832 {
11833 return (void*)entry_vkGetRenderAreaGranularity;
11834 }
11835 if (!strcmp(name, "vkCreateCommandPool"))
11836 {
11837 return (void*)entry_vkCreateCommandPool;
11838 }
11839 if (!strcmp(name, "vkDestroyCommandPool"))
11840 {
11841 return (void*)entry_vkDestroyCommandPool;
11842 }
11843 if (!strcmp(name, "vkResetCommandPool"))
11844 {
11845 return (void*)entry_vkResetCommandPool;
11846 }
11847 if (!strcmp(name, "vkAllocateCommandBuffers"))
11848 {
11849 return (void*)entry_vkAllocateCommandBuffers;
11850 }
11851 if (!strcmp(name, "vkFreeCommandBuffers"))
11852 {
11853 return (void*)entry_vkFreeCommandBuffers;
11854 }
11855 if (!strcmp(name, "vkBeginCommandBuffer"))
11856 {
11857 return (void*)entry_vkBeginCommandBuffer;
11858 }
11859 if (!strcmp(name, "vkEndCommandBuffer"))
11860 {
11861 return (void*)entry_vkEndCommandBuffer;
11862 }
11863 if (!strcmp(name, "vkResetCommandBuffer"))
11864 {
11865 return (void*)entry_vkResetCommandBuffer;
11866 }
11867 if (!strcmp(name, "vkCmdBindPipeline"))
11868 {
11869 return (void*)entry_vkCmdBindPipeline;
11870 }
11871 if (!strcmp(name, "vkCmdSetViewport"))
11872 {
11873 return (void*)entry_vkCmdSetViewport;
11874 }
11875 if (!strcmp(name, "vkCmdSetScissor"))
11876 {
11877 return (void*)entry_vkCmdSetScissor;
11878 }
11879 if (!strcmp(name, "vkCmdSetLineWidth"))
11880 {
11881 return (void*)entry_vkCmdSetLineWidth;
11882 }
11883 if (!strcmp(name, "vkCmdSetDepthBias"))
11884 {
11885 return (void*)entry_vkCmdSetDepthBias;
11886 }
11887 if (!strcmp(name, "vkCmdSetBlendConstants"))
11888 {
11889 return (void*)entry_vkCmdSetBlendConstants;
11890 }
11891 if (!strcmp(name, "vkCmdSetDepthBounds"))
11892 {
11893 return (void*)entry_vkCmdSetDepthBounds;
11894 }
11895 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
11896 {
11897 return (void*)entry_vkCmdSetStencilCompareMask;
11898 }
11899 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
11900 {
11901 return (void*)entry_vkCmdSetStencilWriteMask;
11902 }
11903 if (!strcmp(name, "vkCmdSetStencilReference"))
11904 {
11905 return (void*)entry_vkCmdSetStencilReference;
11906 }
11907 if (!strcmp(name, "vkCmdBindDescriptorSets"))
11908 {
11909 return (void*)entry_vkCmdBindDescriptorSets;
11910 }
11911 if (!strcmp(name, "vkCmdBindIndexBuffer"))
11912 {
11913 return (void*)entry_vkCmdBindIndexBuffer;
11914 }
11915 if (!strcmp(name, "vkCmdBindVertexBuffers"))
11916 {
11917 return (void*)entry_vkCmdBindVertexBuffers;
11918 }
11919 if (!strcmp(name, "vkCmdDraw"))
11920 {
11921 return (void*)entry_vkCmdDraw;
11922 }
11923 if (!strcmp(name, "vkCmdDrawIndexed"))
11924 {
11925 return (void*)entry_vkCmdDrawIndexed;
11926 }
11927 if (!strcmp(name, "vkCmdDrawIndirect"))
11928 {
11929 return (void*)entry_vkCmdDrawIndirect;
11930 }
11931 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
11932 {
11933 return (void*)entry_vkCmdDrawIndexedIndirect;
11934 }
11935 if (!strcmp(name, "vkCmdDispatch"))
11936 {
11937 return (void*)entry_vkCmdDispatch;
11938 }
11939 if (!strcmp(name, "vkCmdDispatchIndirect"))
11940 {
11941 return (void*)entry_vkCmdDispatchIndirect;
11942 }
11943 if (!strcmp(name, "vkCmdCopyBuffer"))
11944 {
11945 return (void*)entry_vkCmdCopyBuffer;
11946 }
11947 if (!strcmp(name, "vkCmdCopyImage"))
11948 {
11949 return (void*)entry_vkCmdCopyImage;
11950 }
11951 if (!strcmp(name, "vkCmdBlitImage"))
11952 {
11953 return (void*)entry_vkCmdBlitImage;
11954 }
11955 if (!strcmp(name, "vkCmdCopyBufferToImage"))
11956 {
11957 return (void*)entry_vkCmdCopyBufferToImage;
11958 }
11959 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
11960 {
11961 return (void*)entry_vkCmdCopyImageToBuffer;
11962 }
11963 if (!strcmp(name, "vkCmdUpdateBuffer"))
11964 {
11965 return (void*)entry_vkCmdUpdateBuffer;
11966 }
11967 if (!strcmp(name, "vkCmdFillBuffer"))
11968 {
11969 return (void*)entry_vkCmdFillBuffer;
11970 }
11971 if (!strcmp(name, "vkCmdClearColorImage"))
11972 {
11973 return (void*)entry_vkCmdClearColorImage;
11974 }
11975 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
11976 {
11977 return (void*)entry_vkCmdClearDepthStencilImage;
11978 }
11979 if (!strcmp(name, "vkCmdClearAttachments"))
11980 {
11981 return (void*)entry_vkCmdClearAttachments;
11982 }
11983 if (!strcmp(name, "vkCmdResolveImage"))
11984 {
11985 return (void*)entry_vkCmdResolveImage;
11986 }
11987 if (!strcmp(name, "vkCmdSetEvent"))
11988 {
11989 return (void*)entry_vkCmdSetEvent;
11990 }
11991 if (!strcmp(name, "vkCmdResetEvent"))
11992 {
11993 return (void*)entry_vkCmdResetEvent;
11994 }
11995 if (!strcmp(name, "vkCmdWaitEvents"))
11996 {
11997 return (void*)entry_vkCmdWaitEvents;
11998 }
11999 if (!strcmp(name, "vkCmdPipelineBarrier"))
12000 {
12001 return (void*)entry_vkCmdPipelineBarrier;
12002 }
12003 if (!strcmp(name, "vkCmdBeginQuery"))
12004 {
12005 return (void*)entry_vkCmdBeginQuery;
12006 }
12007 if (!strcmp(name, "vkCmdEndQuery"))
12008 {
12009 return (void*)entry_vkCmdEndQuery;
12010 }
12011 if (!strcmp(name, "vkCmdResetQueryPool"))
12012 {
12013 return (void*)entry_vkCmdResetQueryPool;
12014 }
12015 if (!strcmp(name, "vkCmdWriteTimestamp"))
12016 {
12017 return (void*)entry_vkCmdWriteTimestamp;
12018 }
12019 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
12020 {
12021 return (void*)entry_vkCmdCopyQueryPoolResults;
12022 }
12023 if (!strcmp(name, "vkCmdPushConstants"))
12024 {
12025 return (void*)entry_vkCmdPushConstants;
12026 }
12027 if (!strcmp(name, "vkCmdBeginRenderPass"))
12028 {
12029 return (void*)entry_vkCmdBeginRenderPass;
12030 }
12031 if (!strcmp(name, "vkCmdNextSubpass"))
12032 {
12033 return (void*)entry_vkCmdNextSubpass;
12034 }
12035 if (!strcmp(name, "vkCmdEndRenderPass"))
12036 {
12037 return (void*)entry_vkCmdEndRenderPass;
12038 }
12039 if (!strcmp(name, "vkCmdExecuteCommands"))
12040 {
12041 return (void*)entry_vkCmdExecuteCommands;
12042 }
12043#endif
12044#ifdef VK_VERSION_1_1
12045 if (!strcmp(name, "vkEnumerateInstanceVersion"))
12046 {
12047 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
12048 }
12049 if (!strcmp(name, "vkBindBufferMemory2"))
12050 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012051 return (void*)dynCheck_entry_vkBindBufferMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012052 }
12053 if (!strcmp(name, "vkBindImageMemory2"))
12054 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012055 return (void*)dynCheck_entry_vkBindImageMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012056 }
12057 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
12058 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012059 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012060 }
12061 if (!strcmp(name, "vkCmdSetDeviceMask"))
12062 {
Yilong Li590870d2022-04-25 07:43:47 +000012063 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012064 }
12065 if (!strcmp(name, "vkCmdDispatchBase"))
12066 {
Yilong Li590870d2022-04-25 07:43:47 +000012067 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012068 }
12069 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
12070 {
12071 return nullptr;
12072 }
12073 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
12074 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012075 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012076 }
12077 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
12078 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012079 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012080 }
12081 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
12082 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012083 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012084 }
12085 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
12086 {
12087 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
12088 }
12089 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
12090 {
12091 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
12092 }
12093 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
12094 {
12095 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
12096 }
12097 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
12098 {
12099 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
12100 }
12101 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
12102 {
12103 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
12104 }
12105 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
12106 {
12107 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
12108 }
12109 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
12110 {
12111 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
12112 }
12113 if (!strcmp(name, "vkTrimCommandPool"))
12114 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012115 return (void*)dynCheck_entry_vkTrimCommandPool;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012116 }
12117 if (!strcmp(name, "vkGetDeviceQueue2"))
12118 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012119 return (void*)dynCheck_entry_vkGetDeviceQueue2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012120 }
12121 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
12122 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012123 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012124 }
12125 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
12126 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012127 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012128 }
12129 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
12130 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012131 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012132 }
12133 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
12134 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012135 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012136 }
12137 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
12138 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012139 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012140 }
12141 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
12142 {
12143 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
12144 }
12145 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
12146 {
12147 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
12148 }
12149 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
12150 {
12151 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
12152 }
12153 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
12154 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012155 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012156 }
12157#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012158#ifdef VK_VERSION_1_2
12159 if (!strcmp(name, "vkCmdDrawIndirectCount"))
12160 {
Yilong Li590870d2022-04-25 07:43:47 +000012161 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
12162 return hasExt ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080012163 }
12164 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
12165 {
Yilong Li590870d2022-04-25 07:43:47 +000012166 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
12167 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080012168 }
12169 if (!strcmp(name, "vkCreateRenderPass2"))
12170 {
12171 return (void*)dynCheck_entry_vkCreateRenderPass2;
12172 }
12173 if (!strcmp(name, "vkCmdBeginRenderPass2"))
12174 {
Yilong Li590870d2022-04-25 07:43:47 +000012175 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
12176 return hasExt ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080012177 }
12178 if (!strcmp(name, "vkCmdNextSubpass2"))
12179 {
Yilong Li590870d2022-04-25 07:43:47 +000012180 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
12181 return hasExt ? (void*)entry_vkCmdNextSubpass2 : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080012182 }
12183 if (!strcmp(name, "vkCmdEndRenderPass2"))
12184 {
Yilong Li590870d2022-04-25 07:43:47 +000012185 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
12186 return hasExt ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080012187 }
12188 if (!strcmp(name, "vkResetQueryPool"))
12189 {
12190 return (void*)dynCheck_entry_vkResetQueryPool;
12191 }
12192 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
12193 {
12194 return (void*)dynCheck_entry_vkGetSemaphoreCounterValue;
12195 }
12196 if (!strcmp(name, "vkWaitSemaphores"))
12197 {
12198 return (void*)dynCheck_entry_vkWaitSemaphores;
12199 }
12200 if (!strcmp(name, "vkSignalSemaphore"))
12201 {
12202 return (void*)dynCheck_entry_vkSignalSemaphore;
12203 }
12204 if (!strcmp(name, "vkGetBufferDeviceAddress"))
12205 {
12206 return (void*)dynCheck_entry_vkGetBufferDeviceAddress;
12207 }
12208 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
12209 {
12210 return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddress;
12211 }
12212 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
12213 {
12214 return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress;
12215 }
12216#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012217#ifdef VK_KHR_surface
12218 if (!strcmp(name, "vkDestroySurfaceKHR"))
12219 {
12220 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
12221 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
12222 }
12223 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
12224 {
12225 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
12226 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
12227 }
12228 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
12229 {
12230 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
12231 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
12232 }
12233 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
12234 {
12235 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
12236 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
12237 }
12238 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
12239 {
12240 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
12241 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
12242 }
12243#endif
12244#ifdef VK_KHR_swapchain
12245 if (!strcmp(name, "vkCreateSwapchainKHR"))
12246 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012247 return (void*)dynCheck_entry_vkCreateSwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012248 }
12249 if (!strcmp(name, "vkDestroySwapchainKHR"))
12250 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012251 return (void*)dynCheck_entry_vkDestroySwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012252 }
12253 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
12254 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012255 return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012256 }
12257 if (!strcmp(name, "vkAcquireNextImageKHR"))
12258 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012259 return (void*)dynCheck_entry_vkAcquireNextImageKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012260 }
12261 if (!strcmp(name, "vkQueuePresentKHR"))
12262 {
12263 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
12264 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
12265 }
12266 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
12267 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012268 return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012269 }
12270 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
12271 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012272 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012273 }
12274 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
12275 {
12276 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
12277 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
12278 }
12279 if (!strcmp(name, "vkAcquireNextImage2KHR"))
12280 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012281 return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012282 }
12283#endif
12284#ifdef VK_KHR_display
12285 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
12286 {
12287 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
12288 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
12289 }
12290 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
12291 {
12292 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
12293 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
12294 }
12295 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
12296 {
12297 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
12298 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
12299 }
12300 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
12301 {
12302 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
12303 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
12304 }
12305 if (!strcmp(name, "vkCreateDisplayModeKHR"))
12306 {
12307 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
12308 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
12309 }
12310 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
12311 {
12312 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
12313 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
12314 }
12315 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
12316 {
12317 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
12318 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
12319 }
12320#endif
12321#ifdef VK_KHR_display_swapchain
12322 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
12323 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012324 return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012325 }
12326#endif
12327#ifdef VK_KHR_xlib_surface
12328 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
12329 {
12330 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
12331 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
12332 }
12333 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
12334 {
12335 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
12336 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
12337 }
12338#endif
12339#ifdef VK_KHR_xcb_surface
12340 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
12341 {
12342 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
12343 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
12344 }
12345 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
12346 {
12347 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
12348 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
12349 }
12350#endif
12351#ifdef VK_KHR_wayland_surface
12352 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
12353 {
12354 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
12355 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
12356 }
12357 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
12358 {
12359 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
12360 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
12361 }
12362#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012363#ifdef VK_KHR_android_surface
12364 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
12365 {
12366 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
12367 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
12368 }
12369#endif
12370#ifdef VK_KHR_win32_surface
12371 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
12372 {
12373 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
12374 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
12375 }
12376 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
12377 {
12378 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
12379 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
12380 }
12381#endif
Yilong Li353409a2022-01-04 02:37:56 -080012382#ifdef VK_KHR_video_queue
12383 if (!strcmp(name, "vkGetPhysicalDeviceVideoCapabilitiesKHR"))
12384 {
12385 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_video_queue");
12386 return hasExt ? (void*)entry_vkGetPhysicalDeviceVideoCapabilitiesKHR : nullptr;
12387 }
12388 if (!strcmp(name, "vkGetPhysicalDeviceVideoFormatPropertiesKHR"))
12389 {
12390 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_video_queue");
12391 return hasExt ? (void*)entry_vkGetPhysicalDeviceVideoFormatPropertiesKHR : nullptr;
12392 }
12393 if (!strcmp(name, "vkCreateVideoSessionKHR"))
12394 {
12395 return (void*)dynCheck_entry_vkCreateVideoSessionKHR;
12396 }
12397 if (!strcmp(name, "vkDestroyVideoSessionKHR"))
12398 {
12399 return (void*)dynCheck_entry_vkDestroyVideoSessionKHR;
12400 }
12401 if (!strcmp(name, "vkGetVideoSessionMemoryRequirementsKHR"))
12402 {
12403 return (void*)dynCheck_entry_vkGetVideoSessionMemoryRequirementsKHR;
12404 }
12405 if (!strcmp(name, "vkBindVideoSessionMemoryKHR"))
12406 {
12407 return (void*)dynCheck_entry_vkBindVideoSessionMemoryKHR;
12408 }
12409 if (!strcmp(name, "vkCreateVideoSessionParametersKHR"))
12410 {
12411 return (void*)dynCheck_entry_vkCreateVideoSessionParametersKHR;
12412 }
12413 if (!strcmp(name, "vkUpdateVideoSessionParametersKHR"))
12414 {
12415 return (void*)dynCheck_entry_vkUpdateVideoSessionParametersKHR;
12416 }
12417 if (!strcmp(name, "vkDestroyVideoSessionParametersKHR"))
12418 {
12419 return (void*)dynCheck_entry_vkDestroyVideoSessionParametersKHR;
12420 }
12421 if (!strcmp(name, "vkCmdBeginVideoCodingKHR"))
12422 {
Yilong Li590870d2022-04-25 07:43:47 +000012423 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_video_queue");
12424 return hasExt ? (void*)entry_vkCmdBeginVideoCodingKHR : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080012425 }
12426 if (!strcmp(name, "vkCmdEndVideoCodingKHR"))
12427 {
Yilong Li590870d2022-04-25 07:43:47 +000012428 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_video_queue");
12429 return hasExt ? (void*)entry_vkCmdEndVideoCodingKHR : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080012430 }
12431 if (!strcmp(name, "vkCmdControlVideoCodingKHR"))
12432 {
Yilong Li590870d2022-04-25 07:43:47 +000012433 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_video_queue");
12434 return hasExt ? (void*)entry_vkCmdControlVideoCodingKHR : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080012435 }
12436#endif
12437#ifdef VK_KHR_video_decode_queue
12438 if (!strcmp(name, "vkCmdDecodeVideoKHR"))
12439 {
Yilong Li590870d2022-04-25 07:43:47 +000012440 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_video_decode_queue");
12441 return hasExt ? (void*)entry_vkCmdDecodeVideoKHR : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080012442 }
12443#endif
12444#ifdef VK_KHR_dynamic_rendering
12445 if (!strcmp(name, "vkCmdBeginRenderingKHR"))
12446 {
Yilong Li590870d2022-04-25 07:43:47 +000012447 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_dynamic_rendering");
12448 return hasExt ? (void*)entry_vkCmdBeginRenderingKHR : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080012449 }
12450 if (!strcmp(name, "vkCmdEndRenderingKHR"))
12451 {
Yilong Li590870d2022-04-25 07:43:47 +000012452 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_dynamic_rendering");
12453 return hasExt ? (void*)entry_vkCmdEndRenderingKHR : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080012454 }
12455#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012456#ifdef VK_KHR_get_physical_device_properties2
12457 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
12458 {
12459 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
12460 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
12461 }
12462 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
12463 {
12464 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
12465 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
12466 }
12467 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
12468 {
12469 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
12470 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
12471 }
12472 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
12473 {
12474 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
12475 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
12476 }
12477 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
12478 {
12479 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
12480 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
12481 }
12482 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
12483 {
12484 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
12485 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
12486 }
12487 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
12488 {
12489 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
12490 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
12491 }
12492#endif
12493#ifdef VK_KHR_device_group
12494 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
12495 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012496 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012497 }
12498 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
12499 {
Yilong Li590870d2022-04-25 07:43:47 +000012500 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
12501 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012502 }
12503 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
12504 {
Yilong Li590870d2022-04-25 07:43:47 +000012505 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
12506 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012507 }
12508#endif
12509#ifdef VK_KHR_maintenance1
12510 if (!strcmp(name, "vkTrimCommandPoolKHR"))
12511 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012512 return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012513 }
12514#endif
12515#ifdef VK_KHR_device_group_creation
12516 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
12517 {
12518 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
12519 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
12520 }
12521#endif
12522#ifdef VK_KHR_external_memory_capabilities
12523 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
12524 {
12525 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
12526 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
12527 }
12528#endif
12529#ifdef VK_KHR_external_memory_win32
12530 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
12531 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012532 return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012533 }
12534 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
12535 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012536 return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012537 }
12538#endif
12539#ifdef VK_KHR_external_memory_fd
12540 if (!strcmp(name, "vkGetMemoryFdKHR"))
12541 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012542 return (void*)dynCheck_entry_vkGetMemoryFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012543 }
12544 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
12545 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012546 return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012547 }
12548#endif
12549#ifdef VK_KHR_external_semaphore_capabilities
12550 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
12551 {
12552 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
12553 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
12554 }
12555#endif
12556#ifdef VK_KHR_external_semaphore_win32
12557 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
12558 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012559 return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012560 }
12561 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
12562 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012563 return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012564 }
12565#endif
12566#ifdef VK_KHR_external_semaphore_fd
12567 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
12568 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012569 return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012570 }
12571 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
12572 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012573 return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012574 }
12575#endif
12576#ifdef VK_KHR_push_descriptor
12577 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
12578 {
Yilong Li590870d2022-04-25 07:43:47 +000012579 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
12580 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012581 }
12582 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
12583 {
Yilong Li590870d2022-04-25 07:43:47 +000012584 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
12585 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012586 }
12587#endif
12588#ifdef VK_KHR_descriptor_update_template
12589 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
12590 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012591 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012592 }
12593 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
12594 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012595 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012596 }
12597 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
12598 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012599 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012600 }
12601#endif
12602#ifdef VK_KHR_create_renderpass2
12603 if (!strcmp(name, "vkCreateRenderPass2KHR"))
12604 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012605 return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012606 }
12607 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
12608 {
Yilong Li590870d2022-04-25 07:43:47 +000012609 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
12610 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012611 }
12612 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
12613 {
Yilong Li590870d2022-04-25 07:43:47 +000012614 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
12615 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012616 }
12617 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
12618 {
Yilong Li590870d2022-04-25 07:43:47 +000012619 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
12620 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012621 }
12622#endif
12623#ifdef VK_KHR_shared_presentable_image
12624 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
12625 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012626 return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012627 }
12628#endif
12629#ifdef VK_KHR_external_fence_capabilities
12630 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
12631 {
12632 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
12633 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
12634 }
12635#endif
12636#ifdef VK_KHR_external_fence_win32
12637 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
12638 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012639 return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012640 }
12641 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
12642 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012643 return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012644 }
12645#endif
12646#ifdef VK_KHR_external_fence_fd
12647 if (!strcmp(name, "vkImportFenceFdKHR"))
12648 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012649 return (void*)dynCheck_entry_vkImportFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012650 }
12651 if (!strcmp(name, "vkGetFenceFdKHR"))
12652 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012653 return (void*)dynCheck_entry_vkGetFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012654 }
12655#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012656#ifdef VK_KHR_performance_query
12657 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
12658 {
12659 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
12660 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
12661 }
12662 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
12663 {
12664 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
12665 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
12666 }
12667 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
12668 {
12669 return (void*)dynCheck_entry_vkAcquireProfilingLockKHR;
12670 }
12671 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
12672 {
12673 return (void*)dynCheck_entry_vkReleaseProfilingLockKHR;
12674 }
12675#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012676#ifdef VK_KHR_get_surface_capabilities2
12677 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
12678 {
12679 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
12680 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
12681 }
12682 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
12683 {
12684 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
12685 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
12686 }
12687#endif
12688#ifdef VK_KHR_get_display_properties2
12689 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
12690 {
12691 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
12692 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
12693 }
12694 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
12695 {
12696 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
12697 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
12698 }
12699 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
12700 {
12701 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
12702 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
12703 }
12704 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
12705 {
12706 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
12707 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
12708 }
12709#endif
12710#ifdef VK_KHR_get_memory_requirements2
12711 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
12712 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012713 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012714 }
12715 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
12716 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012717 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012718 }
12719 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
12720 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012721 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012722 }
12723#endif
12724#ifdef VK_KHR_sampler_ycbcr_conversion
12725 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
12726 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012727 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012728 }
12729 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
12730 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012731 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012732 }
12733#endif
12734#ifdef VK_KHR_bind_memory2
12735 if (!strcmp(name, "vkBindBufferMemory2KHR"))
12736 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012737 return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012738 }
12739 if (!strcmp(name, "vkBindImageMemory2KHR"))
12740 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012741 return (void*)dynCheck_entry_vkBindImageMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012742 }
12743#endif
12744#ifdef VK_KHR_maintenance3
12745 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
12746 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012747 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012748 }
12749#endif
12750#ifdef VK_KHR_draw_indirect_count
12751 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
12752 {
Yilong Li590870d2022-04-25 07:43:47 +000012753 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
12754 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012755 }
12756 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
12757 {
Yilong Li590870d2022-04-25 07:43:47 +000012758 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
12759 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012760 }
12761#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012762#ifdef VK_KHR_timeline_semaphore
12763 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
12764 {
12765 return (void*)dynCheck_entry_vkGetSemaphoreCounterValueKHR;
12766 }
12767 if (!strcmp(name, "vkWaitSemaphoresKHR"))
12768 {
12769 return (void*)dynCheck_entry_vkWaitSemaphoresKHR;
12770 }
12771 if (!strcmp(name, "vkSignalSemaphoreKHR"))
12772 {
12773 return (void*)dynCheck_entry_vkSignalSemaphoreKHR;
12774 }
12775#endif
12776#ifdef VK_KHR_fragment_shading_rate
12777 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
12778 {
12779 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_fragment_shading_rate");
12780 return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
12781 }
12782 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
12783 {
Yilong Li590870d2022-04-25 07:43:47 +000012784 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_fragment_shading_rate");
12785 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateKHR : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080012786 }
12787#endif
Yilong Li353409a2022-01-04 02:37:56 -080012788#ifdef VK_KHR_present_wait
12789 if (!strcmp(name, "vkWaitForPresentKHR"))
12790 {
12791 return (void*)dynCheck_entry_vkWaitForPresentKHR;
12792 }
12793#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012794#ifdef VK_KHR_buffer_device_address
12795 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
12796 {
12797 return (void*)dynCheck_entry_vkGetBufferDeviceAddressKHR;
12798 }
12799 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
12800 {
12801 return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR;
12802 }
12803 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
12804 {
12805 return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR;
12806 }
12807#endif
12808#ifdef VK_KHR_deferred_host_operations
12809 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
12810 {
12811 return (void*)dynCheck_entry_vkCreateDeferredOperationKHR;
12812 }
12813 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
12814 {
12815 return (void*)dynCheck_entry_vkDestroyDeferredOperationKHR;
12816 }
12817 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
12818 {
12819 return (void*)dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR;
12820 }
12821 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
12822 {
12823 return (void*)dynCheck_entry_vkGetDeferredOperationResultKHR;
12824 }
12825 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
12826 {
12827 return (void*)dynCheck_entry_vkDeferredOperationJoinKHR;
12828 }
12829#endif
12830#ifdef VK_KHR_pipeline_executable_properties
12831 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
12832 {
12833 return (void*)dynCheck_entry_vkGetPipelineExecutablePropertiesKHR;
12834 }
12835 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
12836 {
12837 return (void*)dynCheck_entry_vkGetPipelineExecutableStatisticsKHR;
12838 }
12839 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
12840 {
12841 return (void*)dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR;
12842 }
12843#endif
Yilong Li353409a2022-01-04 02:37:56 -080012844#ifdef VK_KHR_video_encode_queue
12845 if (!strcmp(name, "vkCmdEncodeVideoKHR"))
12846 {
Yilong Li590870d2022-04-25 07:43:47 +000012847 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_video_encode_queue");
12848 return hasExt ? (void*)entry_vkCmdEncodeVideoKHR : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080012849 }
12850#endif
12851#ifdef VK_KHR_synchronization2
12852 if (!strcmp(name, "vkCmdSetEvent2KHR"))
12853 {
Yilong Li590870d2022-04-25 07:43:47 +000012854 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_synchronization2");
12855 return hasExt ? (void*)entry_vkCmdSetEvent2KHR : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080012856 }
12857 if (!strcmp(name, "vkCmdResetEvent2KHR"))
12858 {
Yilong Li590870d2022-04-25 07:43:47 +000012859 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_synchronization2");
12860 return hasExt ? (void*)entry_vkCmdResetEvent2KHR : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080012861 }
12862 if (!strcmp(name, "vkCmdWaitEvents2KHR"))
12863 {
Yilong Li590870d2022-04-25 07:43:47 +000012864 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_synchronization2");
12865 return hasExt ? (void*)entry_vkCmdWaitEvents2KHR : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080012866 }
12867 if (!strcmp(name, "vkCmdPipelineBarrier2KHR"))
12868 {
Yilong Li590870d2022-04-25 07:43:47 +000012869 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_synchronization2");
12870 return hasExt ? (void*)entry_vkCmdPipelineBarrier2KHR : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080012871 }
12872 if (!strcmp(name, "vkCmdWriteTimestamp2KHR"))
12873 {
Yilong Li590870d2022-04-25 07:43:47 +000012874 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_synchronization2");
12875 return hasExt ? (void*)entry_vkCmdWriteTimestamp2KHR : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080012876 }
12877 if (!strcmp(name, "vkQueueSubmit2KHR"))
12878 {
12879 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_synchronization2");
12880 return hasExt ? (void*)entry_vkQueueSubmit2KHR : nullptr;
12881 }
12882 if (!strcmp(name, "vkCmdWriteBufferMarker2AMD"))
12883 {
Yilong Li590870d2022-04-25 07:43:47 +000012884 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_synchronization2");
12885 return hasExt ? (void*)entry_vkCmdWriteBufferMarker2AMD : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080012886 }
12887 if (!strcmp(name, "vkGetQueueCheckpointData2NV"))
12888 {
12889 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_synchronization2");
12890 return hasExt ? (void*)entry_vkGetQueueCheckpointData2NV : nullptr;
12891 }
12892#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012893#ifdef VK_KHR_copy_commands2
12894 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
12895 {
Yilong Li590870d2022-04-25 07:43:47 +000012896 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
12897 return hasExt ? (void*)entry_vkCmdCopyBuffer2KHR : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080012898 }
12899 if (!strcmp(name, "vkCmdCopyImage2KHR"))
12900 {
Yilong Li590870d2022-04-25 07:43:47 +000012901 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
12902 return hasExt ? (void*)entry_vkCmdCopyImage2KHR : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080012903 }
12904 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
12905 {
Yilong Li590870d2022-04-25 07:43:47 +000012906 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
12907 return hasExt ? (void*)entry_vkCmdCopyBufferToImage2KHR : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080012908 }
12909 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
12910 {
Yilong Li590870d2022-04-25 07:43:47 +000012911 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
12912 return hasExt ? (void*)entry_vkCmdCopyImageToBuffer2KHR : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080012913 }
12914 if (!strcmp(name, "vkCmdBlitImage2KHR"))
12915 {
Yilong Li590870d2022-04-25 07:43:47 +000012916 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
12917 return hasExt ? (void*)entry_vkCmdBlitImage2KHR : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080012918 }
12919 if (!strcmp(name, "vkCmdResolveImage2KHR"))
12920 {
Yilong Li590870d2022-04-25 07:43:47 +000012921 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
12922 return hasExt ? (void*)entry_vkCmdResolveImage2KHR : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080012923 }
12924#endif
Yilong Li353409a2022-01-04 02:37:56 -080012925#ifdef VK_KHR_maintenance4
12926 if (!strcmp(name, "vkGetDeviceBufferMemoryRequirementsKHR"))
12927 {
12928 return (void*)dynCheck_entry_vkGetDeviceBufferMemoryRequirementsKHR;
12929 }
12930 if (!strcmp(name, "vkGetDeviceImageMemoryRequirementsKHR"))
12931 {
12932 return (void*)dynCheck_entry_vkGetDeviceImageMemoryRequirementsKHR;
12933 }
12934 if (!strcmp(name, "vkGetDeviceImageSparseMemoryRequirementsKHR"))
12935 {
12936 return (void*)dynCheck_entry_vkGetDeviceImageSparseMemoryRequirementsKHR;
12937 }
12938#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012939#ifdef VK_ANDROID_native_buffer
12940 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
12941 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012942 return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012943 }
12944 if (!strcmp(name, "vkAcquireImageANDROID"))
12945 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012946 return (void*)dynCheck_entry_vkAcquireImageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012947 }
12948 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
12949 {
12950 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
12951 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
12952 }
12953#endif
12954#ifdef VK_EXT_debug_report
12955 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
12956 {
12957 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
12958 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
12959 }
12960 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
12961 {
12962 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
12963 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
12964 }
12965 if (!strcmp(name, "vkDebugReportMessageEXT"))
12966 {
12967 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
12968 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
12969 }
12970#endif
12971#ifdef VK_EXT_debug_marker
12972 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
12973 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012974 return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012975 }
12976 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
12977 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012978 return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012979 }
12980 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
12981 {
Yilong Li590870d2022-04-25 07:43:47 +000012982 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
12983 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012984 }
12985 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
12986 {
Yilong Li590870d2022-04-25 07:43:47 +000012987 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
12988 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012989 }
12990 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
12991 {
Yilong Li590870d2022-04-25 07:43:47 +000012992 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
12993 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012994 }
12995#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012996#ifdef VK_EXT_transform_feedback
12997 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
12998 {
Yilong Li590870d2022-04-25 07:43:47 +000012999 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
13000 return hasExt ? (void*)entry_vkCmdBindTransformFeedbackBuffersEXT : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013001 }
13002 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
13003 {
Yilong Li590870d2022-04-25 07:43:47 +000013004 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
13005 return hasExt ? (void*)entry_vkCmdBeginTransformFeedbackEXT : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013006 }
13007 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
13008 {
Yilong Li590870d2022-04-25 07:43:47 +000013009 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
13010 return hasExt ? (void*)entry_vkCmdEndTransformFeedbackEXT : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013011 }
13012 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
13013 {
Yilong Li590870d2022-04-25 07:43:47 +000013014 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
13015 return hasExt ? (void*)entry_vkCmdBeginQueryIndexedEXT : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013016 }
13017 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
13018 {
Yilong Li590870d2022-04-25 07:43:47 +000013019 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
13020 return hasExt ? (void*)entry_vkCmdEndQueryIndexedEXT : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013021 }
13022 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
13023 {
Yilong Li590870d2022-04-25 07:43:47 +000013024 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
13025 return hasExt ? (void*)entry_vkCmdDrawIndirectByteCountEXT : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013026 }
13027#endif
Yilong Li353409a2022-01-04 02:37:56 -080013028#ifdef VK_NVX_binary_import
13029 if (!strcmp(name, "vkCreateCuModuleNVX"))
13030 {
13031 return (void*)dynCheck_entry_vkCreateCuModuleNVX;
13032 }
13033 if (!strcmp(name, "vkCreateCuFunctionNVX"))
13034 {
13035 return (void*)dynCheck_entry_vkCreateCuFunctionNVX;
13036 }
13037 if (!strcmp(name, "vkDestroyCuModuleNVX"))
13038 {
13039 return (void*)dynCheck_entry_vkDestroyCuModuleNVX;
13040 }
13041 if (!strcmp(name, "vkDestroyCuFunctionNVX"))
13042 {
13043 return (void*)dynCheck_entry_vkDestroyCuFunctionNVX;
13044 }
13045 if (!strcmp(name, "vkCmdCuLaunchKernelNVX"))
13046 {
Yilong Li590870d2022-04-25 07:43:47 +000013047 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_binary_import");
13048 return hasExt ? (void*)entry_vkCmdCuLaunchKernelNVX : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080013049 }
13050#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013051#ifdef VK_NVX_image_view_handle
13052 if (!strcmp(name, "vkGetImageViewHandleNVX"))
13053 {
13054 return (void*)dynCheck_entry_vkGetImageViewHandleNVX;
13055 }
13056 if (!strcmp(name, "vkGetImageViewAddressNVX"))
13057 {
13058 return (void*)dynCheck_entry_vkGetImageViewAddressNVX;
13059 }
13060#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013061#ifdef VK_AMD_draw_indirect_count
13062 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
13063 {
Yilong Li590870d2022-04-25 07:43:47 +000013064 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
13065 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013066 }
13067 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
13068 {
Yilong Li590870d2022-04-25 07:43:47 +000013069 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
13070 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013071 }
13072#endif
13073#ifdef VK_AMD_shader_info
13074 if (!strcmp(name, "vkGetShaderInfoAMD"))
13075 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013076 return (void*)dynCheck_entry_vkGetShaderInfoAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013077 }
13078#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013079#ifdef VK_GGP_stream_descriptor_surface
13080 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
13081 {
13082 bool hasExt = resources->hasInstanceExtension(instance, "VK_GGP_stream_descriptor_surface");
13083 return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
13084 }
13085#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013086#ifdef VK_NV_external_memory_capabilities
13087 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
13088 {
13089 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
13090 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
13091 }
13092#endif
13093#ifdef VK_NV_external_memory_win32
13094 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
13095 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013096 return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013097 }
13098#endif
13099#ifdef VK_NN_vi_surface
13100 if (!strcmp(name, "vkCreateViSurfaceNN"))
13101 {
13102 bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
13103 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
13104 }
13105#endif
13106#ifdef VK_EXT_conditional_rendering
13107 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
13108 {
Yilong Li590870d2022-04-25 07:43:47 +000013109 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
13110 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013111 }
13112 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
13113 {
Yilong Li590870d2022-04-25 07:43:47 +000013114 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
13115 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013116 }
13117#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013118#ifdef VK_NV_clip_space_w_scaling
13119 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
13120 {
Yilong Li590870d2022-04-25 07:43:47 +000013121 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling");
13122 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013123 }
13124#endif
13125#ifdef VK_EXT_direct_mode_display
13126 if (!strcmp(name, "vkReleaseDisplayEXT"))
13127 {
13128 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
13129 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
13130 }
13131#endif
13132#ifdef VK_EXT_acquire_xlib_display
13133 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
13134 {
13135 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
13136 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
13137 }
13138 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
13139 {
13140 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
13141 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
13142 }
13143#endif
13144#ifdef VK_EXT_display_surface_counter
13145 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
13146 {
13147 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
13148 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
13149 }
13150#endif
13151#ifdef VK_EXT_display_control
13152 if (!strcmp(name, "vkDisplayPowerControlEXT"))
13153 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013154 return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013155 }
13156 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
13157 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013158 return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013159 }
13160 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
13161 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013162 return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013163 }
13164 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
13165 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013166 return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013167 }
13168#endif
13169#ifdef VK_GOOGLE_display_timing
13170 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
13171 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013172 return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013173 }
13174 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
13175 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013176 return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013177 }
13178#endif
13179#ifdef VK_EXT_discard_rectangles
13180 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
13181 {
Yilong Li590870d2022-04-25 07:43:47 +000013182 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles");
13183 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013184 }
13185#endif
13186#ifdef VK_EXT_hdr_metadata
13187 if (!strcmp(name, "vkSetHdrMetadataEXT"))
13188 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013189 return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013190 }
13191#endif
13192#ifdef VK_MVK_ios_surface
13193 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
13194 {
13195 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
13196 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
13197 }
13198#endif
13199#ifdef VK_MVK_macos_surface
13200 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
13201 {
13202 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
13203 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
13204 }
13205#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013206#ifdef VK_MVK_moltenvk
13207 if (!strcmp(name, "vkGetMTLDeviceMVK"))
13208 {
13209 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
13210 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
13211 }
13212 if (!strcmp(name, "vkSetMTLTextureMVK"))
13213 {
13214 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
13215 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
13216 }
13217 if (!strcmp(name, "vkGetMTLTextureMVK"))
13218 {
13219 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
13220 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
13221 }
13222 if (!strcmp(name, "vkGetMTLBufferMVK"))
13223 {
13224 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
13225 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
13226 }
13227 if (!strcmp(name, "vkUseIOSurfaceMVK"))
13228 {
13229 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
13230 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
13231 }
13232 if (!strcmp(name, "vkGetIOSurfaceMVK"))
13233 {
13234 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
13235 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
13236 }
13237#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013238#ifdef VK_EXT_debug_utils
13239 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
13240 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013241 return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013242 }
13243 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
13244 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013245 return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013246 }
13247 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
13248 {
13249 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
13250 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
13251 }
13252 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
13253 {
13254 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
13255 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
13256 }
13257 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
13258 {
13259 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
13260 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
13261 }
13262 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
13263 {
Yilong Li590870d2022-04-25 07:43:47 +000013264 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
13265 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013266 }
13267 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
13268 {
Yilong Li590870d2022-04-25 07:43:47 +000013269 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
13270 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013271 }
13272 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
13273 {
Yilong Li590870d2022-04-25 07:43:47 +000013274 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
13275 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013276 }
13277 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
13278 {
13279 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
13280 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
13281 }
13282 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
13283 {
13284 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
13285 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
13286 }
13287 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
13288 {
13289 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
13290 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
13291 }
13292#endif
13293#ifdef VK_ANDROID_external_memory_android_hardware_buffer
13294 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
13295 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013296 return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013297 }
13298 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
13299 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013300 return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013301 }
13302#endif
13303#ifdef VK_EXT_sample_locations
13304 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
13305 {
Yilong Li590870d2022-04-25 07:43:47 +000013306 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
13307 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013308 }
13309 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
13310 {
13311 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
13312 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
13313 }
13314#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013315#ifdef VK_EXT_image_drm_format_modifier
13316 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
13317 {
13318 return (void*)dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT;
13319 }
13320#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013321#ifdef VK_EXT_validation_cache
13322 if (!strcmp(name, "vkCreateValidationCacheEXT"))
13323 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013324 return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013325 }
13326 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
13327 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013328 return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013329 }
13330 if (!strcmp(name, "vkMergeValidationCachesEXT"))
13331 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013332 return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013333 }
13334 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
13335 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013336 return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013337 }
13338#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013339#ifdef VK_NV_shading_rate_image
13340 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
13341 {
Yilong Li590870d2022-04-25 07:43:47 +000013342 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
13343 return hasExt ? (void*)entry_vkCmdBindShadingRateImageNV : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013344 }
13345 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
13346 {
Yilong Li590870d2022-04-25 07:43:47 +000013347 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
13348 return hasExt ? (void*)entry_vkCmdSetViewportShadingRatePaletteNV : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013349 }
13350 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
13351 {
Yilong Li590870d2022-04-25 07:43:47 +000013352 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
13353 return hasExt ? (void*)entry_vkCmdSetCoarseSampleOrderNV : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013354 }
13355#endif
13356#ifdef VK_NV_ray_tracing
13357 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
13358 {
13359 return (void*)dynCheck_entry_vkCreateAccelerationStructureNV;
13360 }
13361 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
13362 {
13363 return (void*)dynCheck_entry_vkDestroyAccelerationStructureNV;
13364 }
13365 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
13366 {
13367 return (void*)dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV;
13368 }
13369 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
13370 {
13371 return (void*)dynCheck_entry_vkBindAccelerationStructureMemoryNV;
13372 }
13373 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
13374 {
Yilong Li590870d2022-04-25 07:43:47 +000013375 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
13376 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructureNV : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013377 }
13378 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
13379 {
Yilong Li590870d2022-04-25 07:43:47 +000013380 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
13381 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureNV : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013382 }
13383 if (!strcmp(name, "vkCmdTraceRaysNV"))
13384 {
Yilong Li590870d2022-04-25 07:43:47 +000013385 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
13386 return hasExt ? (void*)entry_vkCmdTraceRaysNV : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013387 }
13388 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
13389 {
13390 return (void*)dynCheck_entry_vkCreateRayTracingPipelinesNV;
13391 }
13392 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
13393 {
13394 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR;
13395 }
13396 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
13397 {
13398 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV;
13399 }
13400 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
13401 {
13402 return (void*)dynCheck_entry_vkGetAccelerationStructureHandleNV;
13403 }
13404 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
13405 {
Yilong Li590870d2022-04-25 07:43:47 +000013406 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
13407 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesNV : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013408 }
13409 if (!strcmp(name, "vkCompileDeferredNV"))
13410 {
13411 return (void*)dynCheck_entry_vkCompileDeferredNV;
13412 }
13413#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013414#ifdef VK_EXT_external_memory_host
13415 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
13416 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013417 return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013418 }
13419#endif
13420#ifdef VK_AMD_buffer_marker
13421 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
13422 {
Yilong Li590870d2022-04-25 07:43:47 +000013423 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker");
13424 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013425 }
13426#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013427#ifdef VK_EXT_calibrated_timestamps
13428 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
13429 {
13430 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_calibrated_timestamps");
13431 return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
13432 }
13433 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
13434 {
13435 return (void*)dynCheck_entry_vkGetCalibratedTimestampsEXT;
13436 }
13437#endif
13438#ifdef VK_NV_mesh_shader
13439 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
13440 {
Yilong Li590870d2022-04-25 07:43:47 +000013441 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
13442 return hasExt ? (void*)entry_vkCmdDrawMeshTasksNV : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013443 }
13444 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
13445 {
Yilong Li590870d2022-04-25 07:43:47 +000013446 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
13447 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectNV : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013448 }
13449 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
13450 {
Yilong Li590870d2022-04-25 07:43:47 +000013451 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
13452 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountNV : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013453 }
13454#endif
13455#ifdef VK_NV_scissor_exclusive
13456 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
13457 {
Yilong Li590870d2022-04-25 07:43:47 +000013458 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_scissor_exclusive");
13459 return hasExt ? (void*)entry_vkCmdSetExclusiveScissorNV : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013460 }
13461#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013462#ifdef VK_NV_device_diagnostic_checkpoints
13463 if (!strcmp(name, "vkCmdSetCheckpointNV"))
13464 {
Yilong Li590870d2022-04-25 07:43:47 +000013465 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
13466 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013467 }
13468 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
13469 {
13470 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
13471 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
13472 }
13473#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013474#ifdef VK_INTEL_performance_query
13475 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013476 {
Yilong Lia8d45f12021-02-07 02:30:21 -080013477 return (void*)dynCheck_entry_vkInitializePerformanceApiINTEL;
13478 }
13479 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
13480 {
13481 return (void*)dynCheck_entry_vkUninitializePerformanceApiINTEL;
13482 }
13483 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
13484 {
Yilong Li590870d2022-04-25 07:43:47 +000013485 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
13486 return hasExt ? (void*)entry_vkCmdSetPerformanceMarkerINTEL : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013487 }
13488 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
13489 {
Yilong Li590870d2022-04-25 07:43:47 +000013490 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
13491 return hasExt ? (void*)entry_vkCmdSetPerformanceStreamMarkerINTEL : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013492 }
13493 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
13494 {
Yilong Li590870d2022-04-25 07:43:47 +000013495 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
13496 return hasExt ? (void*)entry_vkCmdSetPerformanceOverrideINTEL : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013497 }
13498 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
13499 {
13500 return (void*)dynCheck_entry_vkAcquirePerformanceConfigurationINTEL;
13501 }
13502 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
13503 {
13504 return (void*)dynCheck_entry_vkReleasePerformanceConfigurationINTEL;
13505 }
13506 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
13507 {
13508 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
13509 return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
13510 }
13511 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
13512 {
13513 return (void*)dynCheck_entry_vkGetPerformanceParameterINTEL;
13514 }
13515#endif
13516#ifdef VK_AMD_display_native_hdr
13517 if (!strcmp(name, "vkSetLocalDimmingAMD"))
13518 {
13519 return (void*)dynCheck_entry_vkSetLocalDimmingAMD;
13520 }
13521#endif
13522#ifdef VK_FUCHSIA_imagepipe_surface
13523 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
13524 {
13525 bool hasExt = resources->hasInstanceExtension(instance, "VK_FUCHSIA_imagepipe_surface");
13526 return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
13527 }
13528#endif
13529#ifdef VK_EXT_metal_surface
13530 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
13531 {
13532 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_metal_surface");
13533 return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013534 }
13535#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013536#ifdef VK_EXT_buffer_device_address
13537 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
13538 {
13539 return (void*)dynCheck_entry_vkGetBufferDeviceAddressEXT;
13540 }
13541#endif
13542#ifdef VK_EXT_tooling_info
13543 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
13544 {
13545 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_tooling_info");
13546 return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
13547 }
13548#endif
13549#ifdef VK_NV_cooperative_matrix
13550 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
13551 {
13552 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_cooperative_matrix");
13553 return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
13554 }
13555#endif
13556#ifdef VK_NV_coverage_reduction_mode
13557 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
13558 {
13559 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_coverage_reduction_mode");
13560 return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
13561 }
13562#endif
13563#ifdef VK_EXT_full_screen_exclusive
13564 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
13565 {
13566 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_full_screen_exclusive");
13567 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
13568 }
13569 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
13570 {
13571 return (void*)dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT;
13572 }
13573 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
13574 {
13575 return (void*)dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT;
13576 }
13577 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
13578 {
13579 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT;
13580 }
13581#endif
13582#ifdef VK_EXT_headless_surface
13583 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
13584 {
13585 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_headless_surface");
13586 return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
13587 }
13588#endif
13589#ifdef VK_EXT_line_rasterization
13590 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
13591 {
Yilong Li590870d2022-04-25 07:43:47 +000013592 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_line_rasterization");
13593 return hasExt ? (void*)entry_vkCmdSetLineStippleEXT : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013594 }
13595#endif
13596#ifdef VK_EXT_host_query_reset
13597 if (!strcmp(name, "vkResetQueryPoolEXT"))
13598 {
13599 return (void*)dynCheck_entry_vkResetQueryPoolEXT;
13600 }
13601#endif
13602#ifdef VK_EXT_extended_dynamic_state
13603 if (!strcmp(name, "vkCmdSetCullModeEXT"))
13604 {
Yilong Li590870d2022-04-25 07:43:47 +000013605 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13606 return hasExt ? (void*)entry_vkCmdSetCullModeEXT : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013607 }
13608 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
13609 {
Yilong Li590870d2022-04-25 07:43:47 +000013610 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13611 return hasExt ? (void*)entry_vkCmdSetFrontFaceEXT : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013612 }
13613 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
13614 {
Yilong Li590870d2022-04-25 07:43:47 +000013615 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13616 return hasExt ? (void*)entry_vkCmdSetPrimitiveTopologyEXT : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013617 }
13618 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
13619 {
Yilong Li590870d2022-04-25 07:43:47 +000013620 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13621 return hasExt ? (void*)entry_vkCmdSetViewportWithCountEXT : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013622 }
13623 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
13624 {
Yilong Li590870d2022-04-25 07:43:47 +000013625 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13626 return hasExt ? (void*)entry_vkCmdSetScissorWithCountEXT : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013627 }
13628 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
13629 {
Yilong Li590870d2022-04-25 07:43:47 +000013630 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13631 return hasExt ? (void*)entry_vkCmdBindVertexBuffers2EXT : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013632 }
13633 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
13634 {
Yilong Li590870d2022-04-25 07:43:47 +000013635 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13636 return hasExt ? (void*)entry_vkCmdSetDepthTestEnableEXT : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013637 }
13638 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
13639 {
Yilong Li590870d2022-04-25 07:43:47 +000013640 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13641 return hasExt ? (void*)entry_vkCmdSetDepthWriteEnableEXT : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013642 }
13643 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
13644 {
Yilong Li590870d2022-04-25 07:43:47 +000013645 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13646 return hasExt ? (void*)entry_vkCmdSetDepthCompareOpEXT : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013647 }
13648 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
13649 {
Yilong Li590870d2022-04-25 07:43:47 +000013650 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13651 return hasExt ? (void*)entry_vkCmdSetDepthBoundsTestEnableEXT : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013652 }
13653 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
13654 {
Yilong Li590870d2022-04-25 07:43:47 +000013655 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13656 return hasExt ? (void*)entry_vkCmdSetStencilTestEnableEXT : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013657 }
13658 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
13659 {
Yilong Li590870d2022-04-25 07:43:47 +000013660 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
13661 return hasExt ? (void*)entry_vkCmdSetStencilOpEXT : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013662 }
13663#endif
13664#ifdef VK_NV_device_generated_commands
13665 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
13666 {
13667 return (void*)dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV;
13668 }
13669 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
13670 {
Yilong Li590870d2022-04-25 07:43:47 +000013671 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
13672 return hasExt ? (void*)entry_vkCmdPreprocessGeneratedCommandsNV : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013673 }
13674 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
13675 {
Yilong Li590870d2022-04-25 07:43:47 +000013676 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
13677 return hasExt ? (void*)entry_vkCmdExecuteGeneratedCommandsNV : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013678 }
13679 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
13680 {
Yilong Li590870d2022-04-25 07:43:47 +000013681 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
13682 return hasExt ? (void*)entry_vkCmdBindPipelineShaderGroupNV : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013683 }
13684 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
13685 {
13686 return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNV;
13687 }
13688 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
13689 {
13690 return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNV;
13691 }
13692#endif
Yilong Li353409a2022-01-04 02:37:56 -080013693#ifdef VK_EXT_acquire_drm_display
13694 if (!strcmp(name, "vkAcquireDrmDisplayEXT"))
13695 {
13696 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_drm_display");
13697 return hasExt ? (void*)entry_vkAcquireDrmDisplayEXT : nullptr;
13698 }
13699 if (!strcmp(name, "vkGetDrmDisplayEXT"))
13700 {
13701 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_drm_display");
13702 return hasExt ? (void*)entry_vkGetDrmDisplayEXT : nullptr;
13703 }
13704#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013705#ifdef VK_EXT_private_data
13706 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
13707 {
13708 return (void*)dynCheck_entry_vkCreatePrivateDataSlotEXT;
13709 }
13710 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
13711 {
13712 return (void*)dynCheck_entry_vkDestroyPrivateDataSlotEXT;
13713 }
13714 if (!strcmp(name, "vkSetPrivateDataEXT"))
13715 {
13716 return (void*)dynCheck_entry_vkSetPrivateDataEXT;
13717 }
13718 if (!strcmp(name, "vkGetPrivateDataEXT"))
13719 {
13720 return (void*)dynCheck_entry_vkGetPrivateDataEXT;
13721 }
13722#endif
13723#ifdef VK_NV_fragment_shading_rate_enums
13724 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
13725 {
Yilong Li590870d2022-04-25 07:43:47 +000013726 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_fragment_shading_rate_enums");
13727 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateEnumNV : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080013728 }
13729#endif
Yilong Li353409a2022-01-04 02:37:56 -080013730#ifdef VK_NV_acquire_winrt_display
13731 if (!strcmp(name, "vkAcquireWinrtDisplayNV"))
13732 {
13733 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_acquire_winrt_display");
13734 return hasExt ? (void*)entry_vkAcquireWinrtDisplayNV : nullptr;
13735 }
13736 if (!strcmp(name, "vkGetWinrtDisplayNV"))
13737 {
13738 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_acquire_winrt_display");
13739 return hasExt ? (void*)entry_vkGetWinrtDisplayNV : nullptr;
13740 }
13741#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013742#ifdef VK_EXT_directfb_surface
13743 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
13744 {
13745 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
13746 return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
13747 }
13748 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
13749 {
13750 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
13751 return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
13752 }
13753#endif
Yilong Li353409a2022-01-04 02:37:56 -080013754#ifdef VK_EXT_vertex_input_dynamic_state
13755 if (!strcmp(name, "vkCmdSetVertexInputEXT"))
13756 {
Yilong Li590870d2022-04-25 07:43:47 +000013757 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_vertex_input_dynamic_state");
13758 return hasExt ? (void*)entry_vkCmdSetVertexInputEXT : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080013759 }
13760#endif
13761#ifdef VK_FUCHSIA_external_memory
13762 if (!strcmp(name, "vkGetMemoryZirconHandleFUCHSIA"))
13763 {
13764 return (void*)dynCheck_entry_vkGetMemoryZirconHandleFUCHSIA;
13765 }
13766 if (!strcmp(name, "vkGetMemoryZirconHandlePropertiesFUCHSIA"))
13767 {
13768 return (void*)dynCheck_entry_vkGetMemoryZirconHandlePropertiesFUCHSIA;
13769 }
13770#endif
13771#ifdef VK_FUCHSIA_external_semaphore
13772 if (!strcmp(name, "vkImportSemaphoreZirconHandleFUCHSIA"))
13773 {
13774 return (void*)dynCheck_entry_vkImportSemaphoreZirconHandleFUCHSIA;
13775 }
13776 if (!strcmp(name, "vkGetSemaphoreZirconHandleFUCHSIA"))
13777 {
13778 return (void*)dynCheck_entry_vkGetSemaphoreZirconHandleFUCHSIA;
13779 }
13780#endif
13781#ifdef VK_FUCHSIA_buffer_collection
13782 if (!strcmp(name, "vkCreateBufferCollectionFUCHSIA"))
13783 {
13784 return (void*)dynCheck_entry_vkCreateBufferCollectionFUCHSIA;
13785 }
13786 if (!strcmp(name, "vkSetBufferCollectionImageConstraintsFUCHSIA"))
13787 {
13788 return (void*)dynCheck_entry_vkSetBufferCollectionImageConstraintsFUCHSIA;
13789 }
13790 if (!strcmp(name, "vkSetBufferCollectionBufferConstraintsFUCHSIA"))
13791 {
13792 return (void*)dynCheck_entry_vkSetBufferCollectionBufferConstraintsFUCHSIA;
13793 }
13794 if (!strcmp(name, "vkDestroyBufferCollectionFUCHSIA"))
13795 {
13796 return (void*)dynCheck_entry_vkDestroyBufferCollectionFUCHSIA;
13797 }
13798 if (!strcmp(name, "vkGetBufferCollectionPropertiesFUCHSIA"))
13799 {
13800 return (void*)dynCheck_entry_vkGetBufferCollectionPropertiesFUCHSIA;
13801 }
13802#endif
13803#ifdef VK_HUAWEI_subpass_shading
13804 if (!strcmp(name, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI"))
13805 {
13806 return (void*)dynCheck_entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;
13807 }
13808 if (!strcmp(name, "vkCmdSubpassShadingHUAWEI"))
13809 {
Yilong Li590870d2022-04-25 07:43:47 +000013810 bool hasExt = resources->hasInstanceExtension(instance, "VK_HUAWEI_subpass_shading");
13811 return hasExt ? (void*)entry_vkCmdSubpassShadingHUAWEI : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080013812 }
13813#endif
13814#ifdef VK_HUAWEI_invocation_mask
13815 if (!strcmp(name, "vkCmdBindInvocationMaskHUAWEI"))
13816 {
Yilong Li590870d2022-04-25 07:43:47 +000013817 bool hasExt = resources->hasInstanceExtension(instance, "VK_HUAWEI_invocation_mask");
13818 return hasExt ? (void*)entry_vkCmdBindInvocationMaskHUAWEI : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080013819 }
13820#endif
13821#ifdef VK_NV_external_memory_rdma
13822 if (!strcmp(name, "vkGetMemoryRemoteAddressNV"))
13823 {
13824 return (void*)dynCheck_entry_vkGetMemoryRemoteAddressNV;
13825 }
13826#endif
13827#ifdef VK_EXT_extended_dynamic_state2
13828 if (!strcmp(name, "vkCmdSetPatchControlPointsEXT"))
13829 {
Yilong Li590870d2022-04-25 07:43:47 +000013830 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state2");
13831 return hasExt ? (void*)entry_vkCmdSetPatchControlPointsEXT : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080013832 }
13833 if (!strcmp(name, "vkCmdSetRasterizerDiscardEnableEXT"))
13834 {
Yilong Li590870d2022-04-25 07:43:47 +000013835 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state2");
13836 return hasExt ? (void*)entry_vkCmdSetRasterizerDiscardEnableEXT : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080013837 }
13838 if (!strcmp(name, "vkCmdSetDepthBiasEnableEXT"))
13839 {
Yilong Li590870d2022-04-25 07:43:47 +000013840 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state2");
13841 return hasExt ? (void*)entry_vkCmdSetDepthBiasEnableEXT : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080013842 }
13843 if (!strcmp(name, "vkCmdSetLogicOpEXT"))
13844 {
Yilong Li590870d2022-04-25 07:43:47 +000013845 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state2");
13846 return hasExt ? (void*)entry_vkCmdSetLogicOpEXT : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080013847 }
13848 if (!strcmp(name, "vkCmdSetPrimitiveRestartEnableEXT"))
13849 {
Yilong Li590870d2022-04-25 07:43:47 +000013850 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state2");
13851 return hasExt ? (void*)entry_vkCmdSetPrimitiveRestartEnableEXT : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080013852 }
13853#endif
13854#ifdef VK_QNX_screen_surface
13855 if (!strcmp(name, "vkCreateScreenSurfaceQNX"))
13856 {
13857 bool hasExt = resources->hasInstanceExtension(instance, "VK_QNX_screen_surface");
13858 return hasExt ? (void*)entry_vkCreateScreenSurfaceQNX : nullptr;
13859 }
13860 if (!strcmp(name, "vkGetPhysicalDeviceScreenPresentationSupportQNX"))
13861 {
13862 bool hasExt = resources->hasInstanceExtension(instance, "VK_QNX_screen_surface");
13863 return hasExt ? (void*)entry_vkGetPhysicalDeviceScreenPresentationSupportQNX : nullptr;
13864 }
13865#endif
13866#ifdef VK_EXT_color_write_enable
13867 if (!strcmp(name, "vkCmdSetColorWriteEnableEXT"))
13868 {
Yilong Li590870d2022-04-25 07:43:47 +000013869 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_color_write_enable");
13870 return hasExt ? (void*)entry_vkCmdSetColorWriteEnableEXT : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080013871 }
13872#endif
Yilong Li71c43c52021-02-10 02:50:43 -080013873#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -070013874 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
13875 {
13876 return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
13877 }
13878 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
13879 {
13880 return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
13881 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013882 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
13883 {
13884 return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
13885 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070013886 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
13887 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013888 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070013889 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070013890 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
13891 {
Yilong Li590870d2022-04-25 07:43:47 +000013892 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
13893 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
Lingfeng Yangc53e7472019-03-27 08:50:55 -070013894 }
13895 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
13896 {
Yilong Li590870d2022-04-25 07:43:47 +000013897 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
13898 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
Lingfeng Yangc53e7472019-03-27 08:50:55 -070013899 }
13900 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
13901 {
Yilong Li590870d2022-04-25 07:43:47 +000013902 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
13903 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
Lingfeng Yangc53e7472019-03-27 08:50:55 -070013904 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070013905 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
13906 {
Yilong Li590870d2022-04-25 07:43:47 +000013907 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
13908 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
Lingfeng Yang39a276e2019-06-17 13:27:22 -070013909 }
Lingfeng Yang87f11962019-06-27 16:28:53 +000013910 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
13911 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013912 return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +000013913 }
13914 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
13915 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013916 return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +000013917 }
Lingfeng Yang4c542412020-02-04 18:18:32 -080013918 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
13919 {
13920 return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE;
13921 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070013922 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
13923 {
13924 return (void*)dynCheck_entry_vkFreeMemorySyncGOOGLE;
13925 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070013926 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
13927 {
Yilong Li71c43c52021-02-10 02:50:43 -080013928 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070013929 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
13930 }
13931 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
13932 {
Yilong Li71c43c52021-02-10 02:50:43 -080013933 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070013934 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
13935 }
13936 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
13937 {
Yilong Li71c43c52021-02-10 02:50:43 -080013938 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070013939 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
13940 }
13941 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
13942 {
Yilong Li71c43c52021-02-10 02:50:43 -080013943 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070013944 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
13945 }
Yilong Lia48b0102020-09-15 15:08:28 -070013946 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
13947 {
13948 return (void*)dynCheck_entry_vkGetLinearImageLayoutGOOGLE;
13949 }
Yilong Lidcaf0672022-02-22 16:39:57 -080013950 if (!strcmp(name, "vkGetLinearImageLayout2GOOGLE"))
13951 {
13952 return (void*)dynCheck_entry_vkGetLinearImageLayout2GOOGLE;
13953 }
Lingfeng Yangded34672021-01-22 23:17:47 -080013954 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
13955 {
Yilong Li71c43c52021-02-10 02:50:43 -080013956 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangded34672021-01-22 23:17:47 -080013957 return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
13958 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080013959 if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
13960 {
13961 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
13962 return hasExt ? (void*)entry_vkQueueCommitDescriptorSetUpdatesGOOGLE : nullptr;
13963 }
13964 if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
13965 {
13966 return (void*)dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE;
13967 }
Lingfeng Yang5678e1e2021-07-15 12:28:05 -070013968 if (!strcmp(name, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE"))
13969 {
13970 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
13971 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE : nullptr;
13972 }
Lingfeng Yangded34672021-01-22 23:17:47 -080013973#endif
Yilong Li353409a2022-01-04 02:37:56 -080013974#ifdef VK_EXT_multi_draw
13975 if (!strcmp(name, "vkCmdDrawMultiEXT"))
13976 {
Yilong Li590870d2022-04-25 07:43:47 +000013977 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_multi_draw");
13978 return hasExt ? (void*)entry_vkCmdDrawMultiEXT : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080013979 }
13980 if (!strcmp(name, "vkCmdDrawMultiIndexedEXT"))
13981 {
Yilong Li590870d2022-04-25 07:43:47 +000013982 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_multi_draw");
13983 return hasExt ? (void*)entry_vkCmdDrawMultiIndexedEXT : nullptr;
Yilong Li353409a2022-01-04 02:37:56 -080013984 }
13985#endif
13986#ifdef VK_EXT_pageable_device_local_memory
13987 if (!strcmp(name, "vkSetDeviceMemoryPriorityEXT"))
13988 {
13989 return (void*)dynCheck_entry_vkSetDeviceMemoryPriorityEXT;
13990 }
13991#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013992#ifdef VK_KHR_acceleration_structure
13993 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
13994 {
13995 return (void*)dynCheck_entry_vkCreateAccelerationStructureKHR;
13996 }
13997 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
13998 {
13999 return (void*)dynCheck_entry_vkDestroyAccelerationStructureKHR;
14000 }
14001 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
14002 {
Yilong Li590870d2022-04-25 07:43:47 +000014003 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
14004 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresKHR : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080014005 }
14006 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
14007 {
Yilong Li590870d2022-04-25 07:43:47 +000014008 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
14009 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresIndirectKHR : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080014010 }
14011 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
14012 {
14013 return (void*)dynCheck_entry_vkBuildAccelerationStructuresKHR;
14014 }
14015 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
14016 {
14017 return (void*)dynCheck_entry_vkCopyAccelerationStructureKHR;
14018 }
14019 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
14020 {
14021 return (void*)dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR;
14022 }
14023 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
14024 {
14025 return (void*)dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR;
14026 }
14027 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
14028 {
14029 return (void*)dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR;
14030 }
14031 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
14032 {
Yilong Li590870d2022-04-25 07:43:47 +000014033 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
14034 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureKHR : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080014035 }
14036 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
14037 {
Yilong Li590870d2022-04-25 07:43:47 +000014038 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
14039 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureToMemoryKHR : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080014040 }
14041 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
14042 {
Yilong Li590870d2022-04-25 07:43:47 +000014043 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
14044 return hasExt ? (void*)entry_vkCmdCopyMemoryToAccelerationStructureKHR : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080014045 }
14046 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
14047 {
14048 return (void*)dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR;
14049 }
14050 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
14051 {
Yilong Li590870d2022-04-25 07:43:47 +000014052 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
14053 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesKHR : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080014054 }
14055 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
14056 {
14057 return (void*)dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR;
14058 }
14059 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
14060 {
14061 return (void*)dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR;
14062 }
14063#endif
14064#ifdef VK_KHR_ray_tracing_pipeline
14065 if (!strcmp(name, "vkCmdTraceRaysKHR"))
14066 {
Yilong Li590870d2022-04-25 07:43:47 +000014067 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
14068 return hasExt ? (void*)entry_vkCmdTraceRaysKHR : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080014069 }
14070 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
14071 {
14072 return (void*)dynCheck_entry_vkCreateRayTracingPipelinesKHR;
14073 }
14074 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
14075 {
14076 return (void*)dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR;
14077 }
14078 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
14079 {
Yilong Li590870d2022-04-25 07:43:47 +000014080 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
14081 return hasExt ? (void*)entry_vkCmdTraceRaysIndirectKHR : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080014082 }
14083 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
14084 {
14085 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR;
14086 }
14087 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
14088 {
Yilong Li590870d2022-04-25 07:43:47 +000014089 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
14090 return hasExt ? (void*)entry_vkCmdSetRayTracingPipelineStackSizeKHR : nullptr;
Yilong Lia8d45f12021-02-07 02:30:21 -080014091 }
14092#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014093 return nullptr;
14094}
14095void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
14096 auto resources = ResourceTracker::get();
14097 bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
14098#ifdef VK_VERSION_1_0
14099 if (!strcmp(name, "vkCreateInstance"))
14100 {
14101 return (void*)entry_vkCreateInstance;
14102 }
14103 if (!strcmp(name, "vkDestroyInstance"))
14104 {
14105 return (void*)entry_vkDestroyInstance;
14106 }
14107 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
14108 {
14109 return (void*)entry_vkEnumeratePhysicalDevices;
14110 }
14111 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
14112 {
14113 return (void*)entry_vkGetPhysicalDeviceFeatures;
14114 }
14115 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
14116 {
14117 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
14118 }
14119 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
14120 {
14121 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
14122 }
14123 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
14124 {
14125 return (void*)entry_vkGetPhysicalDeviceProperties;
14126 }
14127 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
14128 {
14129 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
14130 }
14131 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
14132 {
14133 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
14134 }
14135 if (!strcmp(name, "vkGetInstanceProcAddr"))
14136 {
14137 return (void*)entry_vkGetInstanceProcAddr;
14138 }
14139 if (!strcmp(name, "vkGetDeviceProcAddr"))
14140 {
14141 return (void*)entry_vkGetDeviceProcAddr;
14142 }
14143 if (!strcmp(name, "vkCreateDevice"))
14144 {
14145 return (void*)entry_vkCreateDevice;
14146 }
14147 if (!strcmp(name, "vkDestroyDevice"))
14148 {
14149 return (void*)entry_vkDestroyDevice;
14150 }
14151 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
14152 {
14153 return (void*)entry_vkEnumerateInstanceExtensionProperties;
14154 }
14155 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
14156 {
14157 return (void*)entry_vkEnumerateDeviceExtensionProperties;
14158 }
14159 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
14160 {
14161 return (void*)entry_vkEnumerateInstanceLayerProperties;
14162 }
14163 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
14164 {
14165 return (void*)entry_vkEnumerateDeviceLayerProperties;
14166 }
14167 if (!strcmp(name, "vkGetDeviceQueue"))
14168 {
14169 return (void*)entry_vkGetDeviceQueue;
14170 }
14171 if (!strcmp(name, "vkQueueSubmit"))
14172 {
14173 return (void*)entry_vkQueueSubmit;
14174 }
14175 if (!strcmp(name, "vkQueueWaitIdle"))
14176 {
14177 return (void*)entry_vkQueueWaitIdle;
14178 }
14179 if (!strcmp(name, "vkDeviceWaitIdle"))
14180 {
14181 return (void*)entry_vkDeviceWaitIdle;
14182 }
14183 if (!strcmp(name, "vkAllocateMemory"))
14184 {
14185 return (void*)entry_vkAllocateMemory;
14186 }
14187 if (!strcmp(name, "vkFreeMemory"))
14188 {
14189 return (void*)entry_vkFreeMemory;
14190 }
14191 if (!strcmp(name, "vkMapMemory"))
14192 {
14193 return (void*)entry_vkMapMemory;
14194 }
14195 if (!strcmp(name, "vkUnmapMemory"))
14196 {
14197 return (void*)entry_vkUnmapMemory;
14198 }
14199 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
14200 {
14201 return (void*)entry_vkFlushMappedMemoryRanges;
14202 }
14203 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
14204 {
14205 return (void*)entry_vkInvalidateMappedMemoryRanges;
14206 }
14207 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
14208 {
14209 return (void*)entry_vkGetDeviceMemoryCommitment;
14210 }
14211 if (!strcmp(name, "vkBindBufferMemory"))
14212 {
14213 return (void*)entry_vkBindBufferMemory;
14214 }
14215 if (!strcmp(name, "vkBindImageMemory"))
14216 {
14217 return (void*)entry_vkBindImageMemory;
14218 }
14219 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
14220 {
14221 return (void*)entry_vkGetBufferMemoryRequirements;
14222 }
14223 if (!strcmp(name, "vkGetImageMemoryRequirements"))
14224 {
14225 return (void*)entry_vkGetImageMemoryRequirements;
14226 }
14227 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
14228 {
14229 return (void*)entry_vkGetImageSparseMemoryRequirements;
14230 }
14231 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
14232 {
14233 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
14234 }
14235 if (!strcmp(name, "vkQueueBindSparse"))
14236 {
14237 return (void*)entry_vkQueueBindSparse;
14238 }
14239 if (!strcmp(name, "vkCreateFence"))
14240 {
14241 return (void*)entry_vkCreateFence;
14242 }
14243 if (!strcmp(name, "vkDestroyFence"))
14244 {
14245 return (void*)entry_vkDestroyFence;
14246 }
14247 if (!strcmp(name, "vkResetFences"))
14248 {
14249 return (void*)entry_vkResetFences;
14250 }
14251 if (!strcmp(name, "vkGetFenceStatus"))
14252 {
14253 return (void*)entry_vkGetFenceStatus;
14254 }
14255 if (!strcmp(name, "vkWaitForFences"))
14256 {
14257 return (void*)entry_vkWaitForFences;
14258 }
14259 if (!strcmp(name, "vkCreateSemaphore"))
14260 {
14261 return (void*)entry_vkCreateSemaphore;
14262 }
14263 if (!strcmp(name, "vkDestroySemaphore"))
14264 {
14265 return (void*)entry_vkDestroySemaphore;
14266 }
14267 if (!strcmp(name, "vkCreateEvent"))
14268 {
14269 return (void*)entry_vkCreateEvent;
14270 }
14271 if (!strcmp(name, "vkDestroyEvent"))
14272 {
14273 return (void*)entry_vkDestroyEvent;
14274 }
14275 if (!strcmp(name, "vkGetEventStatus"))
14276 {
14277 return (void*)entry_vkGetEventStatus;
14278 }
14279 if (!strcmp(name, "vkSetEvent"))
14280 {
14281 return (void*)entry_vkSetEvent;
14282 }
14283 if (!strcmp(name, "vkResetEvent"))
14284 {
14285 return (void*)entry_vkResetEvent;
14286 }
14287 if (!strcmp(name, "vkCreateQueryPool"))
14288 {
14289 return (void*)entry_vkCreateQueryPool;
14290 }
14291 if (!strcmp(name, "vkDestroyQueryPool"))
14292 {
14293 return (void*)entry_vkDestroyQueryPool;
14294 }
14295 if (!strcmp(name, "vkGetQueryPoolResults"))
14296 {
14297 return (void*)entry_vkGetQueryPoolResults;
14298 }
14299 if (!strcmp(name, "vkCreateBuffer"))
14300 {
14301 return (void*)entry_vkCreateBuffer;
14302 }
14303 if (!strcmp(name, "vkDestroyBuffer"))
14304 {
14305 return (void*)entry_vkDestroyBuffer;
14306 }
14307 if (!strcmp(name, "vkCreateBufferView"))
14308 {
14309 return (void*)entry_vkCreateBufferView;
14310 }
14311 if (!strcmp(name, "vkDestroyBufferView"))
14312 {
14313 return (void*)entry_vkDestroyBufferView;
14314 }
14315 if (!strcmp(name, "vkCreateImage"))
14316 {
14317 return (void*)entry_vkCreateImage;
14318 }
14319 if (!strcmp(name, "vkDestroyImage"))
14320 {
14321 return (void*)entry_vkDestroyImage;
14322 }
14323 if (!strcmp(name, "vkGetImageSubresourceLayout"))
14324 {
14325 return (void*)entry_vkGetImageSubresourceLayout;
14326 }
14327 if (!strcmp(name, "vkCreateImageView"))
14328 {
14329 return (void*)entry_vkCreateImageView;
14330 }
14331 if (!strcmp(name, "vkDestroyImageView"))
14332 {
14333 return (void*)entry_vkDestroyImageView;
14334 }
14335 if (!strcmp(name, "vkCreateShaderModule"))
14336 {
14337 return (void*)entry_vkCreateShaderModule;
14338 }
14339 if (!strcmp(name, "vkDestroyShaderModule"))
14340 {
14341 return (void*)entry_vkDestroyShaderModule;
14342 }
14343 if (!strcmp(name, "vkCreatePipelineCache"))
14344 {
14345 return (void*)entry_vkCreatePipelineCache;
14346 }
14347 if (!strcmp(name, "vkDestroyPipelineCache"))
14348 {
14349 return (void*)entry_vkDestroyPipelineCache;
14350 }
14351 if (!strcmp(name, "vkGetPipelineCacheData"))
14352 {
14353 return (void*)entry_vkGetPipelineCacheData;
14354 }
14355 if (!strcmp(name, "vkMergePipelineCaches"))
14356 {
14357 return (void*)entry_vkMergePipelineCaches;
14358 }
14359 if (!strcmp(name, "vkCreateGraphicsPipelines"))
14360 {
14361 return (void*)entry_vkCreateGraphicsPipelines;
14362 }
14363 if (!strcmp(name, "vkCreateComputePipelines"))
14364 {
14365 return (void*)entry_vkCreateComputePipelines;
14366 }
14367 if (!strcmp(name, "vkDestroyPipeline"))
14368 {
14369 return (void*)entry_vkDestroyPipeline;
14370 }
14371 if (!strcmp(name, "vkCreatePipelineLayout"))
14372 {
14373 return (void*)entry_vkCreatePipelineLayout;
14374 }
14375 if (!strcmp(name, "vkDestroyPipelineLayout"))
14376 {
14377 return (void*)entry_vkDestroyPipelineLayout;
14378 }
14379 if (!strcmp(name, "vkCreateSampler"))
14380 {
14381 return (void*)entry_vkCreateSampler;
14382 }
14383 if (!strcmp(name, "vkDestroySampler"))
14384 {
14385 return (void*)entry_vkDestroySampler;
14386 }
14387 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
14388 {
14389 return (void*)entry_vkCreateDescriptorSetLayout;
14390 }
14391 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
14392 {
14393 return (void*)entry_vkDestroyDescriptorSetLayout;
14394 }
14395 if (!strcmp(name, "vkCreateDescriptorPool"))
14396 {
14397 return (void*)entry_vkCreateDescriptorPool;
14398 }
14399 if (!strcmp(name, "vkDestroyDescriptorPool"))
14400 {
14401 return (void*)entry_vkDestroyDescriptorPool;
14402 }
14403 if (!strcmp(name, "vkResetDescriptorPool"))
14404 {
14405 return (void*)entry_vkResetDescriptorPool;
14406 }
14407 if (!strcmp(name, "vkAllocateDescriptorSets"))
14408 {
14409 return (void*)entry_vkAllocateDescriptorSets;
14410 }
14411 if (!strcmp(name, "vkFreeDescriptorSets"))
14412 {
14413 return (void*)entry_vkFreeDescriptorSets;
14414 }
14415 if (!strcmp(name, "vkUpdateDescriptorSets"))
14416 {
14417 return (void*)entry_vkUpdateDescriptorSets;
14418 }
14419 if (!strcmp(name, "vkCreateFramebuffer"))
14420 {
14421 return (void*)entry_vkCreateFramebuffer;
14422 }
14423 if (!strcmp(name, "vkDestroyFramebuffer"))
14424 {
14425 return (void*)entry_vkDestroyFramebuffer;
14426 }
14427 if (!strcmp(name, "vkCreateRenderPass"))
14428 {
14429 return (void*)entry_vkCreateRenderPass;
14430 }
14431 if (!strcmp(name, "vkDestroyRenderPass"))
14432 {
14433 return (void*)entry_vkDestroyRenderPass;
14434 }
14435 if (!strcmp(name, "vkGetRenderAreaGranularity"))
14436 {
14437 return (void*)entry_vkGetRenderAreaGranularity;
14438 }
14439 if (!strcmp(name, "vkCreateCommandPool"))
14440 {
14441 return (void*)entry_vkCreateCommandPool;
14442 }
14443 if (!strcmp(name, "vkDestroyCommandPool"))
14444 {
14445 return (void*)entry_vkDestroyCommandPool;
14446 }
14447 if (!strcmp(name, "vkResetCommandPool"))
14448 {
14449 return (void*)entry_vkResetCommandPool;
14450 }
14451 if (!strcmp(name, "vkAllocateCommandBuffers"))
14452 {
14453 return (void*)entry_vkAllocateCommandBuffers;
14454 }
14455 if (!strcmp(name, "vkFreeCommandBuffers"))
14456 {
14457 return (void*)entry_vkFreeCommandBuffers;
14458 }
14459 if (!strcmp(name, "vkBeginCommandBuffer"))
14460 {
14461 return (void*)entry_vkBeginCommandBuffer;
14462 }
14463 if (!strcmp(name, "vkEndCommandBuffer"))
14464 {
14465 return (void*)entry_vkEndCommandBuffer;
14466 }
14467 if (!strcmp(name, "vkResetCommandBuffer"))
14468 {
14469 return (void*)entry_vkResetCommandBuffer;
14470 }
14471 if (!strcmp(name, "vkCmdBindPipeline"))
14472 {
14473 return (void*)entry_vkCmdBindPipeline;
14474 }
14475 if (!strcmp(name, "vkCmdSetViewport"))
14476 {
14477 return (void*)entry_vkCmdSetViewport;
14478 }
14479 if (!strcmp(name, "vkCmdSetScissor"))
14480 {
14481 return (void*)entry_vkCmdSetScissor;
14482 }
14483 if (!strcmp(name, "vkCmdSetLineWidth"))
14484 {
14485 return (void*)entry_vkCmdSetLineWidth;
14486 }
14487 if (!strcmp(name, "vkCmdSetDepthBias"))
14488 {
14489 return (void*)entry_vkCmdSetDepthBias;
14490 }
14491 if (!strcmp(name, "vkCmdSetBlendConstants"))
14492 {
14493 return (void*)entry_vkCmdSetBlendConstants;
14494 }
14495 if (!strcmp(name, "vkCmdSetDepthBounds"))
14496 {
14497 return (void*)entry_vkCmdSetDepthBounds;
14498 }
14499 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
14500 {
14501 return (void*)entry_vkCmdSetStencilCompareMask;
14502 }
14503 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
14504 {
14505 return (void*)entry_vkCmdSetStencilWriteMask;
14506 }
14507 if (!strcmp(name, "vkCmdSetStencilReference"))
14508 {
14509 return (void*)entry_vkCmdSetStencilReference;
14510 }
14511 if (!strcmp(name, "vkCmdBindDescriptorSets"))
14512 {
14513 return (void*)entry_vkCmdBindDescriptorSets;
14514 }
14515 if (!strcmp(name, "vkCmdBindIndexBuffer"))
14516 {
14517 return (void*)entry_vkCmdBindIndexBuffer;
14518 }
14519 if (!strcmp(name, "vkCmdBindVertexBuffers"))
14520 {
14521 return (void*)entry_vkCmdBindVertexBuffers;
14522 }
14523 if (!strcmp(name, "vkCmdDraw"))
14524 {
14525 return (void*)entry_vkCmdDraw;
14526 }
14527 if (!strcmp(name, "vkCmdDrawIndexed"))
14528 {
14529 return (void*)entry_vkCmdDrawIndexed;
14530 }
14531 if (!strcmp(name, "vkCmdDrawIndirect"))
14532 {
14533 return (void*)entry_vkCmdDrawIndirect;
14534 }
14535 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
14536 {
14537 return (void*)entry_vkCmdDrawIndexedIndirect;
14538 }
14539 if (!strcmp(name, "vkCmdDispatch"))
14540 {
14541 return (void*)entry_vkCmdDispatch;
14542 }
14543 if (!strcmp(name, "vkCmdDispatchIndirect"))
14544 {
14545 return (void*)entry_vkCmdDispatchIndirect;
14546 }
14547 if (!strcmp(name, "vkCmdCopyBuffer"))
14548 {
14549 return (void*)entry_vkCmdCopyBuffer;
14550 }
14551 if (!strcmp(name, "vkCmdCopyImage"))
14552 {
14553 return (void*)entry_vkCmdCopyImage;
14554 }
14555 if (!strcmp(name, "vkCmdBlitImage"))
14556 {
14557 return (void*)entry_vkCmdBlitImage;
14558 }
14559 if (!strcmp(name, "vkCmdCopyBufferToImage"))
14560 {
14561 return (void*)entry_vkCmdCopyBufferToImage;
14562 }
14563 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
14564 {
14565 return (void*)entry_vkCmdCopyImageToBuffer;
14566 }
14567 if (!strcmp(name, "vkCmdUpdateBuffer"))
14568 {
14569 return (void*)entry_vkCmdUpdateBuffer;
14570 }
14571 if (!strcmp(name, "vkCmdFillBuffer"))
14572 {
14573 return (void*)entry_vkCmdFillBuffer;
14574 }
14575 if (!strcmp(name, "vkCmdClearColorImage"))
14576 {
14577 return (void*)entry_vkCmdClearColorImage;
14578 }
14579 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
14580 {
14581 return (void*)entry_vkCmdClearDepthStencilImage;
14582 }
14583 if (!strcmp(name, "vkCmdClearAttachments"))
14584 {
14585 return (void*)entry_vkCmdClearAttachments;
14586 }
14587 if (!strcmp(name, "vkCmdResolveImage"))
14588 {
14589 return (void*)entry_vkCmdResolveImage;
14590 }
14591 if (!strcmp(name, "vkCmdSetEvent"))
14592 {
14593 return (void*)entry_vkCmdSetEvent;
14594 }
14595 if (!strcmp(name, "vkCmdResetEvent"))
14596 {
14597 return (void*)entry_vkCmdResetEvent;
14598 }
14599 if (!strcmp(name, "vkCmdWaitEvents"))
14600 {
14601 return (void*)entry_vkCmdWaitEvents;
14602 }
14603 if (!strcmp(name, "vkCmdPipelineBarrier"))
14604 {
14605 return (void*)entry_vkCmdPipelineBarrier;
14606 }
14607 if (!strcmp(name, "vkCmdBeginQuery"))
14608 {
14609 return (void*)entry_vkCmdBeginQuery;
14610 }
14611 if (!strcmp(name, "vkCmdEndQuery"))
14612 {
14613 return (void*)entry_vkCmdEndQuery;
14614 }
14615 if (!strcmp(name, "vkCmdResetQueryPool"))
14616 {
14617 return (void*)entry_vkCmdResetQueryPool;
14618 }
14619 if (!strcmp(name, "vkCmdWriteTimestamp"))
14620 {
14621 return (void*)entry_vkCmdWriteTimestamp;
14622 }
14623 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
14624 {
14625 return (void*)entry_vkCmdCopyQueryPoolResults;
14626 }
14627 if (!strcmp(name, "vkCmdPushConstants"))
14628 {
14629 return (void*)entry_vkCmdPushConstants;
14630 }
14631 if (!strcmp(name, "vkCmdBeginRenderPass"))
14632 {
14633 return (void*)entry_vkCmdBeginRenderPass;
14634 }
14635 if (!strcmp(name, "vkCmdNextSubpass"))
14636 {
14637 return (void*)entry_vkCmdNextSubpass;
14638 }
14639 if (!strcmp(name, "vkCmdEndRenderPass"))
14640 {
14641 return (void*)entry_vkCmdEndRenderPass;
14642 }
14643 if (!strcmp(name, "vkCmdExecuteCommands"))
14644 {
14645 return (void*)entry_vkCmdExecuteCommands;
14646 }
14647#endif
14648#ifdef VK_VERSION_1_1
14649 if (!strcmp(name, "vkEnumerateInstanceVersion"))
14650 {
14651 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
14652 }
14653 if (!strcmp(name, "vkBindBufferMemory2"))
14654 {
14655 return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
14656 }
14657 if (!strcmp(name, "vkBindImageMemory2"))
14658 {
14659 return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
14660 }
14661 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
14662 {
14663 return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
14664 }
14665 if (!strcmp(name, "vkCmdSetDeviceMask"))
14666 {
14667 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
14668 }
14669 if (!strcmp(name, "vkCmdDispatchBase"))
14670 {
14671 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
14672 }
14673 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
14674 {
14675 return nullptr;
14676 }
14677 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
14678 {
14679 return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
14680 }
14681 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
14682 {
14683 return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
14684 }
14685 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
14686 {
14687 return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
14688 }
14689 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
14690 {
14691 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
14692 }
14693 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
14694 {
14695 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
14696 }
14697 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
14698 {
14699 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
14700 }
14701 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
14702 {
14703 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
14704 }
14705 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
14706 {
14707 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
14708 }
14709 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
14710 {
14711 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
14712 }
14713 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
14714 {
14715 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
14716 }
14717 if (!strcmp(name, "vkTrimCommandPool"))
14718 {
14719 return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
14720 }
14721 if (!strcmp(name, "vkGetDeviceQueue2"))
14722 {
14723 return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
14724 }
14725 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
14726 {
14727 return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
14728 }
14729 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
14730 {
14731 return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
14732 }
14733 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
14734 {
14735 return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
14736 }
14737 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
14738 {
14739 return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
14740 }
14741 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
14742 {
14743 return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
14744 }
14745 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
14746 {
14747 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
14748 }
14749 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
14750 {
14751 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
14752 }
14753 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
14754 {
14755 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
14756 }
14757 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
14758 {
14759 return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
14760 }
14761#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014762#ifdef VK_VERSION_1_2
14763 if (!strcmp(name, "vkCmdDrawIndirectCount"))
14764 {
14765 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14766 return hasExt ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
14767 }
14768 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
14769 {
14770 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14771 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
14772 }
14773 if (!strcmp(name, "vkCreateRenderPass2"))
14774 {
14775 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14776 return hasExt ? (void*)entry_vkCreateRenderPass2 : nullptr;
14777 }
14778 if (!strcmp(name, "vkCmdBeginRenderPass2"))
14779 {
14780 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14781 return hasExt ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
14782 }
14783 if (!strcmp(name, "vkCmdNextSubpass2"))
14784 {
14785 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14786 return hasExt ? (void*)entry_vkCmdNextSubpass2 : nullptr;
14787 }
14788 if (!strcmp(name, "vkCmdEndRenderPass2"))
14789 {
14790 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14791 return hasExt ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
14792 }
14793 if (!strcmp(name, "vkResetQueryPool"))
14794 {
14795 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14796 return hasExt ? (void*)entry_vkResetQueryPool : nullptr;
14797 }
14798 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
14799 {
14800 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14801 return hasExt ? (void*)entry_vkGetSemaphoreCounterValue : nullptr;
14802 }
14803 if (!strcmp(name, "vkWaitSemaphores"))
14804 {
14805 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14806 return hasExt ? (void*)entry_vkWaitSemaphores : nullptr;
14807 }
14808 if (!strcmp(name, "vkSignalSemaphore"))
14809 {
14810 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14811 return hasExt ? (void*)entry_vkSignalSemaphore : nullptr;
14812 }
14813 if (!strcmp(name, "vkGetBufferDeviceAddress"))
14814 {
14815 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14816 return hasExt ? (void*)entry_vkGetBufferDeviceAddress : nullptr;
14817 }
14818 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
14819 {
14820 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14821 return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddress : nullptr;
14822 }
14823 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
14824 {
14825 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
14826 return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddress : nullptr;
14827 }
14828#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014829#ifdef VK_KHR_surface
14830 if (!strcmp(name, "vkDestroySurfaceKHR"))
14831 {
14832 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
14833 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
14834 }
14835 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
14836 {
14837 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
14838 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
14839 }
14840 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
14841 {
14842 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
14843 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
14844 }
14845 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
14846 {
14847 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
14848 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
14849 }
14850 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
14851 {
14852 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
14853 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
14854 }
14855#endif
14856#ifdef VK_KHR_swapchain
14857 if (!strcmp(name, "vkCreateSwapchainKHR"))
14858 {
14859 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
14860 return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
14861 }
14862 if (!strcmp(name, "vkDestroySwapchainKHR"))
14863 {
14864 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
14865 return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
14866 }
14867 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
14868 {
14869 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
14870 return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
14871 }
14872 if (!strcmp(name, "vkAcquireNextImageKHR"))
14873 {
14874 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
14875 return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
14876 }
14877 if (!strcmp(name, "vkQueuePresentKHR"))
14878 {
14879 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
14880 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
14881 }
14882 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
14883 {
14884 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
14885 return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
14886 }
14887 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
14888 {
14889 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
14890 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
14891 }
14892 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
14893 {
14894 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
14895 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
14896 }
14897 if (!strcmp(name, "vkAcquireNextImage2KHR"))
14898 {
14899 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
14900 return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
14901 }
14902#endif
14903#ifdef VK_KHR_display
14904 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
14905 {
14906 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
14907 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
14908 }
14909 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
14910 {
14911 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
14912 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
14913 }
14914 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
14915 {
14916 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
14917 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
14918 }
14919 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
14920 {
14921 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
14922 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
14923 }
14924 if (!strcmp(name, "vkCreateDisplayModeKHR"))
14925 {
14926 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
14927 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
14928 }
14929 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
14930 {
14931 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
14932 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
14933 }
14934 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
14935 {
14936 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
14937 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
14938 }
14939#endif
14940#ifdef VK_KHR_display_swapchain
14941 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
14942 {
14943 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
14944 return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
14945 }
14946#endif
14947#ifdef VK_KHR_xlib_surface
14948 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
14949 {
14950 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
14951 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
14952 }
14953 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
14954 {
14955 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
14956 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
14957 }
14958#endif
14959#ifdef VK_KHR_xcb_surface
14960 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
14961 {
14962 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
14963 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
14964 }
14965 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
14966 {
14967 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
14968 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
14969 }
14970#endif
14971#ifdef VK_KHR_wayland_surface
14972 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
14973 {
14974 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
14975 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
14976 }
14977 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
14978 {
14979 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
14980 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
14981 }
14982#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014983#ifdef VK_KHR_android_surface
14984 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
14985 {
14986 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
14987 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
14988 }
14989#endif
14990#ifdef VK_KHR_win32_surface
14991 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
14992 {
14993 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
14994 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
14995 }
14996 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
14997 {
14998 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
14999 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
15000 }
15001#endif
Yilong Li353409a2022-01-04 02:37:56 -080015002#ifdef VK_KHR_video_queue
15003 if (!strcmp(name, "vkGetPhysicalDeviceVideoCapabilitiesKHR"))
15004 {
15005 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
15006 return hasExt ? (void*)entry_vkGetPhysicalDeviceVideoCapabilitiesKHR : nullptr;
15007 }
15008 if (!strcmp(name, "vkGetPhysicalDeviceVideoFormatPropertiesKHR"))
15009 {
15010 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
15011 return hasExt ? (void*)entry_vkGetPhysicalDeviceVideoFormatPropertiesKHR : nullptr;
15012 }
15013 if (!strcmp(name, "vkCreateVideoSessionKHR"))
15014 {
15015 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
15016 return hasExt ? (void*)entry_vkCreateVideoSessionKHR : nullptr;
15017 }
15018 if (!strcmp(name, "vkDestroyVideoSessionKHR"))
15019 {
15020 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
15021 return hasExt ? (void*)entry_vkDestroyVideoSessionKHR : nullptr;
15022 }
15023 if (!strcmp(name, "vkGetVideoSessionMemoryRequirementsKHR"))
15024 {
15025 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
15026 return hasExt ? (void*)entry_vkGetVideoSessionMemoryRequirementsKHR : nullptr;
15027 }
15028 if (!strcmp(name, "vkBindVideoSessionMemoryKHR"))
15029 {
15030 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
15031 return hasExt ? (void*)entry_vkBindVideoSessionMemoryKHR : nullptr;
15032 }
15033 if (!strcmp(name, "vkCreateVideoSessionParametersKHR"))
15034 {
15035 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
15036 return hasExt ? (void*)entry_vkCreateVideoSessionParametersKHR : nullptr;
15037 }
15038 if (!strcmp(name, "vkUpdateVideoSessionParametersKHR"))
15039 {
15040 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
15041 return hasExt ? (void*)entry_vkUpdateVideoSessionParametersKHR : nullptr;
15042 }
15043 if (!strcmp(name, "vkDestroyVideoSessionParametersKHR"))
15044 {
15045 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
15046 return hasExt ? (void*)entry_vkDestroyVideoSessionParametersKHR : nullptr;
15047 }
15048 if (!strcmp(name, "vkCmdBeginVideoCodingKHR"))
15049 {
15050 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
15051 return hasExt ? (void*)entry_vkCmdBeginVideoCodingKHR : nullptr;
15052 }
15053 if (!strcmp(name, "vkCmdEndVideoCodingKHR"))
15054 {
15055 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
15056 return hasExt ? (void*)entry_vkCmdEndVideoCodingKHR : nullptr;
15057 }
15058 if (!strcmp(name, "vkCmdControlVideoCodingKHR"))
15059 {
15060 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
15061 return hasExt ? (void*)entry_vkCmdControlVideoCodingKHR : nullptr;
15062 }
15063#endif
15064#ifdef VK_KHR_video_decode_queue
15065 if (!strcmp(name, "vkCmdDecodeVideoKHR"))
15066 {
15067 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_decode_queue");
15068 return hasExt ? (void*)entry_vkCmdDecodeVideoKHR : nullptr;
15069 }
15070#endif
15071#ifdef VK_KHR_dynamic_rendering
15072 if (!strcmp(name, "vkCmdBeginRenderingKHR"))
15073 {
15074 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_dynamic_rendering");
15075 return hasExt ? (void*)entry_vkCmdBeginRenderingKHR : nullptr;
15076 }
15077 if (!strcmp(name, "vkCmdEndRenderingKHR"))
15078 {
15079 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_dynamic_rendering");
15080 return hasExt ? (void*)entry_vkCmdEndRenderingKHR : nullptr;
15081 }
15082#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015083#ifdef VK_KHR_get_physical_device_properties2
15084 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
15085 {
15086 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
15087 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
15088 }
15089 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
15090 {
15091 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
15092 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
15093 }
15094 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
15095 {
15096 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
15097 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
15098 }
15099 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
15100 {
15101 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
15102 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
15103 }
15104 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
15105 {
15106 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
15107 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
15108 }
15109 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
15110 {
15111 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
15112 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
15113 }
15114 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
15115 {
15116 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
15117 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
15118 }
15119#endif
15120#ifdef VK_KHR_device_group
15121 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
15122 {
15123 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
15124 return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
15125 }
15126 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
15127 {
15128 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
15129 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
15130 }
15131 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
15132 {
15133 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
15134 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
15135 }
15136#endif
15137#ifdef VK_KHR_maintenance1
15138 if (!strcmp(name, "vkTrimCommandPoolKHR"))
15139 {
15140 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
15141 return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
15142 }
15143#endif
15144#ifdef VK_KHR_device_group_creation
15145 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
15146 {
15147 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
15148 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
15149 }
15150#endif
15151#ifdef VK_KHR_external_memory_capabilities
15152 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
15153 {
15154 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
15155 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
15156 }
15157#endif
15158#ifdef VK_KHR_external_memory_win32
15159 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
15160 {
15161 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
15162 return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
15163 }
15164 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
15165 {
15166 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
15167 return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
15168 }
15169#endif
15170#ifdef VK_KHR_external_memory_fd
15171 if (!strcmp(name, "vkGetMemoryFdKHR"))
15172 {
15173 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
15174 return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
15175 }
15176 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
15177 {
15178 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
15179 return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
15180 }
15181#endif
15182#ifdef VK_KHR_external_semaphore_capabilities
15183 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
15184 {
15185 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
15186 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
15187 }
15188#endif
15189#ifdef VK_KHR_external_semaphore_win32
15190 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
15191 {
15192 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
15193 return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
15194 }
15195 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
15196 {
15197 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
15198 return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
15199 }
15200#endif
15201#ifdef VK_KHR_external_semaphore_fd
15202 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
15203 {
15204 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
15205 return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
15206 }
15207 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
15208 {
15209 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
15210 return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
15211 }
15212#endif
15213#ifdef VK_KHR_push_descriptor
15214 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
15215 {
15216 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
15217 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
15218 }
15219 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
15220 {
15221 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
15222 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
15223 }
15224#endif
15225#ifdef VK_KHR_descriptor_update_template
15226 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
15227 {
15228 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
15229 return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
15230 }
15231 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
15232 {
15233 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
15234 return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
15235 }
15236 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
15237 {
15238 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
15239 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
15240 }
15241#endif
15242#ifdef VK_KHR_create_renderpass2
15243 if (!strcmp(name, "vkCreateRenderPass2KHR"))
15244 {
15245 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
15246 return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
15247 }
15248 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
15249 {
15250 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
15251 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
15252 }
15253 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
15254 {
15255 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
15256 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
15257 }
15258 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
15259 {
15260 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
15261 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
15262 }
15263#endif
15264#ifdef VK_KHR_shared_presentable_image
15265 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
15266 {
15267 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
15268 return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
15269 }
15270#endif
15271#ifdef VK_KHR_external_fence_capabilities
15272 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
15273 {
15274 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
15275 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
15276 }
15277#endif
15278#ifdef VK_KHR_external_fence_win32
15279 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
15280 {
15281 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
15282 return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
15283 }
15284 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
15285 {
15286 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
15287 return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
15288 }
15289#endif
15290#ifdef VK_KHR_external_fence_fd
15291 if (!strcmp(name, "vkImportFenceFdKHR"))
15292 {
15293 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
15294 return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
15295 }
15296 if (!strcmp(name, "vkGetFenceFdKHR"))
15297 {
15298 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
15299 return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
15300 }
15301#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015302#ifdef VK_KHR_performance_query
15303 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
15304 {
15305 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
15306 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
15307 }
15308 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
15309 {
15310 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
15311 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
15312 }
15313 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
15314 {
15315 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
15316 return hasExt ? (void*)entry_vkAcquireProfilingLockKHR : nullptr;
15317 }
15318 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
15319 {
15320 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
15321 return hasExt ? (void*)entry_vkReleaseProfilingLockKHR : nullptr;
15322 }
15323#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015324#ifdef VK_KHR_get_surface_capabilities2
15325 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
15326 {
15327 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
15328 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
15329 }
15330 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
15331 {
15332 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
15333 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
15334 }
15335#endif
15336#ifdef VK_KHR_get_display_properties2
15337 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
15338 {
15339 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
15340 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
15341 }
15342 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
15343 {
15344 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
15345 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
15346 }
15347 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
15348 {
15349 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
15350 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
15351 }
15352 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
15353 {
15354 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
15355 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
15356 }
15357#endif
15358#ifdef VK_KHR_get_memory_requirements2
15359 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
15360 {
15361 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
15362 return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
15363 }
15364 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
15365 {
15366 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
15367 return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
15368 }
15369 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
15370 {
15371 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
15372 return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
15373 }
15374#endif
15375#ifdef VK_KHR_sampler_ycbcr_conversion
15376 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
15377 {
15378 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
15379 return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
15380 }
15381 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
15382 {
15383 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
15384 return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
15385 }
15386#endif
15387#ifdef VK_KHR_bind_memory2
15388 if (!strcmp(name, "vkBindBufferMemory2KHR"))
15389 {
15390 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
15391 return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
15392 }
15393 if (!strcmp(name, "vkBindImageMemory2KHR"))
15394 {
15395 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
15396 return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
15397 }
15398#endif
15399#ifdef VK_KHR_maintenance3
15400 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
15401 {
15402 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
15403 return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
15404 }
15405#endif
15406#ifdef VK_KHR_draw_indirect_count
15407 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
15408 {
15409 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
15410 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
15411 }
15412 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
15413 {
15414 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
15415 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
15416 }
15417#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015418#ifdef VK_KHR_timeline_semaphore
15419 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
15420 {
15421 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
15422 return hasExt ? (void*)entry_vkGetSemaphoreCounterValueKHR : nullptr;
15423 }
15424 if (!strcmp(name, "vkWaitSemaphoresKHR"))
15425 {
15426 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
15427 return hasExt ? (void*)entry_vkWaitSemaphoresKHR : nullptr;
15428 }
15429 if (!strcmp(name, "vkSignalSemaphoreKHR"))
15430 {
15431 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
15432 return hasExt ? (void*)entry_vkSignalSemaphoreKHR : nullptr;
15433 }
15434#endif
15435#ifdef VK_KHR_fragment_shading_rate
15436 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
15437 {
15438 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
15439 return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
15440 }
15441 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
15442 {
15443 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
15444 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateKHR : nullptr;
15445 }
15446#endif
Yilong Li353409a2022-01-04 02:37:56 -080015447#ifdef VK_KHR_present_wait
15448 if (!strcmp(name, "vkWaitForPresentKHR"))
15449 {
15450 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_present_wait");
15451 return hasExt ? (void*)entry_vkWaitForPresentKHR : nullptr;
15452 }
15453#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015454#ifdef VK_KHR_buffer_device_address
15455 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
15456 {
15457 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
15458 return hasExt ? (void*)entry_vkGetBufferDeviceAddressKHR : nullptr;
15459 }
15460 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
15461 {
15462 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
15463 return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddressKHR : nullptr;
15464 }
15465 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
15466 {
15467 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
15468 return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR : nullptr;
15469 }
15470#endif
15471#ifdef VK_KHR_deferred_host_operations
15472 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
15473 {
15474 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
15475 return hasExt ? (void*)entry_vkCreateDeferredOperationKHR : nullptr;
15476 }
15477 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
15478 {
15479 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
15480 return hasExt ? (void*)entry_vkDestroyDeferredOperationKHR : nullptr;
15481 }
15482 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
15483 {
15484 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
15485 return hasExt ? (void*)entry_vkGetDeferredOperationMaxConcurrencyKHR : nullptr;
15486 }
15487 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
15488 {
15489 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
15490 return hasExt ? (void*)entry_vkGetDeferredOperationResultKHR : nullptr;
15491 }
15492 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
15493 {
15494 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
15495 return hasExt ? (void*)entry_vkDeferredOperationJoinKHR : nullptr;
15496 }
15497#endif
15498#ifdef VK_KHR_pipeline_executable_properties
15499 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
15500 {
15501 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
15502 return hasExt ? (void*)entry_vkGetPipelineExecutablePropertiesKHR : nullptr;
15503 }
15504 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
15505 {
15506 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
15507 return hasExt ? (void*)entry_vkGetPipelineExecutableStatisticsKHR : nullptr;
15508 }
15509 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
15510 {
15511 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
15512 return hasExt ? (void*)entry_vkGetPipelineExecutableInternalRepresentationsKHR : nullptr;
15513 }
15514#endif
Yilong Li353409a2022-01-04 02:37:56 -080015515#ifdef VK_KHR_video_encode_queue
15516 if (!strcmp(name, "vkCmdEncodeVideoKHR"))
15517 {
15518 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_encode_queue");
15519 return hasExt ? (void*)entry_vkCmdEncodeVideoKHR : nullptr;
15520 }
15521#endif
15522#ifdef VK_KHR_synchronization2
15523 if (!strcmp(name, "vkCmdSetEvent2KHR"))
15524 {
15525 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
15526 return hasExt ? (void*)entry_vkCmdSetEvent2KHR : nullptr;
15527 }
15528 if (!strcmp(name, "vkCmdResetEvent2KHR"))
15529 {
15530 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
15531 return hasExt ? (void*)entry_vkCmdResetEvent2KHR : nullptr;
15532 }
15533 if (!strcmp(name, "vkCmdWaitEvents2KHR"))
15534 {
15535 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
15536 return hasExt ? (void*)entry_vkCmdWaitEvents2KHR : nullptr;
15537 }
15538 if (!strcmp(name, "vkCmdPipelineBarrier2KHR"))
15539 {
15540 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
15541 return hasExt ? (void*)entry_vkCmdPipelineBarrier2KHR : nullptr;
15542 }
15543 if (!strcmp(name, "vkCmdWriteTimestamp2KHR"))
15544 {
15545 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
15546 return hasExt ? (void*)entry_vkCmdWriteTimestamp2KHR : nullptr;
15547 }
15548 if (!strcmp(name, "vkQueueSubmit2KHR"))
15549 {
15550 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
15551 return hasExt ? (void*)entry_vkQueueSubmit2KHR : nullptr;
15552 }
15553 if (!strcmp(name, "vkCmdWriteBufferMarker2AMD"))
15554 {
15555 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
15556 return hasExt ? (void*)entry_vkCmdWriteBufferMarker2AMD : nullptr;
15557 }
15558 if (!strcmp(name, "vkGetQueueCheckpointData2NV"))
15559 {
15560 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
15561 return hasExt ? (void*)entry_vkGetQueueCheckpointData2NV : nullptr;
15562 }
15563#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015564#ifdef VK_KHR_copy_commands2
15565 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
15566 {
15567 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
15568 return hasExt ? (void*)entry_vkCmdCopyBuffer2KHR : nullptr;
15569 }
15570 if (!strcmp(name, "vkCmdCopyImage2KHR"))
15571 {
15572 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
15573 return hasExt ? (void*)entry_vkCmdCopyImage2KHR : nullptr;
15574 }
15575 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
15576 {
15577 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
15578 return hasExt ? (void*)entry_vkCmdCopyBufferToImage2KHR : nullptr;
15579 }
15580 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
15581 {
15582 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
15583 return hasExt ? (void*)entry_vkCmdCopyImageToBuffer2KHR : nullptr;
15584 }
15585 if (!strcmp(name, "vkCmdBlitImage2KHR"))
15586 {
15587 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
15588 return hasExt ? (void*)entry_vkCmdBlitImage2KHR : nullptr;
15589 }
15590 if (!strcmp(name, "vkCmdResolveImage2KHR"))
15591 {
15592 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
15593 return hasExt ? (void*)entry_vkCmdResolveImage2KHR : nullptr;
15594 }
15595#endif
Yilong Li353409a2022-01-04 02:37:56 -080015596#ifdef VK_KHR_maintenance4
15597 if (!strcmp(name, "vkGetDeviceBufferMemoryRequirementsKHR"))
15598 {
15599 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance4");
15600 return hasExt ? (void*)entry_vkGetDeviceBufferMemoryRequirementsKHR : nullptr;
15601 }
15602 if (!strcmp(name, "vkGetDeviceImageMemoryRequirementsKHR"))
15603 {
15604 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance4");
15605 return hasExt ? (void*)entry_vkGetDeviceImageMemoryRequirementsKHR : nullptr;
15606 }
15607 if (!strcmp(name, "vkGetDeviceImageSparseMemoryRequirementsKHR"))
15608 {
15609 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance4");
15610 return hasExt ? (void*)entry_vkGetDeviceImageSparseMemoryRequirementsKHR : nullptr;
15611 }
15612#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015613#ifdef VK_ANDROID_native_buffer
15614 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
15615 {
15616 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
15617 return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
15618 }
15619 if (!strcmp(name, "vkAcquireImageANDROID"))
15620 {
15621 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
15622 return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
15623 }
15624 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
15625 {
15626 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
15627 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
15628 }
15629#endif
15630#ifdef VK_EXT_debug_report
15631 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
15632 {
15633 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
15634 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
15635 }
15636 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
15637 {
15638 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
15639 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
15640 }
15641 if (!strcmp(name, "vkDebugReportMessageEXT"))
15642 {
15643 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
15644 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
15645 }
15646#endif
15647#ifdef VK_EXT_debug_marker
15648 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
15649 {
15650 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
15651 return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
15652 }
15653 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
15654 {
15655 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
15656 return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
15657 }
15658 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
15659 {
15660 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
15661 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
15662 }
15663 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
15664 {
15665 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
15666 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
15667 }
15668 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
15669 {
15670 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
15671 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
15672 }
15673#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015674#ifdef VK_EXT_transform_feedback
15675 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
15676 {
15677 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
15678 return hasExt ? (void*)entry_vkCmdBindTransformFeedbackBuffersEXT : nullptr;
15679 }
15680 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
15681 {
15682 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
15683 return hasExt ? (void*)entry_vkCmdBeginTransformFeedbackEXT : nullptr;
15684 }
15685 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
15686 {
15687 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
15688 return hasExt ? (void*)entry_vkCmdEndTransformFeedbackEXT : nullptr;
15689 }
15690 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
15691 {
15692 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
15693 return hasExt ? (void*)entry_vkCmdBeginQueryIndexedEXT : nullptr;
15694 }
15695 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
15696 {
15697 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
15698 return hasExt ? (void*)entry_vkCmdEndQueryIndexedEXT : nullptr;
15699 }
15700 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
15701 {
15702 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
15703 return hasExt ? (void*)entry_vkCmdDrawIndirectByteCountEXT : nullptr;
15704 }
15705#endif
Yilong Li353409a2022-01-04 02:37:56 -080015706#ifdef VK_NVX_binary_import
15707 if (!strcmp(name, "vkCreateCuModuleNVX"))
15708 {
15709 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
15710 return hasExt ? (void*)entry_vkCreateCuModuleNVX : nullptr;
15711 }
15712 if (!strcmp(name, "vkCreateCuFunctionNVX"))
15713 {
15714 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
15715 return hasExt ? (void*)entry_vkCreateCuFunctionNVX : nullptr;
15716 }
15717 if (!strcmp(name, "vkDestroyCuModuleNVX"))
15718 {
15719 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
15720 return hasExt ? (void*)entry_vkDestroyCuModuleNVX : nullptr;
15721 }
15722 if (!strcmp(name, "vkDestroyCuFunctionNVX"))
15723 {
15724 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
15725 return hasExt ? (void*)entry_vkDestroyCuFunctionNVX : nullptr;
15726 }
15727 if (!strcmp(name, "vkCmdCuLaunchKernelNVX"))
15728 {
15729 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
15730 return hasExt ? (void*)entry_vkCmdCuLaunchKernelNVX : nullptr;
15731 }
15732#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015733#ifdef VK_NVX_image_view_handle
15734 if (!strcmp(name, "vkGetImageViewHandleNVX"))
15735 {
15736 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
15737 return hasExt ? (void*)entry_vkGetImageViewHandleNVX : nullptr;
15738 }
15739 if (!strcmp(name, "vkGetImageViewAddressNVX"))
15740 {
15741 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
15742 return hasExt ? (void*)entry_vkGetImageViewAddressNVX : nullptr;
15743 }
15744#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015745#ifdef VK_AMD_draw_indirect_count
15746 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
15747 {
15748 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
15749 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
15750 }
15751 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
15752 {
15753 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
15754 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
15755 }
15756#endif
15757#ifdef VK_AMD_shader_info
15758 if (!strcmp(name, "vkGetShaderInfoAMD"))
15759 {
15760 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
15761 return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
15762 }
15763#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015764#ifdef VK_GGP_stream_descriptor_surface
15765 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
15766 {
15767 bool hasExt = resources->hasDeviceExtension(device, "VK_GGP_stream_descriptor_surface");
15768 return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
15769 }
15770#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015771#ifdef VK_NV_external_memory_capabilities
15772 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
15773 {
15774 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
15775 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
15776 }
15777#endif
15778#ifdef VK_NV_external_memory_win32
15779 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
15780 {
15781 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
15782 return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
15783 }
15784#endif
15785#ifdef VK_NN_vi_surface
15786 if (!strcmp(name, "vkCreateViSurfaceNN"))
15787 {
15788 bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
15789 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
15790 }
15791#endif
15792#ifdef VK_EXT_conditional_rendering
15793 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
15794 {
15795 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
15796 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
15797 }
15798 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
15799 {
15800 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
15801 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
15802 }
15803#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015804#ifdef VK_NV_clip_space_w_scaling
15805 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
15806 {
15807 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
15808 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
15809 }
15810#endif
15811#ifdef VK_EXT_direct_mode_display
15812 if (!strcmp(name, "vkReleaseDisplayEXT"))
15813 {
15814 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
15815 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
15816 }
15817#endif
15818#ifdef VK_EXT_acquire_xlib_display
15819 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
15820 {
15821 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
15822 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
15823 }
15824 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
15825 {
15826 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
15827 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
15828 }
15829#endif
15830#ifdef VK_EXT_display_surface_counter
15831 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
15832 {
15833 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
15834 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
15835 }
15836#endif
15837#ifdef VK_EXT_display_control
15838 if (!strcmp(name, "vkDisplayPowerControlEXT"))
15839 {
15840 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
15841 return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
15842 }
15843 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
15844 {
15845 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
15846 return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
15847 }
15848 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
15849 {
15850 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
15851 return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
15852 }
15853 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
15854 {
15855 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
15856 return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
15857 }
15858#endif
15859#ifdef VK_GOOGLE_display_timing
15860 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
15861 {
15862 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
15863 return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
15864 }
15865 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
15866 {
15867 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
15868 return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
15869 }
15870#endif
15871#ifdef VK_EXT_discard_rectangles
15872 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
15873 {
15874 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
15875 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
15876 }
15877#endif
15878#ifdef VK_EXT_hdr_metadata
15879 if (!strcmp(name, "vkSetHdrMetadataEXT"))
15880 {
15881 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
15882 return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
15883 }
15884#endif
15885#ifdef VK_MVK_ios_surface
15886 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
15887 {
15888 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
15889 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
15890 }
15891#endif
15892#ifdef VK_MVK_macos_surface
15893 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
15894 {
15895 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
15896 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
15897 }
15898#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015899#ifdef VK_MVK_moltenvk
15900 if (!strcmp(name, "vkGetMTLDeviceMVK"))
15901 {
15902 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
15903 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
15904 }
15905 if (!strcmp(name, "vkSetMTLTextureMVK"))
15906 {
15907 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
15908 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
15909 }
15910 if (!strcmp(name, "vkGetMTLTextureMVK"))
15911 {
15912 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
15913 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
15914 }
15915 if (!strcmp(name, "vkGetMTLBufferMVK"))
15916 {
15917 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
15918 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
15919 }
15920 if (!strcmp(name, "vkUseIOSurfaceMVK"))
15921 {
15922 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
15923 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
15924 }
15925 if (!strcmp(name, "vkGetIOSurfaceMVK"))
15926 {
15927 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
15928 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
15929 }
15930#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015931#ifdef VK_EXT_debug_utils
15932 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
15933 {
15934 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15935 return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
15936 }
15937 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
15938 {
15939 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15940 return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
15941 }
15942 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
15943 {
15944 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15945 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
15946 }
15947 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
15948 {
15949 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15950 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
15951 }
15952 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
15953 {
15954 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15955 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
15956 }
15957 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
15958 {
15959 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15960 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
15961 }
15962 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
15963 {
15964 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15965 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
15966 }
15967 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
15968 {
15969 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15970 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
15971 }
15972 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
15973 {
15974 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15975 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
15976 }
15977 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
15978 {
15979 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15980 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
15981 }
15982 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
15983 {
15984 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
15985 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
15986 }
15987#endif
15988#ifdef VK_ANDROID_external_memory_android_hardware_buffer
15989 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
15990 {
15991 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
15992 return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
15993 }
15994 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
15995 {
15996 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
15997 return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
15998 }
15999#endif
16000#ifdef VK_EXT_sample_locations
16001 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
16002 {
16003 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
16004 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
16005 }
16006 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
16007 {
16008 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
16009 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
16010 }
16011#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080016012#ifdef VK_EXT_image_drm_format_modifier
16013 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
16014 {
16015 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier");
16016 return hasExt ? (void*)entry_vkGetImageDrmFormatModifierPropertiesEXT : nullptr;
16017 }
16018#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080016019#ifdef VK_EXT_validation_cache
16020 if (!strcmp(name, "vkCreateValidationCacheEXT"))
16021 {
16022 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
16023 return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
16024 }
16025 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
16026 {
16027 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
16028 return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
16029 }
16030 if (!strcmp(name, "vkMergeValidationCachesEXT"))
16031 {
16032 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
16033 return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
16034 }
16035 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
16036 {
16037 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
16038 return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
16039 }
16040#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080016041#ifdef VK_NV_shading_rate_image
16042 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
16043 {
16044 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
16045 return hasExt ? (void*)entry_vkCmdBindShadingRateImageNV : nullptr;
16046 }
16047 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
16048 {
16049 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
16050 return hasExt ? (void*)entry_vkCmdSetViewportShadingRatePaletteNV : nullptr;
16051 }
16052 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
16053 {
16054 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
16055 return hasExt ? (void*)entry_vkCmdSetCoarseSampleOrderNV : nullptr;
16056 }
16057#endif
16058#ifdef VK_NV_ray_tracing
16059 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
16060 {
16061 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16062 return hasExt ? (void*)entry_vkCreateAccelerationStructureNV : nullptr;
16063 }
16064 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
16065 {
16066 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16067 return hasExt ? (void*)entry_vkDestroyAccelerationStructureNV : nullptr;
16068 }
16069 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
16070 {
16071 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16072 return hasExt ? (void*)entry_vkGetAccelerationStructureMemoryRequirementsNV : nullptr;
16073 }
16074 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
16075 {
16076 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16077 return hasExt ? (void*)entry_vkBindAccelerationStructureMemoryNV : nullptr;
16078 }
16079 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
16080 {
16081 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16082 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructureNV : nullptr;
16083 }
16084 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
16085 {
16086 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16087 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureNV : nullptr;
16088 }
16089 if (!strcmp(name, "vkCmdTraceRaysNV"))
16090 {
16091 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16092 return hasExt ? (void*)entry_vkCmdTraceRaysNV : nullptr;
16093 }
16094 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
16095 {
16096 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16097 return hasExt ? (void*)entry_vkCreateRayTracingPipelinesNV : nullptr;
16098 }
16099 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
16100 {
16101 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16102 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesKHR : nullptr;
16103 }
16104 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
16105 {
16106 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16107 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesNV : nullptr;
16108 }
16109 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
16110 {
16111 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16112 return hasExt ? (void*)entry_vkGetAccelerationStructureHandleNV : nullptr;
16113 }
16114 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
16115 {
16116 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16117 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesNV : nullptr;
16118 }
16119 if (!strcmp(name, "vkCompileDeferredNV"))
16120 {
16121 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
16122 return hasExt ? (void*)entry_vkCompileDeferredNV : nullptr;
16123 }
16124#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080016125#ifdef VK_EXT_external_memory_host
16126 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
16127 {
16128 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
16129 return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
16130 }
16131#endif
16132#ifdef VK_AMD_buffer_marker
16133 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
16134 {
16135 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
16136 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
16137 }
16138#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080016139#ifdef VK_EXT_calibrated_timestamps
16140 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
16141 {
16142 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
16143 return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
16144 }
16145 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
16146 {
16147 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
16148 return hasExt ? (void*)entry_vkGetCalibratedTimestampsEXT : nullptr;
16149 }
16150#endif
16151#ifdef VK_NV_mesh_shader
16152 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
16153 {
16154 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
16155 return hasExt ? (void*)entry_vkCmdDrawMeshTasksNV : nullptr;
16156 }
16157 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
16158 {
16159 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
16160 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectNV : nullptr;
16161 }
16162 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
16163 {
16164 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
16165 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountNV : nullptr;
16166 }
16167#endif
16168#ifdef VK_NV_scissor_exclusive
16169 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
16170 {
16171 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_scissor_exclusive");
16172 return hasExt ? (void*)entry_vkCmdSetExclusiveScissorNV : nullptr;
16173 }
16174#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080016175#ifdef VK_NV_device_diagnostic_checkpoints
16176 if (!strcmp(name, "vkCmdSetCheckpointNV"))
16177 {
16178 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
16179 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
16180 }
16181 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
16182 {
16183 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
16184 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
16185 }
16186#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080016187#ifdef VK_INTEL_performance_query
16188 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080016189 {
Yilong Lia8d45f12021-02-07 02:30:21 -080016190 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
16191 return hasExt ? (void*)entry_vkInitializePerformanceApiINTEL : nullptr;
16192 }
16193 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
16194 {
16195 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
16196 return hasExt ? (void*)entry_vkUninitializePerformanceApiINTEL : nullptr;
16197 }
16198 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
16199 {
16200 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
16201 return hasExt ? (void*)entry_vkCmdSetPerformanceMarkerINTEL : nullptr;
16202 }
16203 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
16204 {
16205 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
16206 return hasExt ? (void*)entry_vkCmdSetPerformanceStreamMarkerINTEL : nullptr;
16207 }
16208 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
16209 {
16210 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
16211 return hasExt ? (void*)entry_vkCmdSetPerformanceOverrideINTEL : nullptr;
16212 }
16213 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
16214 {
16215 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
16216 return hasExt ? (void*)entry_vkAcquirePerformanceConfigurationINTEL : nullptr;
16217 }
16218 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
16219 {
16220 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
16221 return hasExt ? (void*)entry_vkReleasePerformanceConfigurationINTEL : nullptr;
16222 }
16223 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
16224 {
16225 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
16226 return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
16227 }
16228 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
16229 {
16230 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
16231 return hasExt ? (void*)entry_vkGetPerformanceParameterINTEL : nullptr;
16232 }
16233#endif
16234#ifdef VK_AMD_display_native_hdr
16235 if (!strcmp(name, "vkSetLocalDimmingAMD"))
16236 {
16237 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr");
16238 return hasExt ? (void*)entry_vkSetLocalDimmingAMD : nullptr;
16239 }
16240#endif
16241#ifdef VK_FUCHSIA_imagepipe_surface
16242 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
16243 {
16244 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_imagepipe_surface");
16245 return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
16246 }
16247#endif
16248#ifdef VK_EXT_metal_surface
16249 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
16250 {
16251 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_metal_surface");
16252 return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080016253 }
16254#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080016255#ifdef VK_EXT_buffer_device_address
16256 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
16257 {
16258 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address");
16259 return hasExt ? (void*)entry_vkGetBufferDeviceAddressEXT : nullptr;
16260 }
16261#endif
16262#ifdef VK_EXT_tooling_info
16263 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
16264 {
16265 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_tooling_info");
16266 return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
16267 }
16268#endif
16269#ifdef VK_NV_cooperative_matrix
16270 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
16271 {
16272 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_cooperative_matrix");
16273 return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
16274 }
16275#endif
16276#ifdef VK_NV_coverage_reduction_mode
16277 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
16278 {
16279 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_coverage_reduction_mode");
16280 return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
16281 }
16282#endif
16283#ifdef VK_EXT_full_screen_exclusive
16284 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
16285 {
16286 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
16287 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
16288 }
16289 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
16290 {
16291 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
16292 return hasExt ? (void*)entry_vkAcquireFullScreenExclusiveModeEXT : nullptr;
16293 }
16294 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
16295 {
16296 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
16297 return hasExt ? (void*)entry_vkReleaseFullScreenExclusiveModeEXT : nullptr;
16298 }
16299 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
16300 {
16301 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
16302 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModes2EXT : nullptr;
16303 }
16304#endif
16305#ifdef VK_EXT_headless_surface
16306 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
16307 {
16308 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_headless_surface");
16309 return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
16310 }
16311#endif
16312#ifdef VK_EXT_line_rasterization
16313 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
16314 {
16315 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_line_rasterization");
16316 return hasExt ? (void*)entry_vkCmdSetLineStippleEXT : nullptr;
16317 }
16318#endif
16319#ifdef VK_EXT_host_query_reset
16320 if (!strcmp(name, "vkResetQueryPoolEXT"))
16321 {
16322 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_host_query_reset");
16323 return hasExt ? (void*)entry_vkResetQueryPoolEXT : nullptr;
16324 }
16325#endif
16326#ifdef VK_EXT_extended_dynamic_state
16327 if (!strcmp(name, "vkCmdSetCullModeEXT"))
16328 {
16329 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16330 return hasExt ? (void*)entry_vkCmdSetCullModeEXT : nullptr;
16331 }
16332 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
16333 {
16334 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16335 return hasExt ? (void*)entry_vkCmdSetFrontFaceEXT : nullptr;
16336 }
16337 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
16338 {
16339 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16340 return hasExt ? (void*)entry_vkCmdSetPrimitiveTopologyEXT : nullptr;
16341 }
16342 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
16343 {
16344 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16345 return hasExt ? (void*)entry_vkCmdSetViewportWithCountEXT : nullptr;
16346 }
16347 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
16348 {
16349 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16350 return hasExt ? (void*)entry_vkCmdSetScissorWithCountEXT : nullptr;
16351 }
16352 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
16353 {
16354 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16355 return hasExt ? (void*)entry_vkCmdBindVertexBuffers2EXT : nullptr;
16356 }
16357 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
16358 {
16359 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16360 return hasExt ? (void*)entry_vkCmdSetDepthTestEnableEXT : nullptr;
16361 }
16362 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
16363 {
16364 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16365 return hasExt ? (void*)entry_vkCmdSetDepthWriteEnableEXT : nullptr;
16366 }
16367 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
16368 {
16369 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16370 return hasExt ? (void*)entry_vkCmdSetDepthCompareOpEXT : nullptr;
16371 }
16372 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
16373 {
16374 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16375 return hasExt ? (void*)entry_vkCmdSetDepthBoundsTestEnableEXT : nullptr;
16376 }
16377 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
16378 {
16379 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16380 return hasExt ? (void*)entry_vkCmdSetStencilTestEnableEXT : nullptr;
16381 }
16382 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
16383 {
16384 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
16385 return hasExt ? (void*)entry_vkCmdSetStencilOpEXT : nullptr;
16386 }
16387#endif
16388#ifdef VK_NV_device_generated_commands
16389 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
16390 {
16391 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
16392 return hasExt ? (void*)entry_vkGetGeneratedCommandsMemoryRequirementsNV : nullptr;
16393 }
16394 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
16395 {
16396 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
16397 return hasExt ? (void*)entry_vkCmdPreprocessGeneratedCommandsNV : nullptr;
16398 }
16399 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
16400 {
16401 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
16402 return hasExt ? (void*)entry_vkCmdExecuteGeneratedCommandsNV : nullptr;
16403 }
16404 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
16405 {
16406 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
16407 return hasExt ? (void*)entry_vkCmdBindPipelineShaderGroupNV : nullptr;
16408 }
16409 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
16410 {
16411 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
16412 return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNV : nullptr;
16413 }
16414 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
16415 {
16416 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
16417 return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNV : nullptr;
16418 }
16419#endif
Yilong Li353409a2022-01-04 02:37:56 -080016420#ifdef VK_EXT_acquire_drm_display
16421 if (!strcmp(name, "vkAcquireDrmDisplayEXT"))
16422 {
16423 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_drm_display");
16424 return hasExt ? (void*)entry_vkAcquireDrmDisplayEXT : nullptr;
16425 }
16426 if (!strcmp(name, "vkGetDrmDisplayEXT"))
16427 {
16428 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_drm_display");
16429 return hasExt ? (void*)entry_vkGetDrmDisplayEXT : nullptr;
16430 }
16431#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080016432#ifdef VK_EXT_private_data
16433 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
16434 {
16435 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
16436 return hasExt ? (void*)entry_vkCreatePrivateDataSlotEXT : nullptr;
16437 }
16438 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
16439 {
16440 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
16441 return hasExt ? (void*)entry_vkDestroyPrivateDataSlotEXT : nullptr;
16442 }
16443 if (!strcmp(name, "vkSetPrivateDataEXT"))
16444 {
16445 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
16446 return hasExt ? (void*)entry_vkSetPrivateDataEXT : nullptr;
16447 }
16448 if (!strcmp(name, "vkGetPrivateDataEXT"))
16449 {
16450 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
16451 return hasExt ? (void*)entry_vkGetPrivateDataEXT : nullptr;
16452 }
16453#endif
16454#ifdef VK_NV_fragment_shading_rate_enums
16455 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
16456 {
16457 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_fragment_shading_rate_enums");
16458 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateEnumNV : nullptr;
16459 }
16460#endif
Yilong Li353409a2022-01-04 02:37:56 -080016461#ifdef VK_NV_acquire_winrt_display
16462 if (!strcmp(name, "vkAcquireWinrtDisplayNV"))
16463 {
16464 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_acquire_winrt_display");
16465 return hasExt ? (void*)entry_vkAcquireWinrtDisplayNV : nullptr;
16466 }
16467 if (!strcmp(name, "vkGetWinrtDisplayNV"))
16468 {
16469 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_acquire_winrt_display");
16470 return hasExt ? (void*)entry_vkGetWinrtDisplayNV : nullptr;
16471 }
16472#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080016473#ifdef VK_EXT_directfb_surface
16474 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
16475 {
16476 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
16477 return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
16478 }
16479 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
16480 {
16481 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
16482 return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
16483 }
16484#endif
Yilong Li353409a2022-01-04 02:37:56 -080016485#ifdef VK_EXT_vertex_input_dynamic_state
16486 if (!strcmp(name, "vkCmdSetVertexInputEXT"))
16487 {
16488 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_vertex_input_dynamic_state");
16489 return hasExt ? (void*)entry_vkCmdSetVertexInputEXT : nullptr;
16490 }
16491#endif
16492#ifdef VK_FUCHSIA_external_memory
16493 if (!strcmp(name, "vkGetMemoryZirconHandleFUCHSIA"))
16494 {
16495 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_external_memory");
16496 return hasExt ? (void*)entry_vkGetMemoryZirconHandleFUCHSIA : nullptr;
16497 }
16498 if (!strcmp(name, "vkGetMemoryZirconHandlePropertiesFUCHSIA"))
16499 {
16500 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_external_memory");
16501 return hasExt ? (void*)entry_vkGetMemoryZirconHandlePropertiesFUCHSIA : nullptr;
16502 }
16503#endif
16504#ifdef VK_FUCHSIA_external_semaphore
16505 if (!strcmp(name, "vkImportSemaphoreZirconHandleFUCHSIA"))
16506 {
16507 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_external_semaphore");
16508 return hasExt ? (void*)entry_vkImportSemaphoreZirconHandleFUCHSIA : nullptr;
16509 }
16510 if (!strcmp(name, "vkGetSemaphoreZirconHandleFUCHSIA"))
16511 {
16512 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_external_semaphore");
16513 return hasExt ? (void*)entry_vkGetSemaphoreZirconHandleFUCHSIA : nullptr;
16514 }
16515#endif
16516#ifdef VK_FUCHSIA_buffer_collection
16517 if (!strcmp(name, "vkCreateBufferCollectionFUCHSIA"))
16518 {
16519 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
16520 return hasExt ? (void*)entry_vkCreateBufferCollectionFUCHSIA : nullptr;
16521 }
16522 if (!strcmp(name, "vkSetBufferCollectionImageConstraintsFUCHSIA"))
16523 {
16524 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
16525 return hasExt ? (void*)entry_vkSetBufferCollectionImageConstraintsFUCHSIA : nullptr;
16526 }
16527 if (!strcmp(name, "vkSetBufferCollectionBufferConstraintsFUCHSIA"))
16528 {
16529 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
16530 return hasExt ? (void*)entry_vkSetBufferCollectionBufferConstraintsFUCHSIA : nullptr;
16531 }
16532 if (!strcmp(name, "vkDestroyBufferCollectionFUCHSIA"))
16533 {
16534 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
16535 return hasExt ? (void*)entry_vkDestroyBufferCollectionFUCHSIA : nullptr;
16536 }
16537 if (!strcmp(name, "vkGetBufferCollectionPropertiesFUCHSIA"))
16538 {
16539 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
16540 return hasExt ? (void*)entry_vkGetBufferCollectionPropertiesFUCHSIA : nullptr;
16541 }
16542#endif
16543#ifdef VK_HUAWEI_subpass_shading
16544 if (!strcmp(name, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI"))
16545 {
16546 bool hasExt = resources->hasDeviceExtension(device, "VK_HUAWEI_subpass_shading");
16547 return hasExt ? (void*)entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI : nullptr;
16548 }
16549 if (!strcmp(name, "vkCmdSubpassShadingHUAWEI"))
16550 {
16551 bool hasExt = resources->hasDeviceExtension(device, "VK_HUAWEI_subpass_shading");
16552 return hasExt ? (void*)entry_vkCmdSubpassShadingHUAWEI : nullptr;
16553 }
16554#endif
16555#ifdef VK_HUAWEI_invocation_mask
16556 if (!strcmp(name, "vkCmdBindInvocationMaskHUAWEI"))
16557 {
16558 bool hasExt = resources->hasDeviceExtension(device, "VK_HUAWEI_invocation_mask");
16559 return hasExt ? (void*)entry_vkCmdBindInvocationMaskHUAWEI : nullptr;
16560 }
16561#endif
16562#ifdef VK_NV_external_memory_rdma
16563 if (!strcmp(name, "vkGetMemoryRemoteAddressNV"))
16564 {
16565 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_rdma");
16566 return hasExt ? (void*)entry_vkGetMemoryRemoteAddressNV : nullptr;
16567 }
16568#endif
16569#ifdef VK_EXT_extended_dynamic_state2
16570 if (!strcmp(name, "vkCmdSetPatchControlPointsEXT"))
16571 {
16572 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
16573 return hasExt ? (void*)entry_vkCmdSetPatchControlPointsEXT : nullptr;
16574 }
16575 if (!strcmp(name, "vkCmdSetRasterizerDiscardEnableEXT"))
16576 {
16577 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
16578 return hasExt ? (void*)entry_vkCmdSetRasterizerDiscardEnableEXT : nullptr;
16579 }
16580 if (!strcmp(name, "vkCmdSetDepthBiasEnableEXT"))
16581 {
16582 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
16583 return hasExt ? (void*)entry_vkCmdSetDepthBiasEnableEXT : nullptr;
16584 }
16585 if (!strcmp(name, "vkCmdSetLogicOpEXT"))
16586 {
16587 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
16588 return hasExt ? (void*)entry_vkCmdSetLogicOpEXT : nullptr;
16589 }
16590 if (!strcmp(name, "vkCmdSetPrimitiveRestartEnableEXT"))
16591 {
16592 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
16593 return hasExt ? (void*)entry_vkCmdSetPrimitiveRestartEnableEXT : nullptr;
16594 }
16595#endif
16596#ifdef VK_QNX_screen_surface
16597 if (!strcmp(name, "vkCreateScreenSurfaceQNX"))
16598 {
16599 bool hasExt = resources->hasDeviceExtension(device, "VK_QNX_screen_surface");
16600 return hasExt ? (void*)entry_vkCreateScreenSurfaceQNX : nullptr;
16601 }
16602 if (!strcmp(name, "vkGetPhysicalDeviceScreenPresentationSupportQNX"))
16603 {
16604 bool hasExt = resources->hasDeviceExtension(device, "VK_QNX_screen_surface");
16605 return hasExt ? (void*)entry_vkGetPhysicalDeviceScreenPresentationSupportQNX : nullptr;
16606 }
16607#endif
16608#ifdef VK_EXT_color_write_enable
16609 if (!strcmp(name, "vkCmdSetColorWriteEnableEXT"))
16610 {
16611 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_color_write_enable");
16612 return hasExt ? (void*)entry_vkCmdSetColorWriteEnableEXT : nullptr;
16613 }
16614#endif
Yilong Li71c43c52021-02-10 02:50:43 -080016615#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -070016616 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
16617 {
16618 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
16619 return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
16620 }
16621 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
16622 {
16623 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
16624 return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
16625 }
Yilong Lia8d45f12021-02-07 02:30:21 -080016626 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
16627 {
Yilong Li71c43c52021-02-10 02:50:43 -080016628 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Yilong Lia8d45f12021-02-07 02:30:21 -080016629 return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
16630 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070016631 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
16632 {
Yilong Li71c43c52021-02-10 02:50:43 -080016633 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070016634 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
16635 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070016636 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
16637 {
Yilong Li71c43c52021-02-10 02:50:43 -080016638 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070016639 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
16640 }
16641 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
16642 {
Yilong Li71c43c52021-02-10 02:50:43 -080016643 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070016644 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
16645 }
16646 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
16647 {
Yilong Li71c43c52021-02-10 02:50:43 -080016648 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070016649 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
16650 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070016651 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
16652 {
Yilong Li71c43c52021-02-10 02:50:43 -080016653 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang39a276e2019-06-17 13:27:22 -070016654 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
16655 }
Lingfeng Yang87f11962019-06-27 16:28:53 +000016656 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
16657 {
Yilong Li71c43c52021-02-10 02:50:43 -080016658 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang87f11962019-06-27 16:28:53 +000016659 return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
16660 }
16661 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
16662 {
Yilong Li71c43c52021-02-10 02:50:43 -080016663 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang87f11962019-06-27 16:28:53 +000016664 return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
16665 }
Lingfeng Yang4c542412020-02-04 18:18:32 -080016666 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
16667 {
Yilong Li71c43c52021-02-10 02:50:43 -080016668 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang4c542412020-02-04 18:18:32 -080016669 return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
16670 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070016671 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
16672 {
Yilong Li71c43c52021-02-10 02:50:43 -080016673 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070016674 return hasExt ? (void*)entry_vkFreeMemorySyncGOOGLE : nullptr;
16675 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070016676 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
16677 {
Yilong Li71c43c52021-02-10 02:50:43 -080016678 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070016679 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
16680 }
16681 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
16682 {
Yilong Li71c43c52021-02-10 02:50:43 -080016683 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070016684 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
16685 }
16686 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
16687 {
Yilong Li71c43c52021-02-10 02:50:43 -080016688 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070016689 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
16690 }
16691 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
16692 {
Yilong Li71c43c52021-02-10 02:50:43 -080016693 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070016694 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
16695 }
Yilong Lia48b0102020-09-15 15:08:28 -070016696 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
16697 {
Yilong Li71c43c52021-02-10 02:50:43 -080016698 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Yilong Lia48b0102020-09-15 15:08:28 -070016699 return hasExt ? (void*)entry_vkGetLinearImageLayoutGOOGLE : nullptr;
16700 }
Yilong Lidcaf0672022-02-22 16:39:57 -080016701 if (!strcmp(name, "vkGetLinearImageLayout2GOOGLE"))
16702 {
16703 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
16704 return hasExt ? (void*)entry_vkGetLinearImageLayout2GOOGLE : nullptr;
16705 }
Lingfeng Yangded34672021-01-22 23:17:47 -080016706 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
16707 {
Yilong Li71c43c52021-02-10 02:50:43 -080016708 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangded34672021-01-22 23:17:47 -080016709 return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
16710 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080016711 if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
16712 {
16713 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
16714 return hasExt ? (void*)entry_vkQueueCommitDescriptorSetUpdatesGOOGLE : nullptr;
16715 }
16716 if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
16717 {
16718 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
16719 return hasExt ? (void*)entry_vkCollectDescriptorPoolIdsGOOGLE : nullptr;
16720 }
Lingfeng Yang5678e1e2021-07-15 12:28:05 -070016721 if (!strcmp(name, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE"))
16722 {
16723 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
16724 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE : nullptr;
16725 }
Lingfeng Yangded34672021-01-22 23:17:47 -080016726#endif
Yilong Li353409a2022-01-04 02:37:56 -080016727#ifdef VK_EXT_multi_draw
16728 if (!strcmp(name, "vkCmdDrawMultiEXT"))
16729 {
16730 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_multi_draw");
16731 return hasExt ? (void*)entry_vkCmdDrawMultiEXT : nullptr;
16732 }
16733 if (!strcmp(name, "vkCmdDrawMultiIndexedEXT"))
16734 {
16735 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_multi_draw");
16736 return hasExt ? (void*)entry_vkCmdDrawMultiIndexedEXT : nullptr;
16737 }
16738#endif
16739#ifdef VK_EXT_pageable_device_local_memory
16740 if (!strcmp(name, "vkSetDeviceMemoryPriorityEXT"))
16741 {
16742 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_pageable_device_local_memory");
16743 return hasExt ? (void*)entry_vkSetDeviceMemoryPriorityEXT : nullptr;
16744 }
16745#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080016746#ifdef VK_KHR_acceleration_structure
16747 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
16748 {
16749 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16750 return hasExt ? (void*)entry_vkCreateAccelerationStructureKHR : nullptr;
16751 }
16752 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
16753 {
16754 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16755 return hasExt ? (void*)entry_vkDestroyAccelerationStructureKHR : nullptr;
16756 }
16757 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
16758 {
16759 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16760 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresKHR : nullptr;
16761 }
16762 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
16763 {
16764 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16765 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresIndirectKHR : nullptr;
16766 }
16767 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
16768 {
16769 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16770 return hasExt ? (void*)entry_vkBuildAccelerationStructuresKHR : nullptr;
16771 }
16772 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
16773 {
16774 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16775 return hasExt ? (void*)entry_vkCopyAccelerationStructureKHR : nullptr;
16776 }
16777 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
16778 {
16779 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16780 return hasExt ? (void*)entry_vkCopyAccelerationStructureToMemoryKHR : nullptr;
16781 }
16782 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
16783 {
16784 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16785 return hasExt ? (void*)entry_vkCopyMemoryToAccelerationStructureKHR : nullptr;
16786 }
16787 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
16788 {
16789 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16790 return hasExt ? (void*)entry_vkWriteAccelerationStructuresPropertiesKHR : nullptr;
16791 }
16792 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
16793 {
16794 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16795 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureKHR : nullptr;
16796 }
16797 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
16798 {
16799 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16800 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureToMemoryKHR : nullptr;
16801 }
16802 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
16803 {
16804 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16805 return hasExt ? (void*)entry_vkCmdCopyMemoryToAccelerationStructureKHR : nullptr;
16806 }
16807 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
16808 {
16809 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16810 return hasExt ? (void*)entry_vkGetAccelerationStructureDeviceAddressKHR : nullptr;
16811 }
16812 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
16813 {
16814 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16815 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesKHR : nullptr;
16816 }
16817 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
16818 {
16819 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16820 return hasExt ? (void*)entry_vkGetDeviceAccelerationStructureCompatibilityKHR : nullptr;
16821 }
16822 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
16823 {
16824 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
16825 return hasExt ? (void*)entry_vkGetAccelerationStructureBuildSizesKHR : nullptr;
16826 }
16827#endif
16828#ifdef VK_KHR_ray_tracing_pipeline
16829 if (!strcmp(name, "vkCmdTraceRaysKHR"))
16830 {
16831 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
16832 return hasExt ? (void*)entry_vkCmdTraceRaysKHR : nullptr;
16833 }
16834 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
16835 {
16836 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
16837 return hasExt ? (void*)entry_vkCreateRayTracingPipelinesKHR : nullptr;
16838 }
16839 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
16840 {
16841 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
16842 return hasExt ? (void*)entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR : nullptr;
16843 }
16844 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
16845 {
16846 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
16847 return hasExt ? (void*)entry_vkCmdTraceRaysIndirectKHR : nullptr;
16848 }
16849 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
16850 {
16851 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
16852 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupStackSizeKHR : nullptr;
16853 }
16854 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
16855 {
16856 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
16857 return hasExt ? (void*)entry_vkCmdSetRayTracingPipelineStackSizeKHR : nullptr;
16858 }
16859#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080016860 return nullptr;
16861}
16862
16863} // namespace goldfish_vk