blob: a27e40ff5cafc314325cd5ad5736a123a14c3bdf [file] [log] [blame]
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001// Copyright (C) 2018 The Android Open Source Project
2// Copyright (C) 2018 Google Inc.
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16// Autogenerated module func_table
17// (impl) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
18// Please do not modify directly;
19// re-run android/scripts/generate-vulkan-sources.sh,
20// or directly from Python by defining:
21// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
22// CEREAL_OUTPUT_DIR: Where to put the generated sources.
23// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
24
25#include "func_table.h"
26
27
28#include "VkEncoder.h"
Lingfeng Yang239cd602021-01-22 22:57:35 -080029#include "../OpenglSystemCommon/HostConnection.h"
Lingfeng Yange9979522018-12-25 14:44:52 -080030#include "ResourceTracker.h"
Lingfeng Yang0b81df22018-11-05 21:40:30 -080031
Lingfeng Yang808a6312018-11-13 21:06:15 -080032#include "goldfish_vk_private_defs.h"
33
Lingfeng Yang2f51a332019-10-30 09:25:25 -070034#include <log/log.h>
35
Lingfeng Yang0b81df22018-11-05 21:40:30 -080036// Stuff we are not going to use but if included,
37// will cause compile errors. These are Android Vulkan
38// required extensions, but the approach will be to
39// implement them completely on the guest side.
40#undef VK_KHR_android_surface
Lingfeng Yang0b81df22018-11-05 21:40:30 -080041
42
43namespace goldfish_vk {
44
Lingfeng Yang2f51a332019-10-30 09:25:25 -070045static void sOnInvalidDynamicallyCheckedCall(const char* apiname, const char* neededFeature)
46{
47 ALOGE("invalid call to %s: %s not supported", apiname, neededFeature);
48 abort();
49}
Lingfeng Yang0b81df22018-11-05 21:40:30 -080050#ifdef VK_VERSION_1_0
51static VkResult entry_vkCreateInstance(
52 const VkInstanceCreateInfo* pCreateInfo,
53 const VkAllocationCallbacks* pAllocator,
54 VkInstance* pInstance)
55{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080056 AEMU_SCOPED_TRACE("vkCreateInstance");
Lingfeng Yang4f539502021-01-22 23:01:57 -080057 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -080058 VkResult vkCreateInstance_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080059 vkCreateInstance_VkResult_return = vkEnc->vkCreateInstance(pCreateInfo, pAllocator, pInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080060 return vkCreateInstance_VkResult_return;
61}
62static void entry_vkDestroyInstance(
63 VkInstance instance,
64 const VkAllocationCallbacks* pAllocator)
65{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080066 AEMU_SCOPED_TRACE("vkDestroyInstance");
Lingfeng Yang4f539502021-01-22 23:01:57 -080067 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080068 vkEnc->vkDestroyInstance(instance, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080069}
70static VkResult entry_vkEnumeratePhysicalDevices(
71 VkInstance instance,
72 uint32_t* pPhysicalDeviceCount,
73 VkPhysicalDevice* pPhysicalDevices)
74{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080075 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices");
Lingfeng Yang4f539502021-01-22 23:01:57 -080076 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -080077 VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
Lingfeng Yangb64ca452019-02-14 22:04:28 -080078 auto resources = ResourceTracker::get();
79 vkEnumeratePhysicalDevices_VkResult_return = resources->on_vkEnumeratePhysicalDevices(vkEnc, VK_SUCCESS, instance, pPhysicalDeviceCount, pPhysicalDevices);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080080 return vkEnumeratePhysicalDevices_VkResult_return;
81}
82static void entry_vkGetPhysicalDeviceFeatures(
83 VkPhysicalDevice physicalDevice,
84 VkPhysicalDeviceFeatures* pFeatures)
85{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080086 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -080087 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080088 vkEnc->vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080089}
90static void entry_vkGetPhysicalDeviceFormatProperties(
91 VkPhysicalDevice physicalDevice,
92 VkFormat format,
93 VkFormatProperties* pFormatProperties)
94{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080095 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -080096 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080097 vkEnc->vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080098}
99static VkResult entry_vkGetPhysicalDeviceImageFormatProperties(
100 VkPhysicalDevice physicalDevice,
101 VkFormat format,
102 VkImageType type,
103 VkImageTiling tiling,
104 VkImageUsageFlags usage,
105 VkImageCreateFlags flags,
106 VkImageFormatProperties* pImageFormatProperties)
107{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800108 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800109 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800110 VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800111 vkGetPhysicalDeviceImageFormatProperties_VkResult_return = vkEnc->vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800112 return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
113}
114static void entry_vkGetPhysicalDeviceProperties(
115 VkPhysicalDevice physicalDevice,
116 VkPhysicalDeviceProperties* pProperties)
117{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800118 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800119 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800120 vkEnc->vkGetPhysicalDeviceProperties(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800121}
122static void entry_vkGetPhysicalDeviceQueueFamilyProperties(
123 VkPhysicalDevice physicalDevice,
124 uint32_t* pQueueFamilyPropertyCount,
125 VkQueueFamilyProperties* pQueueFamilyProperties)
126{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800127 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800128 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800129 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800130}
131static void entry_vkGetPhysicalDeviceMemoryProperties(
132 VkPhysicalDevice physicalDevice,
133 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
134{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800135 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800136 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800137 vkEnc->vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800138}
139static PFN_vkVoidFunction entry_vkGetInstanceProcAddr(
140 VkInstance instance,
141 const char* pName)
142{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800143 AEMU_SCOPED_TRACE("vkGetInstanceProcAddr");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800144 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800145 PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800146 vkGetInstanceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetInstanceProcAddr(instance, pName, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800147 return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
148}
149static PFN_vkVoidFunction entry_vkGetDeviceProcAddr(
150 VkDevice device,
151 const char* pName)
152{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800153 AEMU_SCOPED_TRACE("vkGetDeviceProcAddr");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800154 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800155 PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800156 vkGetDeviceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetDeviceProcAddr(device, pName, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800157 return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
158}
159static VkResult entry_vkCreateDevice(
160 VkPhysicalDevice physicalDevice,
161 const VkDeviceCreateInfo* pCreateInfo,
162 const VkAllocationCallbacks* pAllocator,
163 VkDevice* pDevice)
164{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800165 AEMU_SCOPED_TRACE("vkCreateDevice");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800166 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800167 VkResult vkCreateDevice_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800168 vkCreateDevice_VkResult_return = vkEnc->vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800169 return vkCreateDevice_VkResult_return;
170}
171static void entry_vkDestroyDevice(
172 VkDevice device,
173 const VkAllocationCallbacks* pAllocator)
174{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800175 AEMU_SCOPED_TRACE("vkDestroyDevice");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800176 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800177 vkEnc->vkDestroyDevice(device, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800178}
179static VkResult entry_vkEnumerateInstanceExtensionProperties(
180 const char* pLayerName,
181 uint32_t* pPropertyCount,
182 VkExtensionProperties* pProperties)
183{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800184 AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800185 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800186 VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -0800187 auto resources = ResourceTracker::get();
188 vkEnumerateInstanceExtensionProperties_VkResult_return = resources->on_vkEnumerateInstanceExtensionProperties(vkEnc, VK_SUCCESS, pLayerName, pPropertyCount, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800189 return vkEnumerateInstanceExtensionProperties_VkResult_return;
190}
191static VkResult entry_vkEnumerateDeviceExtensionProperties(
192 VkPhysicalDevice physicalDevice,
193 const char* pLayerName,
194 uint32_t* pPropertyCount,
195 VkExtensionProperties* pProperties)
196{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800197 AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800198 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800199 VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -0800200 auto resources = ResourceTracker::get();
201 vkEnumerateDeviceExtensionProperties_VkResult_return = resources->on_vkEnumerateDeviceExtensionProperties(vkEnc, VK_SUCCESS, physicalDevice, pLayerName, pPropertyCount, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800202 return vkEnumerateDeviceExtensionProperties_VkResult_return;
203}
204static VkResult entry_vkEnumerateInstanceLayerProperties(
205 uint32_t* pPropertyCount,
206 VkLayerProperties* pProperties)
207{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800208 AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800209 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800210 VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800211 vkEnumerateInstanceLayerProperties_VkResult_return = vkEnc->vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800212 return vkEnumerateInstanceLayerProperties_VkResult_return;
213}
214static VkResult entry_vkEnumerateDeviceLayerProperties(
215 VkPhysicalDevice physicalDevice,
216 uint32_t* pPropertyCount,
217 VkLayerProperties* pProperties)
218{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800219 AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800220 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800221 VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800222 vkEnumerateDeviceLayerProperties_VkResult_return = vkEnc->vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800223 return vkEnumerateDeviceLayerProperties_VkResult_return;
224}
225static void entry_vkGetDeviceQueue(
226 VkDevice device,
227 uint32_t queueFamilyIndex,
228 uint32_t queueIndex,
229 VkQueue* pQueue)
230{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800231 AEMU_SCOPED_TRACE("vkGetDeviceQueue");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800232 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800233 vkEnc->vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800234}
235static VkResult entry_vkQueueSubmit(
236 VkQueue queue,
237 uint32_t submitCount,
238 const VkSubmitInfo* pSubmits,
239 VkFence fence)
240{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800241 AEMU_SCOPED_TRACE("vkQueueSubmit");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800242 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800243 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
David Reveman24710222019-02-25 02:21:42 -0500244 auto resources = ResourceTracker::get();
245 vkQueueSubmit_VkResult_return = resources->on_vkQueueSubmit(vkEnc, VK_SUCCESS, queue, submitCount, pSubmits, fence);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800246 return vkQueueSubmit_VkResult_return;
247}
248static VkResult entry_vkQueueWaitIdle(
249 VkQueue queue)
250{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800251 AEMU_SCOPED_TRACE("vkQueueWaitIdle");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800252 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800253 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700254 auto resources = ResourceTracker::get();
255 vkQueueWaitIdle_VkResult_return = resources->on_vkQueueWaitIdle(vkEnc, VK_SUCCESS, queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800256 return vkQueueWaitIdle_VkResult_return;
257}
258static VkResult entry_vkDeviceWaitIdle(
259 VkDevice device)
260{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800261 AEMU_SCOPED_TRACE("vkDeviceWaitIdle");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800262 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800263 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800264 vkDeviceWaitIdle_VkResult_return = vkEnc->vkDeviceWaitIdle(device, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800265 return vkDeviceWaitIdle_VkResult_return;
266}
267static VkResult entry_vkAllocateMemory(
268 VkDevice device,
269 const VkMemoryAllocateInfo* pAllocateInfo,
270 const VkAllocationCallbacks* pAllocator,
271 VkDeviceMemory* pMemory)
272{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800273 AEMU_SCOPED_TRACE("vkAllocateMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800274 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800275 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
Lingfeng Yange9979522018-12-25 14:44:52 -0800276 auto resources = ResourceTracker::get();
277 vkAllocateMemory_VkResult_return = resources->on_vkAllocateMemory(vkEnc, VK_SUCCESS, device, pAllocateInfo, pAllocator, pMemory);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800278 return vkAllocateMemory_VkResult_return;
279}
280static void entry_vkFreeMemory(
281 VkDevice device,
282 VkDeviceMemory memory,
283 const VkAllocationCallbacks* pAllocator)
284{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800285 AEMU_SCOPED_TRACE("vkFreeMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800286 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yange9979522018-12-25 14:44:52 -0800287 auto resources = ResourceTracker::get();
288 resources->on_vkFreeMemory(vkEnc, device, memory, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800289}
290static VkResult entry_vkMapMemory(
291 VkDevice device,
292 VkDeviceMemory memory,
293 VkDeviceSize offset,
294 VkDeviceSize size,
295 VkMemoryMapFlags flags,
296 void** ppData)
297{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800298 AEMU_SCOPED_TRACE("vkMapMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800299 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800300 VkResult vkMapMemory_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800301 vkMapMemory_VkResult_return = vkEnc->vkMapMemory(device, memory, offset, size, flags, ppData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800302 return vkMapMemory_VkResult_return;
303}
304static void entry_vkUnmapMemory(
305 VkDevice device,
306 VkDeviceMemory memory)
307{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800308 AEMU_SCOPED_TRACE("vkUnmapMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800309 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800310 vkEnc->vkUnmapMemory(device, memory, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800311}
312static VkResult entry_vkFlushMappedMemoryRanges(
313 VkDevice device,
314 uint32_t memoryRangeCount,
315 const VkMappedMemoryRange* pMemoryRanges)
316{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800317 AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800318 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800319 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800320 vkFlushMappedMemoryRanges_VkResult_return = vkEnc->vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800321 return vkFlushMappedMemoryRanges_VkResult_return;
322}
323static VkResult entry_vkInvalidateMappedMemoryRanges(
324 VkDevice device,
325 uint32_t memoryRangeCount,
326 const VkMappedMemoryRange* pMemoryRanges)
327{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800328 AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800329 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800330 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800331 vkInvalidateMappedMemoryRanges_VkResult_return = vkEnc->vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800332 return vkInvalidateMappedMemoryRanges_VkResult_return;
333}
334static void entry_vkGetDeviceMemoryCommitment(
335 VkDevice device,
336 VkDeviceMemory memory,
337 VkDeviceSize* pCommittedMemoryInBytes)
338{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800339 AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800340 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800341 vkEnc->vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800342}
343static VkResult entry_vkBindBufferMemory(
344 VkDevice device,
345 VkBuffer buffer,
346 VkDeviceMemory memory,
347 VkDeviceSize memoryOffset)
348{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800349 AEMU_SCOPED_TRACE("vkBindBufferMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800350 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800351 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800352 auto resources = ResourceTracker::get();
353 vkBindBufferMemory_VkResult_return = resources->on_vkBindBufferMemory(vkEnc, VK_SUCCESS, device, buffer, memory, memoryOffset);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800354 return vkBindBufferMemory_VkResult_return;
355}
356static VkResult entry_vkBindImageMemory(
357 VkDevice device,
358 VkImage image,
359 VkDeviceMemory memory,
360 VkDeviceSize memoryOffset)
361{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800362 AEMU_SCOPED_TRACE("vkBindImageMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800363 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800364 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800365 auto resources = ResourceTracker::get();
366 vkBindImageMemory_VkResult_return = resources->on_vkBindImageMemory(vkEnc, VK_SUCCESS, device, image, memory, memoryOffset);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800367 return vkBindImageMemory_VkResult_return;
368}
369static void entry_vkGetBufferMemoryRequirements(
370 VkDevice device,
371 VkBuffer buffer,
372 VkMemoryRequirements* pMemoryRequirements)
373{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800374 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800375 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800376 auto resources = ResourceTracker::get();
377 resources->on_vkGetBufferMemoryRequirements(vkEnc, device, buffer, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800378}
379static void entry_vkGetImageMemoryRequirements(
380 VkDevice device,
381 VkImage image,
382 VkMemoryRequirements* pMemoryRequirements)
383{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800384 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800385 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800386 auto resources = ResourceTracker::get();
387 resources->on_vkGetImageMemoryRequirements(vkEnc, device, image, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800388}
389static void entry_vkGetImageSparseMemoryRequirements(
390 VkDevice device,
391 VkImage image,
392 uint32_t* pSparseMemoryRequirementCount,
393 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
394{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800395 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800396 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800397 vkEnc->vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800398}
399static void entry_vkGetPhysicalDeviceSparseImageFormatProperties(
400 VkPhysicalDevice physicalDevice,
401 VkFormat format,
402 VkImageType type,
403 VkSampleCountFlagBits samples,
404 VkImageUsageFlags usage,
405 VkImageTiling tiling,
406 uint32_t* pPropertyCount,
407 VkSparseImageFormatProperties* pProperties)
408{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800409 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800410 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800411 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800412}
413static VkResult entry_vkQueueBindSparse(
414 VkQueue queue,
415 uint32_t bindInfoCount,
416 const VkBindSparseInfo* pBindInfo,
417 VkFence fence)
418{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800419 AEMU_SCOPED_TRACE("vkQueueBindSparse");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800420 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800421 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800422 vkQueueBindSparse_VkResult_return = vkEnc->vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800423 return vkQueueBindSparse_VkResult_return;
424}
425static VkResult entry_vkCreateFence(
426 VkDevice device,
427 const VkFenceCreateInfo* pCreateInfo,
428 const VkAllocationCallbacks* pAllocator,
429 VkFence* pFence)
430{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800431 AEMU_SCOPED_TRACE("vkCreateFence");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800432 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800433 VkResult vkCreateFence_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700434 auto resources = ResourceTracker::get();
435 vkCreateFence_VkResult_return = resources->on_vkCreateFence(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pFence);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800436 return vkCreateFence_VkResult_return;
437}
438static void entry_vkDestroyFence(
439 VkDevice device,
440 VkFence fence,
441 const VkAllocationCallbacks* pAllocator)
442{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800443 AEMU_SCOPED_TRACE("vkDestroyFence");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800444 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800445 vkEnc->vkDestroyFence(device, fence, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800446}
447static VkResult entry_vkResetFences(
448 VkDevice device,
449 uint32_t fenceCount,
450 const VkFence* pFences)
451{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800452 AEMU_SCOPED_TRACE("vkResetFences");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800453 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800454 VkResult vkResetFences_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700455 auto resources = ResourceTracker::get();
456 vkResetFences_VkResult_return = resources->on_vkResetFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800457 return vkResetFences_VkResult_return;
458}
459static VkResult entry_vkGetFenceStatus(
460 VkDevice device,
461 VkFence fence)
462{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800463 AEMU_SCOPED_TRACE("vkGetFenceStatus");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800464 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800465 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800466 vkGetFenceStatus_VkResult_return = vkEnc->vkGetFenceStatus(device, fence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800467 return vkGetFenceStatus_VkResult_return;
468}
469static VkResult entry_vkWaitForFences(
470 VkDevice device,
471 uint32_t fenceCount,
472 const VkFence* pFences,
473 VkBool32 waitAll,
474 uint64_t timeout)
475{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800476 AEMU_SCOPED_TRACE("vkWaitForFences");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800477 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800478 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700479 auto resources = ResourceTracker::get();
480 vkWaitForFences_VkResult_return = resources->on_vkWaitForFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences, waitAll, timeout);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800481 return vkWaitForFences_VkResult_return;
482}
483static VkResult entry_vkCreateSemaphore(
484 VkDevice device,
485 const VkSemaphoreCreateInfo* pCreateInfo,
486 const VkAllocationCallbacks* pAllocator,
487 VkSemaphore* pSemaphore)
488{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800489 AEMU_SCOPED_TRACE("vkCreateSemaphore");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800490 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800491 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
David Reveman32b110e2019-02-21 13:20:54 -0500492 auto resources = ResourceTracker::get();
493 vkCreateSemaphore_VkResult_return = resources->on_vkCreateSemaphore(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSemaphore);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800494 return vkCreateSemaphore_VkResult_return;
495}
496static void entry_vkDestroySemaphore(
497 VkDevice device,
498 VkSemaphore semaphore,
499 const VkAllocationCallbacks* pAllocator)
500{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800501 AEMU_SCOPED_TRACE("vkDestroySemaphore");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800502 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
David Reveman32b110e2019-02-21 13:20:54 -0500503 auto resources = ResourceTracker::get();
504 resources->on_vkDestroySemaphore(vkEnc, device, semaphore, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800505}
506static VkResult entry_vkCreateEvent(
507 VkDevice device,
508 const VkEventCreateInfo* pCreateInfo,
509 const VkAllocationCallbacks* pAllocator,
510 VkEvent* pEvent)
511{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800512 AEMU_SCOPED_TRACE("vkCreateEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800513 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800514 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800515 vkCreateEvent_VkResult_return = vkEnc->vkCreateEvent(device, pCreateInfo, pAllocator, pEvent, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800516 return vkCreateEvent_VkResult_return;
517}
518static void entry_vkDestroyEvent(
519 VkDevice device,
520 VkEvent event,
521 const VkAllocationCallbacks* pAllocator)
522{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800523 AEMU_SCOPED_TRACE("vkDestroyEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800524 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800525 vkEnc->vkDestroyEvent(device, event, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800526}
527static VkResult entry_vkGetEventStatus(
528 VkDevice device,
529 VkEvent event)
530{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800531 AEMU_SCOPED_TRACE("vkGetEventStatus");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800532 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800533 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800534 vkGetEventStatus_VkResult_return = vkEnc->vkGetEventStatus(device, event, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800535 return vkGetEventStatus_VkResult_return;
536}
537static VkResult entry_vkSetEvent(
538 VkDevice device,
539 VkEvent event)
540{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800541 AEMU_SCOPED_TRACE("vkSetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800542 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800543 VkResult vkSetEvent_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800544 vkSetEvent_VkResult_return = vkEnc->vkSetEvent(device, event, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800545 return vkSetEvent_VkResult_return;
546}
547static VkResult entry_vkResetEvent(
548 VkDevice device,
549 VkEvent event)
550{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800551 AEMU_SCOPED_TRACE("vkResetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800552 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800553 VkResult vkResetEvent_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800554 vkResetEvent_VkResult_return = vkEnc->vkResetEvent(device, event, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800555 return vkResetEvent_VkResult_return;
556}
557static VkResult entry_vkCreateQueryPool(
558 VkDevice device,
559 const VkQueryPoolCreateInfo* pCreateInfo,
560 const VkAllocationCallbacks* pAllocator,
561 VkQueryPool* pQueryPool)
562{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800563 AEMU_SCOPED_TRACE("vkCreateQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800564 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800565 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800566 vkCreateQueryPool_VkResult_return = vkEnc->vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800567 return vkCreateQueryPool_VkResult_return;
568}
569static void entry_vkDestroyQueryPool(
570 VkDevice device,
571 VkQueryPool queryPool,
572 const VkAllocationCallbacks* pAllocator)
573{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800574 AEMU_SCOPED_TRACE("vkDestroyQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800575 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800576 vkEnc->vkDestroyQueryPool(device, queryPool, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800577}
578static VkResult entry_vkGetQueryPoolResults(
579 VkDevice device,
580 VkQueryPool queryPool,
581 uint32_t firstQuery,
582 uint32_t queryCount,
583 size_t dataSize,
584 void* pData,
585 VkDeviceSize stride,
586 VkQueryResultFlags flags)
587{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800588 AEMU_SCOPED_TRACE("vkGetQueryPoolResults");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800589 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800590 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800591 vkGetQueryPoolResults_VkResult_return = vkEnc->vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800592 return vkGetQueryPoolResults_VkResult_return;
593}
594static VkResult entry_vkCreateBuffer(
595 VkDevice device,
596 const VkBufferCreateInfo* pCreateInfo,
597 const VkAllocationCallbacks* pAllocator,
598 VkBuffer* pBuffer)
599{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800600 AEMU_SCOPED_TRACE("vkCreateBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800601 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800602 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800603 auto resources = ResourceTracker::get();
604 vkCreateBuffer_VkResult_return = resources->on_vkCreateBuffer(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800605 return vkCreateBuffer_VkResult_return;
606}
607static void entry_vkDestroyBuffer(
608 VkDevice device,
609 VkBuffer buffer,
610 const VkAllocationCallbacks* pAllocator)
611{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800612 AEMU_SCOPED_TRACE("vkDestroyBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800613 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800614 auto resources = ResourceTracker::get();
615 resources->on_vkDestroyBuffer(vkEnc, device, buffer, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800616}
617static VkResult entry_vkCreateBufferView(
618 VkDevice device,
619 const VkBufferViewCreateInfo* pCreateInfo,
620 const VkAllocationCallbacks* pAllocator,
621 VkBufferView* pView)
622{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800623 AEMU_SCOPED_TRACE("vkCreateBufferView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800624 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800625 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800626 vkCreateBufferView_VkResult_return = vkEnc->vkCreateBufferView(device, pCreateInfo, pAllocator, pView, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800627 return vkCreateBufferView_VkResult_return;
628}
629static void entry_vkDestroyBufferView(
630 VkDevice device,
631 VkBufferView bufferView,
632 const VkAllocationCallbacks* pAllocator)
633{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800634 AEMU_SCOPED_TRACE("vkDestroyBufferView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800635 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800636 vkEnc->vkDestroyBufferView(device, bufferView, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800637}
638static VkResult entry_vkCreateImage(
639 VkDevice device,
640 const VkImageCreateInfo* pCreateInfo,
641 const VkAllocationCallbacks* pAllocator,
642 VkImage* pImage)
643{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800644 AEMU_SCOPED_TRACE("vkCreateImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800645 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800646 VkResult vkCreateImage_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800647 auto resources = ResourceTracker::get();
648 vkCreateImage_VkResult_return = resources->on_vkCreateImage(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pImage);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800649 return vkCreateImage_VkResult_return;
650}
651static void entry_vkDestroyImage(
652 VkDevice device,
653 VkImage image,
654 const VkAllocationCallbacks* pAllocator)
655{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800656 AEMU_SCOPED_TRACE("vkDestroyImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800657 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800658 auto resources = ResourceTracker::get();
659 resources->on_vkDestroyImage(vkEnc, device, image, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800660}
661static void entry_vkGetImageSubresourceLayout(
662 VkDevice device,
663 VkImage image,
664 const VkImageSubresource* pSubresource,
665 VkSubresourceLayout* pLayout)
666{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800667 AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800668 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800669 vkEnc->vkGetImageSubresourceLayout(device, image, pSubresource, pLayout, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800670}
671static VkResult entry_vkCreateImageView(
672 VkDevice device,
673 const VkImageViewCreateInfo* pCreateInfo,
674 const VkAllocationCallbacks* pAllocator,
675 VkImageView* pView)
676{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800677 AEMU_SCOPED_TRACE("vkCreateImageView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800678 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800679 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
Roman Kiryanov6db11e52019-04-26 14:18:14 -0700680 auto resources = ResourceTracker::get();
681 vkCreateImageView_VkResult_return = resources->on_vkCreateImageView(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pView);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800682 return vkCreateImageView_VkResult_return;
683}
684static void entry_vkDestroyImageView(
685 VkDevice device,
686 VkImageView imageView,
687 const VkAllocationCallbacks* pAllocator)
688{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800689 AEMU_SCOPED_TRACE("vkDestroyImageView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800690 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800691 vkEnc->vkDestroyImageView(device, imageView, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800692}
693static VkResult entry_vkCreateShaderModule(
694 VkDevice device,
695 const VkShaderModuleCreateInfo* pCreateInfo,
696 const VkAllocationCallbacks* pAllocator,
697 VkShaderModule* pShaderModule)
698{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800699 AEMU_SCOPED_TRACE("vkCreateShaderModule");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800700 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800701 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800702 vkCreateShaderModule_VkResult_return = vkEnc->vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800703 return vkCreateShaderModule_VkResult_return;
704}
705static void entry_vkDestroyShaderModule(
706 VkDevice device,
707 VkShaderModule shaderModule,
708 const VkAllocationCallbacks* pAllocator)
709{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800710 AEMU_SCOPED_TRACE("vkDestroyShaderModule");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800711 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800712 vkEnc->vkDestroyShaderModule(device, shaderModule, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800713}
714static VkResult entry_vkCreatePipelineCache(
715 VkDevice device,
716 const VkPipelineCacheCreateInfo* pCreateInfo,
717 const VkAllocationCallbacks* pAllocator,
718 VkPipelineCache* pPipelineCache)
719{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800720 AEMU_SCOPED_TRACE("vkCreatePipelineCache");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800721 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800722 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800723 vkCreatePipelineCache_VkResult_return = vkEnc->vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800724 return vkCreatePipelineCache_VkResult_return;
725}
726static void entry_vkDestroyPipelineCache(
727 VkDevice device,
728 VkPipelineCache pipelineCache,
729 const VkAllocationCallbacks* pAllocator)
730{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800731 AEMU_SCOPED_TRACE("vkDestroyPipelineCache");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800732 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800733 vkEnc->vkDestroyPipelineCache(device, pipelineCache, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800734}
735static VkResult entry_vkGetPipelineCacheData(
736 VkDevice device,
737 VkPipelineCache pipelineCache,
738 size_t* pDataSize,
739 void* pData)
740{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800741 AEMU_SCOPED_TRACE("vkGetPipelineCacheData");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800742 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800743 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800744 vkGetPipelineCacheData_VkResult_return = vkEnc->vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800745 return vkGetPipelineCacheData_VkResult_return;
746}
747static VkResult entry_vkMergePipelineCaches(
748 VkDevice device,
749 VkPipelineCache dstCache,
750 uint32_t srcCacheCount,
751 const VkPipelineCache* pSrcCaches)
752{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800753 AEMU_SCOPED_TRACE("vkMergePipelineCaches");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800754 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800755 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800756 vkMergePipelineCaches_VkResult_return = vkEnc->vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800757 return vkMergePipelineCaches_VkResult_return;
758}
759static VkResult entry_vkCreateGraphicsPipelines(
760 VkDevice device,
761 VkPipelineCache pipelineCache,
762 uint32_t createInfoCount,
763 const VkGraphicsPipelineCreateInfo* pCreateInfos,
764 const VkAllocationCallbacks* pAllocator,
765 VkPipeline* pPipelines)
766{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800767 AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800768 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800769 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800770 vkCreateGraphicsPipelines_VkResult_return = vkEnc->vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800771 return vkCreateGraphicsPipelines_VkResult_return;
772}
773static VkResult entry_vkCreateComputePipelines(
774 VkDevice device,
775 VkPipelineCache pipelineCache,
776 uint32_t createInfoCount,
777 const VkComputePipelineCreateInfo* pCreateInfos,
778 const VkAllocationCallbacks* pAllocator,
779 VkPipeline* pPipelines)
780{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800781 AEMU_SCOPED_TRACE("vkCreateComputePipelines");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800782 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800783 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800784 vkCreateComputePipelines_VkResult_return = vkEnc->vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800785 return vkCreateComputePipelines_VkResult_return;
786}
787static void entry_vkDestroyPipeline(
788 VkDevice device,
789 VkPipeline pipeline,
790 const VkAllocationCallbacks* pAllocator)
791{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800792 AEMU_SCOPED_TRACE("vkDestroyPipeline");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800793 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800794 vkEnc->vkDestroyPipeline(device, pipeline, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800795}
796static VkResult entry_vkCreatePipelineLayout(
797 VkDevice device,
798 const VkPipelineLayoutCreateInfo* pCreateInfo,
799 const VkAllocationCallbacks* pAllocator,
800 VkPipelineLayout* pPipelineLayout)
801{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800802 AEMU_SCOPED_TRACE("vkCreatePipelineLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800803 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800804 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800805 vkCreatePipelineLayout_VkResult_return = vkEnc->vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800806 return vkCreatePipelineLayout_VkResult_return;
807}
808static void entry_vkDestroyPipelineLayout(
809 VkDevice device,
810 VkPipelineLayout pipelineLayout,
811 const VkAllocationCallbacks* pAllocator)
812{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800813 AEMU_SCOPED_TRACE("vkDestroyPipelineLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800814 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800815 vkEnc->vkDestroyPipelineLayout(device, pipelineLayout, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800816}
817static VkResult entry_vkCreateSampler(
818 VkDevice device,
819 const VkSamplerCreateInfo* pCreateInfo,
820 const VkAllocationCallbacks* pAllocator,
821 VkSampler* pSampler)
822{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800823 AEMU_SCOPED_TRACE("vkCreateSampler");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800824 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800825 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
Roman Kiryanov004f48c2019-06-28 14:59:32 -0700826 auto resources = ResourceTracker::get();
827 vkCreateSampler_VkResult_return = resources->on_vkCreateSampler(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSampler);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800828 return vkCreateSampler_VkResult_return;
829}
830static void entry_vkDestroySampler(
831 VkDevice device,
832 VkSampler sampler,
833 const VkAllocationCallbacks* pAllocator)
834{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800835 AEMU_SCOPED_TRACE("vkDestroySampler");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800836 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800837 vkEnc->vkDestroySampler(device, sampler, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800838}
839static VkResult entry_vkCreateDescriptorSetLayout(
840 VkDevice device,
841 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
842 const VkAllocationCallbacks* pAllocator,
843 VkDescriptorSetLayout* pSetLayout)
844{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800845 AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800846 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800847 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
Lingfeng Yang03354c72020-03-26 13:00:51 -0700848 auto resources = ResourceTracker::get();
849 vkCreateDescriptorSetLayout_VkResult_return = resources->on_vkCreateDescriptorSetLayout(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSetLayout);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800850 return vkCreateDescriptorSetLayout_VkResult_return;
851}
852static void entry_vkDestroyDescriptorSetLayout(
853 VkDevice device,
854 VkDescriptorSetLayout descriptorSetLayout,
855 const VkAllocationCallbacks* pAllocator)
856{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800857 AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800858 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang55676e02021-02-08 08:39:45 -0800859 auto resources = ResourceTracker::get();
860 resources->on_vkDestroyDescriptorSetLayout(vkEnc, device, descriptorSetLayout, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800861}
862static VkResult entry_vkCreateDescriptorPool(
863 VkDevice device,
864 const VkDescriptorPoolCreateInfo* pCreateInfo,
865 const VkAllocationCallbacks* pAllocator,
866 VkDescriptorPool* pDescriptorPool)
867{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800868 AEMU_SCOPED_TRACE("vkCreateDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800869 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800870 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700871 auto resources = ResourceTracker::get();
872 vkCreateDescriptorPool_VkResult_return = resources->on_vkCreateDescriptorPool(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pDescriptorPool);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800873 return vkCreateDescriptorPool_VkResult_return;
874}
875static void entry_vkDestroyDescriptorPool(
876 VkDevice device,
877 VkDescriptorPool descriptorPool,
878 const VkAllocationCallbacks* pAllocator)
879{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800880 AEMU_SCOPED_TRACE("vkDestroyDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800881 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700882 auto resources = ResourceTracker::get();
883 resources->on_vkDestroyDescriptorPool(vkEnc, device, descriptorPool, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800884}
885static VkResult entry_vkResetDescriptorPool(
886 VkDevice device,
887 VkDescriptorPool descriptorPool,
888 VkDescriptorPoolResetFlags flags)
889{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800890 AEMU_SCOPED_TRACE("vkResetDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800891 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800892 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700893 auto resources = ResourceTracker::get();
894 vkResetDescriptorPool_VkResult_return = resources->on_vkResetDescriptorPool(vkEnc, VK_SUCCESS, device, descriptorPool, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800895 return vkResetDescriptorPool_VkResult_return;
896}
897static VkResult entry_vkAllocateDescriptorSets(
898 VkDevice device,
899 const VkDescriptorSetAllocateInfo* pAllocateInfo,
900 VkDescriptorSet* pDescriptorSets)
901{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800902 AEMU_SCOPED_TRACE("vkAllocateDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800903 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800904 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700905 auto resources = ResourceTracker::get();
906 vkAllocateDescriptorSets_VkResult_return = resources->on_vkAllocateDescriptorSets(vkEnc, VK_SUCCESS, device, pAllocateInfo, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800907 return vkAllocateDescriptorSets_VkResult_return;
908}
909static VkResult entry_vkFreeDescriptorSets(
910 VkDevice device,
911 VkDescriptorPool descriptorPool,
912 uint32_t descriptorSetCount,
913 const VkDescriptorSet* pDescriptorSets)
914{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800915 AEMU_SCOPED_TRACE("vkFreeDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800916 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800917 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700918 auto resources = ResourceTracker::get();
919 vkFreeDescriptorSets_VkResult_return = resources->on_vkFreeDescriptorSets(vkEnc, VK_SUCCESS, device, descriptorPool, descriptorSetCount, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800920 return vkFreeDescriptorSets_VkResult_return;
921}
922static void entry_vkUpdateDescriptorSets(
923 VkDevice device,
924 uint32_t descriptorWriteCount,
925 const VkWriteDescriptorSet* pDescriptorWrites,
926 uint32_t descriptorCopyCount,
927 const VkCopyDescriptorSet* pDescriptorCopies)
928{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800929 AEMU_SCOPED_TRACE("vkUpdateDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800930 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang03354c72020-03-26 13:00:51 -0700931 auto resources = ResourceTracker::get();
932 resources->on_vkUpdateDescriptorSets(vkEnc, device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800933}
934static VkResult entry_vkCreateFramebuffer(
935 VkDevice device,
936 const VkFramebufferCreateInfo* pCreateInfo,
937 const VkAllocationCallbacks* pAllocator,
938 VkFramebuffer* pFramebuffer)
939{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800940 AEMU_SCOPED_TRACE("vkCreateFramebuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800941 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800942 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800943 vkCreateFramebuffer_VkResult_return = vkEnc->vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800944 return vkCreateFramebuffer_VkResult_return;
945}
946static void entry_vkDestroyFramebuffer(
947 VkDevice device,
948 VkFramebuffer framebuffer,
949 const VkAllocationCallbacks* pAllocator)
950{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800951 AEMU_SCOPED_TRACE("vkDestroyFramebuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800952 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800953 vkEnc->vkDestroyFramebuffer(device, framebuffer, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800954}
955static VkResult entry_vkCreateRenderPass(
956 VkDevice device,
957 const VkRenderPassCreateInfo* pCreateInfo,
958 const VkAllocationCallbacks* pAllocator,
959 VkRenderPass* pRenderPass)
960{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800961 AEMU_SCOPED_TRACE("vkCreateRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800962 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800963 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800964 vkCreateRenderPass_VkResult_return = vkEnc->vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800965 return vkCreateRenderPass_VkResult_return;
966}
967static void entry_vkDestroyRenderPass(
968 VkDevice device,
969 VkRenderPass renderPass,
970 const VkAllocationCallbacks* pAllocator)
971{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800972 AEMU_SCOPED_TRACE("vkDestroyRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800973 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800974 vkEnc->vkDestroyRenderPass(device, renderPass, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800975}
976static void entry_vkGetRenderAreaGranularity(
977 VkDevice device,
978 VkRenderPass renderPass,
979 VkExtent2D* pGranularity)
980{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800981 AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800982 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800983 vkEnc->vkGetRenderAreaGranularity(device, renderPass, pGranularity, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800984}
985static VkResult entry_vkCreateCommandPool(
986 VkDevice device,
987 const VkCommandPoolCreateInfo* pCreateInfo,
988 const VkAllocationCallbacks* pAllocator,
989 VkCommandPool* pCommandPool)
990{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800991 AEMU_SCOPED_TRACE("vkCreateCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800992 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800993 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800994 vkCreateCommandPool_VkResult_return = vkEnc->vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800995 return vkCreateCommandPool_VkResult_return;
996}
997static void entry_vkDestroyCommandPool(
998 VkDevice device,
999 VkCommandPool commandPool,
1000 const VkAllocationCallbacks* pAllocator)
1001{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001002 AEMU_SCOPED_TRACE("vkDestroyCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001003 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001004 vkEnc->vkDestroyCommandPool(device, commandPool, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001005}
1006static VkResult entry_vkResetCommandPool(
1007 VkDevice device,
1008 VkCommandPool commandPool,
1009 VkCommandPoolResetFlags flags)
1010{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001011 AEMU_SCOPED_TRACE("vkResetCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001012 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001013 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001014 vkResetCommandPool_VkResult_return = vkEnc->vkResetCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang4f539502021-01-22 23:01:57 -08001015 if (vkResetCommandPool_VkResult_return == VK_SUCCESS) {
1016 ResourceTracker::get()->resetCommandPoolStagingInfo(commandPool);
1017 }
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001018 return vkResetCommandPool_VkResult_return;
1019}
1020static VkResult entry_vkAllocateCommandBuffers(
1021 VkDevice device,
1022 const VkCommandBufferAllocateInfo* pAllocateInfo,
1023 VkCommandBuffer* pCommandBuffers)
1024{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001025 AEMU_SCOPED_TRACE("vkAllocateCommandBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001026 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001027 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
Lingfeng Yang97f51af2021-04-22 12:24:11 -07001028 auto resources = ResourceTracker::get();
1029 vkAllocateCommandBuffers_VkResult_return = resources->on_vkAllocateCommandBuffers(vkEnc, VK_SUCCESS, device, pAllocateInfo, pCommandBuffers);
Lingfeng Yang4f539502021-01-22 23:01:57 -08001030 if (vkAllocateCommandBuffers_VkResult_return == VK_SUCCESS) {
1031 ResourceTracker::get()->addToCommandPool(pAllocateInfo->commandPool, pAllocateInfo->commandBufferCount, pCommandBuffers);
1032 }
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001033 return vkAllocateCommandBuffers_VkResult_return;
1034}
1035static void entry_vkFreeCommandBuffers(
1036 VkDevice device,
1037 VkCommandPool commandPool,
1038 uint32_t commandBufferCount,
1039 const VkCommandBuffer* pCommandBuffers)
1040{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001041 AEMU_SCOPED_TRACE("vkFreeCommandBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001042 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001043 vkEnc->vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001044}
1045static VkResult entry_vkBeginCommandBuffer(
1046 VkCommandBuffer commandBuffer,
1047 const VkCommandBufferBeginInfo* pBeginInfo)
1048{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001049 AEMU_SCOPED_TRACE("vkBeginCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001050 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001051 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001052 auto resources = ResourceTracker::get();
1053 vkBeginCommandBuffer_VkResult_return = resources->on_vkBeginCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, pBeginInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001054 return vkBeginCommandBuffer_VkResult_return;
1055}
1056static VkResult entry_vkEndCommandBuffer(
1057 VkCommandBuffer commandBuffer)
1058{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001059 AEMU_SCOPED_TRACE("vkEndCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001060 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001061 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001062 auto resources = ResourceTracker::get();
1063 vkEndCommandBuffer_VkResult_return = resources->on_vkEndCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001064 return vkEndCommandBuffer_VkResult_return;
1065}
1066static VkResult entry_vkResetCommandBuffer(
1067 VkCommandBuffer commandBuffer,
1068 VkCommandBufferResetFlags flags)
1069{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001070 AEMU_SCOPED_TRACE("vkResetCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001071 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001072 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001073 auto resources = ResourceTracker::get();
1074 vkResetCommandBuffer_VkResult_return = resources->on_vkResetCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001075 return vkResetCommandBuffer_VkResult_return;
1076}
1077static void entry_vkCmdBindPipeline(
1078 VkCommandBuffer commandBuffer,
1079 VkPipelineBindPoint pipelineBindPoint,
1080 VkPipeline pipeline)
1081{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001082 AEMU_SCOPED_TRACE("vkCmdBindPipeline");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001083 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001084 vkEnc->vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001085}
1086static void entry_vkCmdSetViewport(
1087 VkCommandBuffer commandBuffer,
1088 uint32_t firstViewport,
1089 uint32_t viewportCount,
1090 const VkViewport* pViewports)
1091{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001092 AEMU_SCOPED_TRACE("vkCmdSetViewport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001093 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001094 vkEnc->vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001095}
1096static void entry_vkCmdSetScissor(
1097 VkCommandBuffer commandBuffer,
1098 uint32_t firstScissor,
1099 uint32_t scissorCount,
1100 const VkRect2D* pScissors)
1101{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001102 AEMU_SCOPED_TRACE("vkCmdSetScissor");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001103 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001104 vkEnc->vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001105}
1106static void entry_vkCmdSetLineWidth(
1107 VkCommandBuffer commandBuffer,
1108 float lineWidth)
1109{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001110 AEMU_SCOPED_TRACE("vkCmdSetLineWidth");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001111 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001112 vkEnc->vkCmdSetLineWidth(commandBuffer, lineWidth, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001113}
1114static void entry_vkCmdSetDepthBias(
1115 VkCommandBuffer commandBuffer,
1116 float depthBiasConstantFactor,
1117 float depthBiasClamp,
1118 float depthBiasSlopeFactor)
1119{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001120 AEMU_SCOPED_TRACE("vkCmdSetDepthBias");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001121 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001122 vkEnc->vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001123}
1124static void entry_vkCmdSetBlendConstants(
1125 VkCommandBuffer commandBuffer,
Lingfeng Yang97ddeb82019-04-20 14:32:52 -07001126 const float blendConstants[4])
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001127{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001128 AEMU_SCOPED_TRACE("vkCmdSetBlendConstants");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001129 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001130 vkEnc->vkCmdSetBlendConstants(commandBuffer, blendConstants, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001131}
1132static void entry_vkCmdSetDepthBounds(
1133 VkCommandBuffer commandBuffer,
1134 float minDepthBounds,
1135 float maxDepthBounds)
1136{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001137 AEMU_SCOPED_TRACE("vkCmdSetDepthBounds");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001138 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001139 vkEnc->vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001140}
1141static void entry_vkCmdSetStencilCompareMask(
1142 VkCommandBuffer commandBuffer,
1143 VkStencilFaceFlags faceMask,
1144 uint32_t compareMask)
1145{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001146 AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001147 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001148 vkEnc->vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001149}
1150static void entry_vkCmdSetStencilWriteMask(
1151 VkCommandBuffer commandBuffer,
1152 VkStencilFaceFlags faceMask,
1153 uint32_t writeMask)
1154{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001155 AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001156 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001157 vkEnc->vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001158}
1159static void entry_vkCmdSetStencilReference(
1160 VkCommandBuffer commandBuffer,
1161 VkStencilFaceFlags faceMask,
1162 uint32_t reference)
1163{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001164 AEMU_SCOPED_TRACE("vkCmdSetStencilReference");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001165 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001166 vkEnc->vkCmdSetStencilReference(commandBuffer, faceMask, reference, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001167}
1168static void entry_vkCmdBindDescriptorSets(
1169 VkCommandBuffer commandBuffer,
1170 VkPipelineBindPoint pipelineBindPoint,
1171 VkPipelineLayout layout,
1172 uint32_t firstSet,
1173 uint32_t descriptorSetCount,
1174 const VkDescriptorSet* pDescriptorSets,
1175 uint32_t dynamicOffsetCount,
1176 const uint32_t* pDynamicOffsets)
1177{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001178 AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001179 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang55676e02021-02-08 08:39:45 -08001180 auto resources = ResourceTracker::get();
1181 resources->on_vkCmdBindDescriptorSets(vkEnc, commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001182}
1183static void entry_vkCmdBindIndexBuffer(
1184 VkCommandBuffer commandBuffer,
1185 VkBuffer buffer,
1186 VkDeviceSize offset,
1187 VkIndexType indexType)
1188{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001189 AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001190 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001191 vkEnc->vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001192}
1193static void entry_vkCmdBindVertexBuffers(
1194 VkCommandBuffer commandBuffer,
1195 uint32_t firstBinding,
1196 uint32_t bindingCount,
1197 const VkBuffer* pBuffers,
1198 const VkDeviceSize* pOffsets)
1199{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001200 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001201 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001202 vkEnc->vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001203}
1204static void entry_vkCmdDraw(
1205 VkCommandBuffer commandBuffer,
1206 uint32_t vertexCount,
1207 uint32_t instanceCount,
1208 uint32_t firstVertex,
1209 uint32_t firstInstance)
1210{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001211 AEMU_SCOPED_TRACE("vkCmdDraw");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001212 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001213 vkEnc->vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001214}
1215static void entry_vkCmdDrawIndexed(
1216 VkCommandBuffer commandBuffer,
1217 uint32_t indexCount,
1218 uint32_t instanceCount,
1219 uint32_t firstIndex,
1220 int32_t vertexOffset,
1221 uint32_t firstInstance)
1222{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001223 AEMU_SCOPED_TRACE("vkCmdDrawIndexed");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001224 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001225 vkEnc->vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001226}
1227static void entry_vkCmdDrawIndirect(
1228 VkCommandBuffer commandBuffer,
1229 VkBuffer buffer,
1230 VkDeviceSize offset,
1231 uint32_t drawCount,
1232 uint32_t stride)
1233{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001234 AEMU_SCOPED_TRACE("vkCmdDrawIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001235 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001236 vkEnc->vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001237}
1238static void entry_vkCmdDrawIndexedIndirect(
1239 VkCommandBuffer commandBuffer,
1240 VkBuffer buffer,
1241 VkDeviceSize offset,
1242 uint32_t drawCount,
1243 uint32_t stride)
1244{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001245 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001246 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001247 vkEnc->vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001248}
1249static void entry_vkCmdDispatch(
1250 VkCommandBuffer commandBuffer,
1251 uint32_t groupCountX,
1252 uint32_t groupCountY,
1253 uint32_t groupCountZ)
1254{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001255 AEMU_SCOPED_TRACE("vkCmdDispatch");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001256 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001257 vkEnc->vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001258}
1259static void entry_vkCmdDispatchIndirect(
1260 VkCommandBuffer commandBuffer,
1261 VkBuffer buffer,
1262 VkDeviceSize offset)
1263{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001264 AEMU_SCOPED_TRACE("vkCmdDispatchIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001265 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001266 vkEnc->vkCmdDispatchIndirect(commandBuffer, buffer, offset, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001267}
1268static void entry_vkCmdCopyBuffer(
1269 VkCommandBuffer commandBuffer,
1270 VkBuffer srcBuffer,
1271 VkBuffer dstBuffer,
1272 uint32_t regionCount,
1273 const VkBufferCopy* pRegions)
1274{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001275 AEMU_SCOPED_TRACE("vkCmdCopyBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001276 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001277 vkEnc->vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001278}
1279static void entry_vkCmdCopyImage(
1280 VkCommandBuffer commandBuffer,
1281 VkImage srcImage,
1282 VkImageLayout srcImageLayout,
1283 VkImage dstImage,
1284 VkImageLayout dstImageLayout,
1285 uint32_t regionCount,
1286 const VkImageCopy* pRegions)
1287{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001288 AEMU_SCOPED_TRACE("vkCmdCopyImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001289 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001290 vkEnc->vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001291}
1292static void entry_vkCmdBlitImage(
1293 VkCommandBuffer commandBuffer,
1294 VkImage srcImage,
1295 VkImageLayout srcImageLayout,
1296 VkImage dstImage,
1297 VkImageLayout dstImageLayout,
1298 uint32_t regionCount,
1299 const VkImageBlit* pRegions,
1300 VkFilter filter)
1301{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001302 AEMU_SCOPED_TRACE("vkCmdBlitImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001303 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001304 vkEnc->vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001305}
1306static void entry_vkCmdCopyBufferToImage(
1307 VkCommandBuffer commandBuffer,
1308 VkBuffer srcBuffer,
1309 VkImage dstImage,
1310 VkImageLayout dstImageLayout,
1311 uint32_t regionCount,
1312 const VkBufferImageCopy* pRegions)
1313{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001314 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001315 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001316 vkEnc->vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001317}
1318static void entry_vkCmdCopyImageToBuffer(
1319 VkCommandBuffer commandBuffer,
1320 VkImage srcImage,
1321 VkImageLayout srcImageLayout,
1322 VkBuffer dstBuffer,
1323 uint32_t regionCount,
1324 const VkBufferImageCopy* pRegions)
1325{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001326 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001327 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001328 vkEnc->vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001329}
1330static void entry_vkCmdUpdateBuffer(
1331 VkCommandBuffer commandBuffer,
1332 VkBuffer dstBuffer,
1333 VkDeviceSize dstOffset,
1334 VkDeviceSize dataSize,
1335 const void* pData)
1336{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001337 AEMU_SCOPED_TRACE("vkCmdUpdateBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001338 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001339 vkEnc->vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001340}
1341static void entry_vkCmdFillBuffer(
1342 VkCommandBuffer commandBuffer,
1343 VkBuffer dstBuffer,
1344 VkDeviceSize dstOffset,
1345 VkDeviceSize size,
1346 uint32_t data)
1347{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001348 AEMU_SCOPED_TRACE("vkCmdFillBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001349 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001350 vkEnc->vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001351}
1352static void entry_vkCmdClearColorImage(
1353 VkCommandBuffer commandBuffer,
1354 VkImage image,
1355 VkImageLayout imageLayout,
1356 const VkClearColorValue* pColor,
1357 uint32_t rangeCount,
1358 const VkImageSubresourceRange* pRanges)
1359{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001360 AEMU_SCOPED_TRACE("vkCmdClearColorImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001361 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001362 vkEnc->vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001363}
1364static void entry_vkCmdClearDepthStencilImage(
1365 VkCommandBuffer commandBuffer,
1366 VkImage image,
1367 VkImageLayout imageLayout,
1368 const VkClearDepthStencilValue* pDepthStencil,
1369 uint32_t rangeCount,
1370 const VkImageSubresourceRange* pRanges)
1371{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001372 AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001373 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001374 vkEnc->vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001375}
1376static void entry_vkCmdClearAttachments(
1377 VkCommandBuffer commandBuffer,
1378 uint32_t attachmentCount,
1379 const VkClearAttachment* pAttachments,
1380 uint32_t rectCount,
1381 const VkClearRect* pRects)
1382{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001383 AEMU_SCOPED_TRACE("vkCmdClearAttachments");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001384 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001385 vkEnc->vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001386}
1387static void entry_vkCmdResolveImage(
1388 VkCommandBuffer commandBuffer,
1389 VkImage srcImage,
1390 VkImageLayout srcImageLayout,
1391 VkImage dstImage,
1392 VkImageLayout dstImageLayout,
1393 uint32_t regionCount,
1394 const VkImageResolve* pRegions)
1395{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001396 AEMU_SCOPED_TRACE("vkCmdResolveImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001397 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001398 vkEnc->vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001399}
1400static void entry_vkCmdSetEvent(
1401 VkCommandBuffer commandBuffer,
1402 VkEvent event,
1403 VkPipelineStageFlags stageMask)
1404{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001405 AEMU_SCOPED_TRACE("vkCmdSetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001406 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001407 vkEnc->vkCmdSetEvent(commandBuffer, event, stageMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001408}
1409static void entry_vkCmdResetEvent(
1410 VkCommandBuffer commandBuffer,
1411 VkEvent event,
1412 VkPipelineStageFlags stageMask)
1413{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001414 AEMU_SCOPED_TRACE("vkCmdResetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001415 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001416 vkEnc->vkCmdResetEvent(commandBuffer, event, stageMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001417}
1418static void entry_vkCmdWaitEvents(
1419 VkCommandBuffer commandBuffer,
1420 uint32_t eventCount,
1421 const VkEvent* pEvents,
1422 VkPipelineStageFlags srcStageMask,
1423 VkPipelineStageFlags dstStageMask,
1424 uint32_t memoryBarrierCount,
1425 const VkMemoryBarrier* pMemoryBarriers,
1426 uint32_t bufferMemoryBarrierCount,
1427 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1428 uint32_t imageMemoryBarrierCount,
1429 const VkImageMemoryBarrier* pImageMemoryBarriers)
1430{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001431 AEMU_SCOPED_TRACE("vkCmdWaitEvents");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001432 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001433 vkEnc->vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001434}
1435static void entry_vkCmdPipelineBarrier(
1436 VkCommandBuffer commandBuffer,
1437 VkPipelineStageFlags srcStageMask,
1438 VkPipelineStageFlags dstStageMask,
1439 VkDependencyFlags dependencyFlags,
1440 uint32_t memoryBarrierCount,
1441 const VkMemoryBarrier* pMemoryBarriers,
1442 uint32_t bufferMemoryBarrierCount,
1443 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1444 uint32_t imageMemoryBarrierCount,
1445 const VkImageMemoryBarrier* pImageMemoryBarriers)
1446{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001447 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001448 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001449 vkEnc->vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001450}
1451static void entry_vkCmdBeginQuery(
1452 VkCommandBuffer commandBuffer,
1453 VkQueryPool queryPool,
1454 uint32_t query,
1455 VkQueryControlFlags flags)
1456{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001457 AEMU_SCOPED_TRACE("vkCmdBeginQuery");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001458 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001459 vkEnc->vkCmdBeginQuery(commandBuffer, queryPool, query, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001460}
1461static void entry_vkCmdEndQuery(
1462 VkCommandBuffer commandBuffer,
1463 VkQueryPool queryPool,
1464 uint32_t query)
1465{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001466 AEMU_SCOPED_TRACE("vkCmdEndQuery");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001467 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001468 vkEnc->vkCmdEndQuery(commandBuffer, queryPool, query, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001469}
1470static void entry_vkCmdResetQueryPool(
1471 VkCommandBuffer commandBuffer,
1472 VkQueryPool queryPool,
1473 uint32_t firstQuery,
1474 uint32_t queryCount)
1475{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001476 AEMU_SCOPED_TRACE("vkCmdResetQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001477 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001478 vkEnc->vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001479}
1480static void entry_vkCmdWriteTimestamp(
1481 VkCommandBuffer commandBuffer,
1482 VkPipelineStageFlagBits pipelineStage,
1483 VkQueryPool queryPool,
1484 uint32_t query)
1485{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001486 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001487 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001488 vkEnc->vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001489}
1490static void entry_vkCmdCopyQueryPoolResults(
1491 VkCommandBuffer commandBuffer,
1492 VkQueryPool queryPool,
1493 uint32_t firstQuery,
1494 uint32_t queryCount,
1495 VkBuffer dstBuffer,
1496 VkDeviceSize dstOffset,
1497 VkDeviceSize stride,
1498 VkQueryResultFlags flags)
1499{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001500 AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001501 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001502 vkEnc->vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001503}
1504static void entry_vkCmdPushConstants(
1505 VkCommandBuffer commandBuffer,
1506 VkPipelineLayout layout,
1507 VkShaderStageFlags stageFlags,
1508 uint32_t offset,
1509 uint32_t size,
1510 const void* pValues)
1511{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001512 AEMU_SCOPED_TRACE("vkCmdPushConstants");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001513 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001514 vkEnc->vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001515}
1516static void entry_vkCmdBeginRenderPass(
1517 VkCommandBuffer commandBuffer,
1518 const VkRenderPassBeginInfo* pRenderPassBegin,
1519 VkSubpassContents contents)
1520{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001521 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001522 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001523 vkEnc->vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001524}
1525static void entry_vkCmdNextSubpass(
1526 VkCommandBuffer commandBuffer,
1527 VkSubpassContents contents)
1528{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001529 AEMU_SCOPED_TRACE("vkCmdNextSubpass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001530 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001531 vkEnc->vkCmdNextSubpass(commandBuffer, contents, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001532}
1533static void entry_vkCmdEndRenderPass(
1534 VkCommandBuffer commandBuffer)
1535{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001536 AEMU_SCOPED_TRACE("vkCmdEndRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001537 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001538 vkEnc->vkCmdEndRenderPass(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001539}
1540static void entry_vkCmdExecuteCommands(
1541 VkCommandBuffer commandBuffer,
1542 uint32_t commandBufferCount,
1543 const VkCommandBuffer* pCommandBuffers)
1544{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001545 AEMU_SCOPED_TRACE("vkCmdExecuteCommands");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001546 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1547 auto resources = ResourceTracker::get();
1548 resources->on_vkCmdExecuteCommands(vkEnc, commandBuffer, commandBufferCount, pCommandBuffers);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001549}
1550#endif
1551#ifdef VK_VERSION_1_1
1552static VkResult entry_vkEnumerateInstanceVersion(
1553 uint32_t* pApiVersion)
1554{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001555 AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001556 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001557 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001558 vkEnumerateInstanceVersion_VkResult_return = vkEnc->vkEnumerateInstanceVersion(pApiVersion, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001559 return vkEnumerateInstanceVersion_VkResult_return;
1560}
1561static VkResult entry_vkBindBufferMemory2(
1562 VkDevice device,
1563 uint32_t bindInfoCount,
1564 const VkBindBufferMemoryInfo* pBindInfos)
1565{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001566 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001567 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001568 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001569 auto resources = ResourceTracker::get();
1570 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001571 return vkBindBufferMemory2_VkResult_return;
1572}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001573static VkResult dynCheck_entry_vkBindBufferMemory2(
1574 VkDevice device,
1575 uint32_t bindInfoCount,
1576 const VkBindBufferMemoryInfo* pBindInfos)
1577{
1578 auto resources = ResourceTracker::get();
1579 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1580 {
1581 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2", "VK_VERSION_1_1");
1582 }
1583 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001584 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001585 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
1586 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1587 return vkBindBufferMemory2_VkResult_return;
1588}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001589static VkResult entry_vkBindImageMemory2(
1590 VkDevice device,
1591 uint32_t bindInfoCount,
1592 const VkBindImageMemoryInfo* pBindInfos)
1593{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001594 AEMU_SCOPED_TRACE("vkBindImageMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001595 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001596 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001597 auto resources = ResourceTracker::get();
1598 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001599 return vkBindImageMemory2_VkResult_return;
1600}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001601static VkResult dynCheck_entry_vkBindImageMemory2(
1602 VkDevice device,
1603 uint32_t bindInfoCount,
1604 const VkBindImageMemoryInfo* pBindInfos)
1605{
1606 auto resources = ResourceTracker::get();
1607 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1608 {
1609 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2", "VK_VERSION_1_1");
1610 }
1611 AEMU_SCOPED_TRACE("vkBindImageMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001612 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001613 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
1614 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1615 return vkBindImageMemory2_VkResult_return;
1616}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001617static void entry_vkGetDeviceGroupPeerMemoryFeatures(
1618 VkDevice device,
1619 uint32_t heapIndex,
1620 uint32_t localDeviceIndex,
1621 uint32_t remoteDeviceIndex,
1622 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1623{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001624 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001625 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001626 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001627}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001628static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures(
1629 VkDevice device,
1630 uint32_t heapIndex,
1631 uint32_t localDeviceIndex,
1632 uint32_t remoteDeviceIndex,
1633 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1634{
1635 auto resources = ResourceTracker::get();
1636 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1637 {
1638 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeatures", "VK_VERSION_1_1");
1639 }
1640 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001641 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001642 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001643}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001644static void entry_vkCmdSetDeviceMask(
1645 VkCommandBuffer commandBuffer,
1646 uint32_t deviceMask)
1647{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001648 AEMU_SCOPED_TRACE("vkCmdSetDeviceMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001649 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001650 vkEnc->vkCmdSetDeviceMask(commandBuffer, deviceMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001651}
1652static void entry_vkCmdDispatchBase(
1653 VkCommandBuffer commandBuffer,
1654 uint32_t baseGroupX,
1655 uint32_t baseGroupY,
1656 uint32_t baseGroupZ,
1657 uint32_t groupCountX,
1658 uint32_t groupCountY,
1659 uint32_t groupCountZ)
1660{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001661 AEMU_SCOPED_TRACE("vkCmdDispatchBase");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001662 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001663 vkEnc->vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001664}
1665static VkResult entry_vkEnumeratePhysicalDeviceGroups(
1666 VkInstance instance,
1667 uint32_t* pPhysicalDeviceGroupCount,
1668 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
1669{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001670 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001671 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001672 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001673 vkEnumeratePhysicalDeviceGroups_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001674 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
1675}
1676static void entry_vkGetImageMemoryRequirements2(
1677 VkDevice device,
1678 const VkImageMemoryRequirementsInfo2* pInfo,
1679 VkMemoryRequirements2* pMemoryRequirements)
1680{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001681 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001682 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001683 auto resources = ResourceTracker::get();
1684 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001685}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001686static void dynCheck_entry_vkGetImageMemoryRequirements2(
1687 VkDevice device,
1688 const VkImageMemoryRequirementsInfo2* pInfo,
1689 VkMemoryRequirements2* pMemoryRequirements)
1690{
1691 auto resources = ResourceTracker::get();
1692 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1693 {
1694 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2", "VK_VERSION_1_1");
1695 }
1696 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001697 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001698 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1699}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001700static void entry_vkGetBufferMemoryRequirements2(
1701 VkDevice device,
1702 const VkBufferMemoryRequirementsInfo2* pInfo,
1703 VkMemoryRequirements2* pMemoryRequirements)
1704{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001705 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001706 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001707 auto resources = ResourceTracker::get();
1708 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001709}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001710static void dynCheck_entry_vkGetBufferMemoryRequirements2(
1711 VkDevice device,
1712 const VkBufferMemoryRequirementsInfo2* pInfo,
1713 VkMemoryRequirements2* pMemoryRequirements)
1714{
1715 auto resources = ResourceTracker::get();
1716 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1717 {
1718 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2", "VK_VERSION_1_1");
1719 }
1720 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001721 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001722 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1723}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001724static void entry_vkGetImageSparseMemoryRequirements2(
1725 VkDevice device,
1726 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1727 uint32_t* pSparseMemoryRequirementCount,
1728 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1729{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001730 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001731 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001732 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001733}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001734static void dynCheck_entry_vkGetImageSparseMemoryRequirements2(
1735 VkDevice device,
1736 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1737 uint32_t* pSparseMemoryRequirementCount,
1738 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1739{
1740 auto resources = ResourceTracker::get();
1741 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1742 {
1743 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2", "VK_VERSION_1_1");
1744 }
1745 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001746 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001747 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001748}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001749static void entry_vkGetPhysicalDeviceFeatures2(
1750 VkPhysicalDevice physicalDevice,
1751 VkPhysicalDeviceFeatures2* pFeatures)
1752{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001753 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001754 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001755 vkEnc->vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001756}
1757static void entry_vkGetPhysicalDeviceProperties2(
1758 VkPhysicalDevice physicalDevice,
1759 VkPhysicalDeviceProperties2* pProperties)
1760{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001761 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001762 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001763 vkEnc->vkGetPhysicalDeviceProperties2(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001764}
1765static void entry_vkGetPhysicalDeviceFormatProperties2(
1766 VkPhysicalDevice physicalDevice,
1767 VkFormat format,
1768 VkFormatProperties2* pFormatProperties)
1769{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001770 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001771 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001772 vkEnc->vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001773}
1774static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2(
1775 VkPhysicalDevice physicalDevice,
1776 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
1777 VkImageFormatProperties2* pImageFormatProperties)
1778{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001779 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001780 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001781 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07001782 auto resources = ResourceTracker::get();
1783 vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001784 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
1785}
1786static void entry_vkGetPhysicalDeviceQueueFamilyProperties2(
1787 VkPhysicalDevice physicalDevice,
1788 uint32_t* pQueueFamilyPropertyCount,
1789 VkQueueFamilyProperties2* pQueueFamilyProperties)
1790{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001791 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001792 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001793 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001794}
1795static void entry_vkGetPhysicalDeviceMemoryProperties2(
1796 VkPhysicalDevice physicalDevice,
1797 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
1798{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001799 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001800 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001801 vkEnc->vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001802}
1803static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2(
1804 VkPhysicalDevice physicalDevice,
1805 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
1806 uint32_t* pPropertyCount,
1807 VkSparseImageFormatProperties2* pProperties)
1808{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001809 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001810 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001811 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001812}
1813static void entry_vkTrimCommandPool(
1814 VkDevice device,
1815 VkCommandPool commandPool,
1816 VkCommandPoolTrimFlags flags)
1817{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001818 AEMU_SCOPED_TRACE("vkTrimCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001819 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001820 vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001821}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001822static void dynCheck_entry_vkTrimCommandPool(
1823 VkDevice device,
1824 VkCommandPool commandPool,
1825 VkCommandPoolTrimFlags flags)
1826{
1827 auto resources = ResourceTracker::get();
1828 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1829 {
1830 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPool", "VK_VERSION_1_1");
1831 }
1832 AEMU_SCOPED_TRACE("vkTrimCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001833 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001834 vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001835}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001836static void entry_vkGetDeviceQueue2(
1837 VkDevice device,
1838 const VkDeviceQueueInfo2* pQueueInfo,
1839 VkQueue* pQueue)
1840{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001841 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001842 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001843 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001844}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001845static void dynCheck_entry_vkGetDeviceQueue2(
1846 VkDevice device,
1847 const VkDeviceQueueInfo2* pQueueInfo,
1848 VkQueue* pQueue)
1849{
1850 auto resources = ResourceTracker::get();
1851 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1852 {
1853 sOnInvalidDynamicallyCheckedCall("vkGetDeviceQueue2", "VK_VERSION_1_1");
1854 }
1855 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001856 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001857 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001858}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001859static VkResult entry_vkCreateSamplerYcbcrConversion(
1860 VkDevice device,
1861 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1862 const VkAllocationCallbacks* pAllocator,
1863 VkSamplerYcbcrConversion* pYcbcrConversion)
1864{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001865 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001866 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001867 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08001868 auto resources = ResourceTracker::get();
1869 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001870 return vkCreateSamplerYcbcrConversion_VkResult_return;
1871}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001872static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversion(
1873 VkDevice device,
1874 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1875 const VkAllocationCallbacks* pAllocator,
1876 VkSamplerYcbcrConversion* pYcbcrConversion)
1877{
1878 auto resources = ResourceTracker::get();
1879 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1880 {
1881 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversion", "VK_VERSION_1_1");
1882 }
1883 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001884 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001885 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
1886 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
1887 return vkCreateSamplerYcbcrConversion_VkResult_return;
1888}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001889static void entry_vkDestroySamplerYcbcrConversion(
1890 VkDevice device,
1891 VkSamplerYcbcrConversion ycbcrConversion,
1892 const VkAllocationCallbacks* pAllocator)
1893{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001894 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001895 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07001896 auto resources = ResourceTracker::get();
1897 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001898}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001899static void dynCheck_entry_vkDestroySamplerYcbcrConversion(
1900 VkDevice device,
1901 VkSamplerYcbcrConversion ycbcrConversion,
1902 const VkAllocationCallbacks* pAllocator)
1903{
1904 auto resources = ResourceTracker::get();
1905 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1906 {
1907 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversion", "VK_VERSION_1_1");
1908 }
1909 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001910 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001911 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
1912}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001913static VkResult entry_vkCreateDescriptorUpdateTemplate(
1914 VkDevice device,
1915 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1916 const VkAllocationCallbacks* pAllocator,
1917 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1918{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001919 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001920 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001921 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001922 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001923 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1924}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001925static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplate(
1926 VkDevice device,
1927 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1928 const VkAllocationCallbacks* pAllocator,
1929 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1930{
1931 auto resources = ResourceTracker::get();
1932 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1933 {
1934 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplate", "VK_VERSION_1_1");
1935 }
1936 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001937 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001938 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001939 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001940 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1941}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001942static void entry_vkDestroyDescriptorUpdateTemplate(
1943 VkDevice device,
1944 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1945 const VkAllocationCallbacks* pAllocator)
1946{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001947 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001948 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001949 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001950}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001951static void dynCheck_entry_vkDestroyDescriptorUpdateTemplate(
1952 VkDevice device,
1953 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1954 const VkAllocationCallbacks* pAllocator)
1955{
1956 auto resources = ResourceTracker::get();
1957 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1958 {
1959 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplate", "VK_VERSION_1_1");
1960 }
1961 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001962 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001963 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001964}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001965static void entry_vkUpdateDescriptorSetWithTemplate(
1966 VkDevice device,
1967 VkDescriptorSet descriptorSet,
1968 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1969 const void* pData)
1970{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001971 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001972 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07001973 auto resources = ResourceTracker::get();
1974 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001975}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001976static void dynCheck_entry_vkUpdateDescriptorSetWithTemplate(
1977 VkDevice device,
1978 VkDescriptorSet descriptorSet,
1979 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1980 const void* pData)
1981{
1982 auto resources = ResourceTracker::get();
1983 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1984 {
1985 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplate", "VK_VERSION_1_1");
1986 }
1987 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001988 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001989 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
1990}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001991static void entry_vkGetPhysicalDeviceExternalBufferProperties(
1992 VkPhysicalDevice physicalDevice,
1993 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
1994 VkExternalBufferProperties* pExternalBufferProperties)
1995{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001996 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001997 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001998 vkEnc->vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001999}
2000static void entry_vkGetPhysicalDeviceExternalFenceProperties(
2001 VkPhysicalDevice physicalDevice,
2002 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
2003 VkExternalFenceProperties* pExternalFenceProperties)
2004{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002005 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002006 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07002007 auto resources = ResourceTracker::get();
2008 resources->on_vkGetPhysicalDeviceExternalFenceProperties(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002009}
2010static void entry_vkGetPhysicalDeviceExternalSemaphoreProperties(
2011 VkPhysicalDevice physicalDevice,
2012 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2013 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
2014{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002015 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002016 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002017 vkEnc->vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002018}
2019static void entry_vkGetDescriptorSetLayoutSupport(
2020 VkDevice device,
2021 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2022 VkDescriptorSetLayoutSupport* pSupport)
2023{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002024 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002025 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002026 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002027}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002028static void dynCheck_entry_vkGetDescriptorSetLayoutSupport(
2029 VkDevice device,
2030 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2031 VkDescriptorSetLayoutSupport* pSupport)
2032{
2033 auto resources = ResourceTracker::get();
2034 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2035 {
2036 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupport", "VK_VERSION_1_1");
2037 }
2038 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002039 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002040 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002041}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002042#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08002043#ifdef VK_VERSION_1_2
2044static void entry_vkCmdDrawIndirectCount(
2045 VkCommandBuffer commandBuffer,
2046 VkBuffer buffer,
2047 VkDeviceSize offset,
2048 VkBuffer countBuffer,
2049 VkDeviceSize countBufferOffset,
2050 uint32_t maxDrawCount,
2051 uint32_t stride)
2052{
2053 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCount");
2054 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2055 vkEnc->vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
2056}
2057static void entry_vkCmdDrawIndexedIndirectCount(
2058 VkCommandBuffer commandBuffer,
2059 VkBuffer buffer,
2060 VkDeviceSize offset,
2061 VkBuffer countBuffer,
2062 VkDeviceSize countBufferOffset,
2063 uint32_t maxDrawCount,
2064 uint32_t stride)
2065{
2066 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCount");
2067 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2068 vkEnc->vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
2069}
2070static VkResult entry_vkCreateRenderPass2(
2071 VkDevice device,
2072 const VkRenderPassCreateInfo2* pCreateInfo,
2073 const VkAllocationCallbacks* pAllocator,
2074 VkRenderPass* pRenderPass)
2075{
2076 AEMU_SCOPED_TRACE("vkCreateRenderPass2");
2077 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2078 VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
2079 vkCreateRenderPass2_VkResult_return = vkEnc->vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
2080 return vkCreateRenderPass2_VkResult_return;
2081}
2082static VkResult dynCheck_entry_vkCreateRenderPass2(
2083 VkDevice device,
2084 const VkRenderPassCreateInfo2* pCreateInfo,
2085 const VkAllocationCallbacks* pAllocator,
2086 VkRenderPass* pRenderPass)
2087{
2088 auto resources = ResourceTracker::get();
2089 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2090 {
2091 sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2", "VK_VERSION_1_2");
2092 }
2093 AEMU_SCOPED_TRACE("vkCreateRenderPass2");
2094 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2095 VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
2096 vkCreateRenderPass2_VkResult_return = vkEnc->vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
2097 return vkCreateRenderPass2_VkResult_return;
2098}
2099static void entry_vkCmdBeginRenderPass2(
2100 VkCommandBuffer commandBuffer,
2101 const VkRenderPassBeginInfo* pRenderPassBegin,
2102 const VkSubpassBeginInfo* pSubpassBeginInfo)
2103{
2104 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2");
2105 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2106 vkEnc->vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
2107}
2108static void entry_vkCmdNextSubpass2(
2109 VkCommandBuffer commandBuffer,
2110 const VkSubpassBeginInfo* pSubpassBeginInfo,
2111 const VkSubpassEndInfo* pSubpassEndInfo)
2112{
2113 AEMU_SCOPED_TRACE("vkCmdNextSubpass2");
2114 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2115 vkEnc->vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
2116}
2117static void entry_vkCmdEndRenderPass2(
2118 VkCommandBuffer commandBuffer,
2119 const VkSubpassEndInfo* pSubpassEndInfo)
2120{
2121 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2");
2122 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2123 vkEnc->vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo, true /* do lock */);
2124}
2125static void entry_vkResetQueryPool(
2126 VkDevice device,
2127 VkQueryPool queryPool,
2128 uint32_t firstQuery,
2129 uint32_t queryCount)
2130{
2131 AEMU_SCOPED_TRACE("vkResetQueryPool");
2132 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2133 vkEnc->vkResetQueryPool(device, queryPool, firstQuery, queryCount, true /* do lock */);
2134}
2135static void dynCheck_entry_vkResetQueryPool(
2136 VkDevice device,
2137 VkQueryPool queryPool,
2138 uint32_t firstQuery,
2139 uint32_t queryCount)
2140{
2141 auto resources = ResourceTracker::get();
2142 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2143 {
2144 sOnInvalidDynamicallyCheckedCall("vkResetQueryPool", "VK_VERSION_1_2");
2145 }
2146 AEMU_SCOPED_TRACE("vkResetQueryPool");
2147 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2148 vkEnc->vkResetQueryPool(device, queryPool, firstQuery, queryCount, true /* do lock */);
2149}
2150static VkResult entry_vkGetSemaphoreCounterValue(
2151 VkDevice device,
2152 VkSemaphore semaphore,
2153 uint64_t* pValue)
2154{
2155 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValue");
2156 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2157 VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
2158 vkGetSemaphoreCounterValue_VkResult_return = vkEnc->vkGetSemaphoreCounterValue(device, semaphore, pValue, true /* do lock */);
2159 return vkGetSemaphoreCounterValue_VkResult_return;
2160}
2161static VkResult dynCheck_entry_vkGetSemaphoreCounterValue(
2162 VkDevice device,
2163 VkSemaphore semaphore,
2164 uint64_t* pValue)
2165{
2166 auto resources = ResourceTracker::get();
2167 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2168 {
2169 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreCounterValue", "VK_VERSION_1_2");
2170 }
2171 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValue");
2172 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2173 VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
2174 vkGetSemaphoreCounterValue_VkResult_return = vkEnc->vkGetSemaphoreCounterValue(device, semaphore, pValue, true /* do lock */);
2175 return vkGetSemaphoreCounterValue_VkResult_return;
2176}
2177static VkResult entry_vkWaitSemaphores(
2178 VkDevice device,
2179 const VkSemaphoreWaitInfo* pWaitInfo,
2180 uint64_t timeout)
2181{
2182 AEMU_SCOPED_TRACE("vkWaitSemaphores");
2183 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2184 VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
2185 vkWaitSemaphores_VkResult_return = vkEnc->vkWaitSemaphores(device, pWaitInfo, timeout, true /* do lock */);
2186 return vkWaitSemaphores_VkResult_return;
2187}
2188static VkResult dynCheck_entry_vkWaitSemaphores(
2189 VkDevice device,
2190 const VkSemaphoreWaitInfo* pWaitInfo,
2191 uint64_t timeout)
2192{
2193 auto resources = ResourceTracker::get();
2194 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2195 {
2196 sOnInvalidDynamicallyCheckedCall("vkWaitSemaphores", "VK_VERSION_1_2");
2197 }
2198 AEMU_SCOPED_TRACE("vkWaitSemaphores");
2199 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2200 VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
2201 vkWaitSemaphores_VkResult_return = vkEnc->vkWaitSemaphores(device, pWaitInfo, timeout, true /* do lock */);
2202 return vkWaitSemaphores_VkResult_return;
2203}
2204static VkResult entry_vkSignalSemaphore(
2205 VkDevice device,
2206 const VkSemaphoreSignalInfo* pSignalInfo)
2207{
2208 AEMU_SCOPED_TRACE("vkSignalSemaphore");
2209 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2210 VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
2211 vkSignalSemaphore_VkResult_return = vkEnc->vkSignalSemaphore(device, pSignalInfo, true /* do lock */);
2212 return vkSignalSemaphore_VkResult_return;
2213}
2214static VkResult dynCheck_entry_vkSignalSemaphore(
2215 VkDevice device,
2216 const VkSemaphoreSignalInfo* pSignalInfo)
2217{
2218 auto resources = ResourceTracker::get();
2219 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2220 {
2221 sOnInvalidDynamicallyCheckedCall("vkSignalSemaphore", "VK_VERSION_1_2");
2222 }
2223 AEMU_SCOPED_TRACE("vkSignalSemaphore");
2224 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2225 VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
2226 vkSignalSemaphore_VkResult_return = vkEnc->vkSignalSemaphore(device, pSignalInfo, true /* do lock */);
2227 return vkSignalSemaphore_VkResult_return;
2228}
2229static VkDeviceAddress entry_vkGetBufferDeviceAddress(
2230 VkDevice device,
2231 const VkBufferDeviceAddressInfo* pInfo)
2232{
2233 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddress");
2234 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2235 VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return = (VkDeviceAddress)0;
2236 vkGetBufferDeviceAddress_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddress(device, pInfo, true /* do lock */);
2237 return vkGetBufferDeviceAddress_VkDeviceAddress_return;
2238}
2239static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddress(
2240 VkDevice device,
2241 const VkBufferDeviceAddressInfo* pInfo)
2242{
2243 auto resources = ResourceTracker::get();
2244 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2245 {
2246 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddress", "VK_VERSION_1_2");
2247 }
2248 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddress");
2249 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2250 VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return = (VkDeviceAddress)0;
2251 vkGetBufferDeviceAddress_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddress(device, pInfo, true /* do lock */);
2252 return vkGetBufferDeviceAddress_VkDeviceAddress_return;
2253}
2254static uint64_t entry_vkGetBufferOpaqueCaptureAddress(
2255 VkDevice device,
2256 const VkBufferDeviceAddressInfo* pInfo)
2257{
2258 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddress");
2259 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2260 uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2261 vkGetBufferOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2262 return vkGetBufferOpaqueCaptureAddress_uint64_t_return;
2263}
2264static uint64_t dynCheck_entry_vkGetBufferOpaqueCaptureAddress(
2265 VkDevice device,
2266 const VkBufferDeviceAddressInfo* pInfo)
2267{
2268 auto resources = ResourceTracker::get();
2269 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2270 {
2271 sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureAddress", "VK_VERSION_1_2");
2272 }
2273 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddress");
2274 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2275 uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2276 vkGetBufferOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2277 return vkGetBufferOpaqueCaptureAddress_uint64_t_return;
2278}
2279static uint64_t entry_vkGetDeviceMemoryOpaqueCaptureAddress(
2280 VkDevice device,
2281 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
2282{
2283 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddress");
2284 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2285 uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2286 vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2287 return vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return;
2288}
2289static uint64_t dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress(
2290 VkDevice device,
2291 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
2292{
2293 auto resources = ResourceTracker::get();
2294 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2295 {
2296 sOnInvalidDynamicallyCheckedCall("vkGetDeviceMemoryOpaqueCaptureAddress", "VK_VERSION_1_2");
2297 }
2298 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddress");
2299 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2300 uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2301 vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2302 return vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return;
2303}
2304#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002305#ifdef VK_KHR_surface
2306static void entry_vkDestroySurfaceKHR(
2307 VkInstance instance,
2308 VkSurfaceKHR surface,
2309 const VkAllocationCallbacks* pAllocator)
2310{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002311 AEMU_SCOPED_TRACE("vkDestroySurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002312 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002313 vkEnc->vkDestroySurfaceKHR(instance, surface, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002314}
2315static VkResult entry_vkGetPhysicalDeviceSurfaceSupportKHR(
2316 VkPhysicalDevice physicalDevice,
2317 uint32_t queueFamilyIndex,
2318 VkSurfaceKHR surface,
2319 VkBool32* pSupported)
2320{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002321 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002322 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002323 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002324 vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002325 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
2326}
2327static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
2328 VkPhysicalDevice physicalDevice,
2329 VkSurfaceKHR surface,
2330 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
2331{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002332 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002333 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002334 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002335 vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002336 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
2337}
2338static VkResult entry_vkGetPhysicalDeviceSurfaceFormatsKHR(
2339 VkPhysicalDevice physicalDevice,
2340 VkSurfaceKHR surface,
2341 uint32_t* pSurfaceFormatCount,
2342 VkSurfaceFormatKHR* pSurfaceFormats)
2343{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002344 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002345 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002346 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002347 vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002348 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
2349}
2350static VkResult entry_vkGetPhysicalDeviceSurfacePresentModesKHR(
2351 VkPhysicalDevice physicalDevice,
2352 VkSurfaceKHR surface,
2353 uint32_t* pPresentModeCount,
2354 VkPresentModeKHR* pPresentModes)
2355{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002356 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002357 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002358 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002359 vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002360 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
2361}
2362#endif
2363#ifdef VK_KHR_swapchain
2364static VkResult entry_vkCreateSwapchainKHR(
2365 VkDevice device,
2366 const VkSwapchainCreateInfoKHR* pCreateInfo,
2367 const VkAllocationCallbacks* pAllocator,
2368 VkSwapchainKHR* pSwapchain)
2369{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002370 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002371 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002372 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002373 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002374 return vkCreateSwapchainKHR_VkResult_return;
2375}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002376static VkResult dynCheck_entry_vkCreateSwapchainKHR(
2377 VkDevice device,
2378 const VkSwapchainCreateInfoKHR* pCreateInfo,
2379 const VkAllocationCallbacks* pAllocator,
2380 VkSwapchainKHR* pSwapchain)
2381{
2382 auto resources = ResourceTracker::get();
2383 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2384 {
2385 sOnInvalidDynamicallyCheckedCall("vkCreateSwapchainKHR", "VK_KHR_swapchain");
2386 }
2387 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002388 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002389 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002390 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002391 return vkCreateSwapchainKHR_VkResult_return;
2392}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002393static void entry_vkDestroySwapchainKHR(
2394 VkDevice device,
2395 VkSwapchainKHR swapchain,
2396 const VkAllocationCallbacks* pAllocator)
2397{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002398 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002399 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002400 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002401}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002402static void dynCheck_entry_vkDestroySwapchainKHR(
2403 VkDevice device,
2404 VkSwapchainKHR swapchain,
2405 const VkAllocationCallbacks* pAllocator)
2406{
2407 auto resources = ResourceTracker::get();
2408 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2409 {
2410 sOnInvalidDynamicallyCheckedCall("vkDestroySwapchainKHR", "VK_KHR_swapchain");
2411 }
2412 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002413 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002414 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002415}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002416static VkResult entry_vkGetSwapchainImagesKHR(
2417 VkDevice device,
2418 VkSwapchainKHR swapchain,
2419 uint32_t* pSwapchainImageCount,
2420 VkImage* pSwapchainImages)
2421{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002422 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002423 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002424 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002425 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002426 return vkGetSwapchainImagesKHR_VkResult_return;
2427}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002428static VkResult dynCheck_entry_vkGetSwapchainImagesKHR(
2429 VkDevice device,
2430 VkSwapchainKHR swapchain,
2431 uint32_t* pSwapchainImageCount,
2432 VkImage* pSwapchainImages)
2433{
2434 auto resources = ResourceTracker::get();
2435 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2436 {
2437 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainImagesKHR", "VK_KHR_swapchain");
2438 }
2439 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002440 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002441 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002442 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002443 return vkGetSwapchainImagesKHR_VkResult_return;
2444}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002445static VkResult entry_vkAcquireNextImageKHR(
2446 VkDevice device,
2447 VkSwapchainKHR swapchain,
2448 uint64_t timeout,
2449 VkSemaphore semaphore,
2450 VkFence fence,
2451 uint32_t* pImageIndex)
2452{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002453 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002454 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002455 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002456 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002457 return vkAcquireNextImageKHR_VkResult_return;
2458}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002459static VkResult dynCheck_entry_vkAcquireNextImageKHR(
2460 VkDevice device,
2461 VkSwapchainKHR swapchain,
2462 uint64_t timeout,
2463 VkSemaphore semaphore,
2464 VkFence fence,
2465 uint32_t* pImageIndex)
2466{
2467 auto resources = ResourceTracker::get();
2468 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2469 {
2470 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImageKHR", "VK_KHR_swapchain");
2471 }
2472 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002473 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002474 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002475 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002476 return vkAcquireNextImageKHR_VkResult_return;
2477}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002478static VkResult entry_vkQueuePresentKHR(
2479 VkQueue queue,
2480 const VkPresentInfoKHR* pPresentInfo)
2481{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002482 AEMU_SCOPED_TRACE("vkQueuePresentKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002483 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002484 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002485 vkQueuePresentKHR_VkResult_return = vkEnc->vkQueuePresentKHR(queue, pPresentInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002486 return vkQueuePresentKHR_VkResult_return;
2487}
2488static VkResult entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2489 VkDevice device,
2490 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2491{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002492 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002493 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002494 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002495 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002496 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2497}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002498static VkResult dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2499 VkDevice device,
2500 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2501{
2502 auto resources = ResourceTracker::get();
2503 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2504 {
2505 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPresentCapabilitiesKHR", "VK_KHR_swapchain");
2506 }
2507 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002508 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002509 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002510 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002511 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2512}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002513static VkResult entry_vkGetDeviceGroupSurfacePresentModesKHR(
2514 VkDevice device,
2515 VkSurfaceKHR surface,
2516 VkDeviceGroupPresentModeFlagsKHR* pModes)
2517{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002518 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002519 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002520 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002521 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002522 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2523}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002524static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR(
2525 VkDevice device,
2526 VkSurfaceKHR surface,
2527 VkDeviceGroupPresentModeFlagsKHR* pModes)
2528{
2529 auto resources = ResourceTracker::get();
2530 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2531 {
2532 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModesKHR", "VK_KHR_swapchain");
2533 }
2534 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002535 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002536 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002537 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002538 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2539}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002540static VkResult entry_vkGetPhysicalDevicePresentRectanglesKHR(
2541 VkPhysicalDevice physicalDevice,
2542 VkSurfaceKHR surface,
2543 uint32_t* pRectCount,
2544 VkRect2D* pRects)
2545{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002546 AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002547 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002548 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002549 vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = vkEnc->vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002550 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
2551}
2552static VkResult entry_vkAcquireNextImage2KHR(
2553 VkDevice device,
2554 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2555 uint32_t* pImageIndex)
2556{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002557 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002558 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002559 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002560 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002561 return vkAcquireNextImage2KHR_VkResult_return;
2562}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002563static VkResult dynCheck_entry_vkAcquireNextImage2KHR(
2564 VkDevice device,
2565 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2566 uint32_t* pImageIndex)
2567{
2568 auto resources = ResourceTracker::get();
2569 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2570 {
2571 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImage2KHR", "VK_KHR_swapchain");
2572 }
2573 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002574 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002575 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002576 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002577 return vkAcquireNextImage2KHR_VkResult_return;
2578}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002579#endif
2580#ifdef VK_KHR_display
2581static VkResult entry_vkGetPhysicalDeviceDisplayPropertiesKHR(
2582 VkPhysicalDevice physicalDevice,
2583 uint32_t* pPropertyCount,
2584 VkDisplayPropertiesKHR* pProperties)
2585{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002586 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002587 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002588 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002589 vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002590 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
2591}
2592static VkResult entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
2593 VkPhysicalDevice physicalDevice,
2594 uint32_t* pPropertyCount,
2595 VkDisplayPlanePropertiesKHR* pProperties)
2596{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002597 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002598 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002599 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002600 vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002601 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
2602}
2603static VkResult entry_vkGetDisplayPlaneSupportedDisplaysKHR(
2604 VkPhysicalDevice physicalDevice,
2605 uint32_t planeIndex,
2606 uint32_t* pDisplayCount,
2607 VkDisplayKHR* pDisplays)
2608{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002609 AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002610 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002611 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002612 vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = vkEnc->vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002613 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
2614}
2615static VkResult entry_vkGetDisplayModePropertiesKHR(
2616 VkPhysicalDevice physicalDevice,
2617 VkDisplayKHR display,
2618 uint32_t* pPropertyCount,
2619 VkDisplayModePropertiesKHR* pProperties)
2620{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002621 AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002622 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002623 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002624 vkGetDisplayModePropertiesKHR_VkResult_return = vkEnc->vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002625 return vkGetDisplayModePropertiesKHR_VkResult_return;
2626}
2627static VkResult entry_vkCreateDisplayModeKHR(
2628 VkPhysicalDevice physicalDevice,
2629 VkDisplayKHR display,
2630 const VkDisplayModeCreateInfoKHR* pCreateInfo,
2631 const VkAllocationCallbacks* pAllocator,
2632 VkDisplayModeKHR* pMode)
2633{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002634 AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002635 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002636 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002637 vkCreateDisplayModeKHR_VkResult_return = vkEnc->vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002638 return vkCreateDisplayModeKHR_VkResult_return;
2639}
2640static VkResult entry_vkGetDisplayPlaneCapabilitiesKHR(
2641 VkPhysicalDevice physicalDevice,
2642 VkDisplayModeKHR mode,
2643 uint32_t planeIndex,
2644 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
2645{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002646 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002647 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002648 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002649 vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002650 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
2651}
2652static VkResult entry_vkCreateDisplayPlaneSurfaceKHR(
2653 VkInstance instance,
2654 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
2655 const VkAllocationCallbacks* pAllocator,
2656 VkSurfaceKHR* pSurface)
2657{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002658 AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002659 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002660 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002661 vkCreateDisplayPlaneSurfaceKHR_VkResult_return = vkEnc->vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002662 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
2663}
2664#endif
2665#ifdef VK_KHR_display_swapchain
2666static VkResult entry_vkCreateSharedSwapchainsKHR(
2667 VkDevice device,
2668 uint32_t swapchainCount,
2669 const VkSwapchainCreateInfoKHR* pCreateInfos,
2670 const VkAllocationCallbacks* pAllocator,
2671 VkSwapchainKHR* pSwapchains)
2672{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002673 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002674 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002675 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002676 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002677 return vkCreateSharedSwapchainsKHR_VkResult_return;
2678}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002679static VkResult dynCheck_entry_vkCreateSharedSwapchainsKHR(
2680 VkDevice device,
2681 uint32_t swapchainCount,
2682 const VkSwapchainCreateInfoKHR* pCreateInfos,
2683 const VkAllocationCallbacks* pAllocator,
2684 VkSwapchainKHR* pSwapchains)
2685{
2686 auto resources = ResourceTracker::get();
2687 if (!resources->hasDeviceExtension(device, "VK_KHR_display_swapchain"))
2688 {
2689 sOnInvalidDynamicallyCheckedCall("vkCreateSharedSwapchainsKHR", "VK_KHR_display_swapchain");
2690 }
2691 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002692 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002693 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002694 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002695 return vkCreateSharedSwapchainsKHR_VkResult_return;
2696}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002697#endif
2698#ifdef VK_KHR_xlib_surface
2699static VkResult entry_vkCreateXlibSurfaceKHR(
2700 VkInstance instance,
2701 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
2702 const VkAllocationCallbacks* pAllocator,
2703 VkSurfaceKHR* pSurface)
2704{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002705 AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002706 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002707 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002708 vkCreateXlibSurfaceKHR_VkResult_return = vkEnc->vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002709 return vkCreateXlibSurfaceKHR_VkResult_return;
2710}
2711static VkBool32 entry_vkGetPhysicalDeviceXlibPresentationSupportKHR(
2712 VkPhysicalDevice physicalDevice,
2713 uint32_t queueFamilyIndex,
2714 Display* dpy,
2715 VisualID visualID)
2716{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002717 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002718 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002719 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002720 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002721 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
2722}
2723#endif
2724#ifdef VK_KHR_xcb_surface
2725static VkResult entry_vkCreateXcbSurfaceKHR(
2726 VkInstance instance,
2727 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
2728 const VkAllocationCallbacks* pAllocator,
2729 VkSurfaceKHR* pSurface)
2730{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002731 AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002732 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002733 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002734 vkCreateXcbSurfaceKHR_VkResult_return = vkEnc->vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002735 return vkCreateXcbSurfaceKHR_VkResult_return;
2736}
2737static VkBool32 entry_vkGetPhysicalDeviceXcbPresentationSupportKHR(
2738 VkPhysicalDevice physicalDevice,
2739 uint32_t queueFamilyIndex,
2740 xcb_connection_t* connection,
2741 xcb_visualid_t visual_id)
2742{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002743 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002744 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002745 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002746 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002747 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
2748}
2749#endif
2750#ifdef VK_KHR_wayland_surface
2751static VkResult entry_vkCreateWaylandSurfaceKHR(
2752 VkInstance instance,
2753 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
2754 const VkAllocationCallbacks* pAllocator,
2755 VkSurfaceKHR* pSurface)
2756{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002757 AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002758 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002759 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002760 vkCreateWaylandSurfaceKHR_VkResult_return = vkEnc->vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002761 return vkCreateWaylandSurfaceKHR_VkResult_return;
2762}
2763static VkBool32 entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
2764 VkPhysicalDevice physicalDevice,
2765 uint32_t queueFamilyIndex,
2766 wl_display* display)
2767{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002768 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002769 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002770 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002771 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002772 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
2773}
2774#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002775#ifdef VK_KHR_android_surface
2776static VkResult entry_vkCreateAndroidSurfaceKHR(
2777 VkInstance instance,
2778 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
2779 const VkAllocationCallbacks* pAllocator,
2780 VkSurfaceKHR* pSurface)
2781{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002782 AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002783 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002784 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002785 vkCreateAndroidSurfaceKHR_VkResult_return = vkEnc->vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002786 return vkCreateAndroidSurfaceKHR_VkResult_return;
2787}
2788#endif
2789#ifdef VK_KHR_win32_surface
2790static VkResult entry_vkCreateWin32SurfaceKHR(
2791 VkInstance instance,
2792 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
2793 const VkAllocationCallbacks* pAllocator,
2794 VkSurfaceKHR* pSurface)
2795{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002796 AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002797 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002798 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002799 vkCreateWin32SurfaceKHR_VkResult_return = vkEnc->vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002800 return vkCreateWin32SurfaceKHR_VkResult_return;
2801}
2802static VkBool32 entry_vkGetPhysicalDeviceWin32PresentationSupportKHR(
2803 VkPhysicalDevice physicalDevice,
2804 uint32_t queueFamilyIndex)
2805{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002806 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002807 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002808 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002809 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002810 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
2811}
2812#endif
2813#ifdef VK_KHR_sampler_mirror_clamp_to_edge
2814#endif
2815#ifdef VK_KHR_multiview
2816#endif
2817#ifdef VK_KHR_get_physical_device_properties2
2818static void entry_vkGetPhysicalDeviceFeatures2KHR(
2819 VkPhysicalDevice physicalDevice,
2820 VkPhysicalDeviceFeatures2* pFeatures)
2821{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002822 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002823 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002824 vkEnc->vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002825}
2826static void entry_vkGetPhysicalDeviceProperties2KHR(
2827 VkPhysicalDevice physicalDevice,
2828 VkPhysicalDeviceProperties2* pProperties)
2829{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002830 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002831 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002832 vkEnc->vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002833}
2834static void entry_vkGetPhysicalDeviceFormatProperties2KHR(
2835 VkPhysicalDevice physicalDevice,
2836 VkFormat format,
2837 VkFormatProperties2* pFormatProperties)
2838{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002839 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002840 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002841 vkEnc->vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002842}
2843static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2KHR(
2844 VkPhysicalDevice physicalDevice,
2845 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
2846 VkImageFormatProperties2* pImageFormatProperties)
2847{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002848 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002849 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002850 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07002851 auto resources = ResourceTracker::get();
2852 vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2KHR(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002853 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
2854}
2855static void entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
2856 VkPhysicalDevice physicalDevice,
2857 uint32_t* pQueueFamilyPropertyCount,
2858 VkQueueFamilyProperties2* pQueueFamilyProperties)
2859{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002860 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002861 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002862 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002863}
2864static void entry_vkGetPhysicalDeviceMemoryProperties2KHR(
2865 VkPhysicalDevice physicalDevice,
2866 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
2867{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002868 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002869 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002870 vkEnc->vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002871}
2872static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
2873 VkPhysicalDevice physicalDevice,
2874 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
2875 uint32_t* pPropertyCount,
2876 VkSparseImageFormatProperties2* pProperties)
2877{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002878 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002879 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002880 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002881}
2882#endif
2883#ifdef VK_KHR_device_group
2884static void entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2885 VkDevice device,
2886 uint32_t heapIndex,
2887 uint32_t localDeviceIndex,
2888 uint32_t remoteDeviceIndex,
2889 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2890{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002891 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002892 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002893 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002894}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002895static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2896 VkDevice device,
2897 uint32_t heapIndex,
2898 uint32_t localDeviceIndex,
2899 uint32_t remoteDeviceIndex,
2900 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2901{
2902 auto resources = ResourceTracker::get();
2903 if (!resources->hasDeviceExtension(device, "VK_KHR_device_group"))
2904 {
2905 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeaturesKHR", "VK_KHR_device_group");
2906 }
2907 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002908 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002909 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002910}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002911static void entry_vkCmdSetDeviceMaskKHR(
2912 VkCommandBuffer commandBuffer,
2913 uint32_t deviceMask)
2914{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002915 AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002916 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002917 vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002918}
2919static void entry_vkCmdDispatchBaseKHR(
2920 VkCommandBuffer commandBuffer,
2921 uint32_t baseGroupX,
2922 uint32_t baseGroupY,
2923 uint32_t baseGroupZ,
2924 uint32_t groupCountX,
2925 uint32_t groupCountY,
2926 uint32_t groupCountZ)
2927{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002928 AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002929 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002930 vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002931}
2932#endif
2933#ifdef VK_KHR_shader_draw_parameters
2934#endif
2935#ifdef VK_KHR_maintenance1
2936static void entry_vkTrimCommandPoolKHR(
2937 VkDevice device,
2938 VkCommandPool commandPool,
2939 VkCommandPoolTrimFlags flags)
2940{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002941 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002942 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002943 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002944}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002945static void dynCheck_entry_vkTrimCommandPoolKHR(
2946 VkDevice device,
2947 VkCommandPool commandPool,
2948 VkCommandPoolTrimFlags flags)
2949{
2950 auto resources = ResourceTracker::get();
2951 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance1"))
2952 {
2953 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPoolKHR", "VK_KHR_maintenance1");
2954 }
2955 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002956 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002957 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002958}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002959#endif
2960#ifdef VK_KHR_device_group_creation
2961static VkResult entry_vkEnumeratePhysicalDeviceGroupsKHR(
2962 VkInstance instance,
2963 uint32_t* pPhysicalDeviceGroupCount,
2964 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
2965{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002966 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002967 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002968 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002969 vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002970 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
2971}
2972#endif
2973#ifdef VK_KHR_external_memory_capabilities
2974static void entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
2975 VkPhysicalDevice physicalDevice,
2976 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
2977 VkExternalBufferProperties* pExternalBufferProperties)
2978{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002979 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002980 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002981 vkEnc->vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002982}
2983#endif
2984#ifdef VK_KHR_external_memory
2985#endif
2986#ifdef VK_KHR_external_memory_win32
2987static VkResult entry_vkGetMemoryWin32HandleKHR(
2988 VkDevice device,
2989 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2990 HANDLE* pHandle)
2991{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002992 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002993 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002994 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002995 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002996 return vkGetMemoryWin32HandleKHR_VkResult_return;
2997}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002998static VkResult dynCheck_entry_vkGetMemoryWin32HandleKHR(
2999 VkDevice device,
3000 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3001 HANDLE* pHandle)
3002{
3003 auto resources = ResourceTracker::get();
3004 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
3005 {
3006 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleKHR", "VK_KHR_external_memory_win32");
3007 }
3008 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003009 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003010 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003011 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003012 return vkGetMemoryWin32HandleKHR_VkResult_return;
3013}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003014static VkResult entry_vkGetMemoryWin32HandlePropertiesKHR(
3015 VkDevice device,
3016 VkExternalMemoryHandleTypeFlagBits handleType,
3017 HANDLE handle,
3018 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
3019{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003020 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003021 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003022 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003023 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003024 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
3025}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003026static VkResult dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR(
3027 VkDevice device,
3028 VkExternalMemoryHandleTypeFlagBits handleType,
3029 HANDLE handle,
3030 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
3031{
3032 auto resources = ResourceTracker::get();
3033 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
3034 {
3035 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandlePropertiesKHR", "VK_KHR_external_memory_win32");
3036 }
3037 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003038 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003039 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003040 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003041 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
3042}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003043#endif
3044#ifdef VK_KHR_external_memory_fd
3045static VkResult entry_vkGetMemoryFdKHR(
3046 VkDevice device,
3047 const VkMemoryGetFdInfoKHR* pGetFdInfo,
3048 int* pFd)
3049{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003050 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003051 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003052 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003053 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003054 return vkGetMemoryFdKHR_VkResult_return;
3055}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003056static VkResult dynCheck_entry_vkGetMemoryFdKHR(
3057 VkDevice device,
3058 const VkMemoryGetFdInfoKHR* pGetFdInfo,
3059 int* pFd)
3060{
3061 auto resources = ResourceTracker::get();
3062 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
3063 {
3064 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdKHR", "VK_KHR_external_memory_fd");
3065 }
3066 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003067 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003068 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003069 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003070 return vkGetMemoryFdKHR_VkResult_return;
3071}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003072static VkResult entry_vkGetMemoryFdPropertiesKHR(
3073 VkDevice device,
3074 VkExternalMemoryHandleTypeFlagBits handleType,
3075 int fd,
3076 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
3077{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003078 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003079 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003080 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003081 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003082 return vkGetMemoryFdPropertiesKHR_VkResult_return;
3083}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003084static VkResult dynCheck_entry_vkGetMemoryFdPropertiesKHR(
3085 VkDevice device,
3086 VkExternalMemoryHandleTypeFlagBits handleType,
3087 int fd,
3088 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
3089{
3090 auto resources = ResourceTracker::get();
3091 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
3092 {
3093 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdPropertiesKHR", "VK_KHR_external_memory_fd");
3094 }
3095 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003096 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003097 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003098 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003099 return vkGetMemoryFdPropertiesKHR_VkResult_return;
3100}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003101#endif
3102#ifdef VK_KHR_win32_keyed_mutex
3103#endif
3104#ifdef VK_KHR_external_semaphore_capabilities
3105static void entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
3106 VkPhysicalDevice physicalDevice,
3107 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
3108 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
3109{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003110 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003111 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003112 vkEnc->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003113}
3114#endif
3115#ifdef VK_KHR_external_semaphore
3116#endif
3117#ifdef VK_KHR_external_semaphore_win32
3118static VkResult entry_vkImportSemaphoreWin32HandleKHR(
3119 VkDevice device,
3120 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
3121{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003122 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003123 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003124 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003125 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003126 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
3127}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003128static VkResult dynCheck_entry_vkImportSemaphoreWin32HandleKHR(
3129 VkDevice device,
3130 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
3131{
3132 auto resources = ResourceTracker::get();
3133 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
3134 {
3135 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
3136 }
3137 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003138 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003139 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003140 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003141 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
3142}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003143static VkResult entry_vkGetSemaphoreWin32HandleKHR(
3144 VkDevice device,
3145 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3146 HANDLE* pHandle)
3147{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003148 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003149 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003150 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003151 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003152 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
3153}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003154static VkResult dynCheck_entry_vkGetSemaphoreWin32HandleKHR(
3155 VkDevice device,
3156 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3157 HANDLE* pHandle)
3158{
3159 auto resources = ResourceTracker::get();
3160 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
3161 {
3162 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
3163 }
3164 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003165 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003166 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003167 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003168 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
3169}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003170#endif
3171#ifdef VK_KHR_external_semaphore_fd
3172static VkResult entry_vkImportSemaphoreFdKHR(
3173 VkDevice device,
3174 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
3175{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003176 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003177 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003178 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08003179 auto resources = ResourceTracker::get();
3180 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003181 return vkImportSemaphoreFdKHR_VkResult_return;
3182}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003183static VkResult dynCheck_entry_vkImportSemaphoreFdKHR(
3184 VkDevice device,
3185 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
3186{
3187 auto resources = ResourceTracker::get();
3188 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3189 {
3190 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3191 }
3192 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003193 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003194 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
3195 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
3196 return vkImportSemaphoreFdKHR_VkResult_return;
3197}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003198static VkResult entry_vkGetSemaphoreFdKHR(
3199 VkDevice device,
3200 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3201 int* pFd)
3202{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003203 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003204 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003205 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08003206 auto resources = ResourceTracker::get();
3207 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003208 return vkGetSemaphoreFdKHR_VkResult_return;
3209}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003210static VkResult dynCheck_entry_vkGetSemaphoreFdKHR(
3211 VkDevice device,
3212 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3213 int* pFd)
3214{
3215 auto resources = ResourceTracker::get();
3216 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3217 {
3218 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3219 }
3220 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003221 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003222 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
3223 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3224 return vkGetSemaphoreFdKHR_VkResult_return;
3225}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003226#endif
3227#ifdef VK_KHR_push_descriptor
3228static void entry_vkCmdPushDescriptorSetKHR(
3229 VkCommandBuffer commandBuffer,
3230 VkPipelineBindPoint pipelineBindPoint,
3231 VkPipelineLayout layout,
3232 uint32_t set,
3233 uint32_t descriptorWriteCount,
3234 const VkWriteDescriptorSet* pDescriptorWrites)
3235{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003236 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003237 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003238 vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003239}
3240static void entry_vkCmdPushDescriptorSetWithTemplateKHR(
3241 VkCommandBuffer commandBuffer,
3242 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3243 VkPipelineLayout layout,
3244 uint32_t set,
3245 const void* pData)
3246{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003247 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003248 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003249 vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003250}
3251#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003252#ifdef VK_KHR_shader_float16_int8
3253#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003254#ifdef VK_KHR_16bit_storage
3255#endif
3256#ifdef VK_KHR_incremental_present
3257#endif
3258#ifdef VK_KHR_descriptor_update_template
3259static VkResult entry_vkCreateDescriptorUpdateTemplateKHR(
3260 VkDevice device,
3261 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3262 const VkAllocationCallbacks* pAllocator,
3263 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3264{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003265 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003266 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003267 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003268 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003269 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3270}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003271static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR(
3272 VkDevice device,
3273 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3274 const VkAllocationCallbacks* pAllocator,
3275 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3276{
3277 auto resources = ResourceTracker::get();
3278 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3279 {
3280 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3281 }
3282 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003283 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003284 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003285 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003286 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3287}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003288static void entry_vkDestroyDescriptorUpdateTemplateKHR(
3289 VkDevice device,
3290 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3291 const VkAllocationCallbacks* pAllocator)
3292{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003293 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003294 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003295 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003296}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003297static void dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR(
3298 VkDevice device,
3299 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3300 const VkAllocationCallbacks* pAllocator)
3301{
3302 auto resources = ResourceTracker::get();
3303 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3304 {
3305 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3306 }
3307 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003308 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003309 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003310}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003311static void entry_vkUpdateDescriptorSetWithTemplateKHR(
3312 VkDevice device,
3313 VkDescriptorSet descriptorSet,
3314 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3315 const void* pData)
3316{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003317 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003318 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003319 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003320}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003321static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR(
3322 VkDevice device,
3323 VkDescriptorSet descriptorSet,
3324 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3325 const void* pData)
3326{
3327 auto resources = ResourceTracker::get();
3328 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3329 {
3330 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateKHR", "VK_KHR_descriptor_update_template");
3331 }
3332 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003333 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003334 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003335}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003336#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003337#ifdef VK_KHR_imageless_framebuffer
3338#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003339#ifdef VK_KHR_create_renderpass2
3340static VkResult entry_vkCreateRenderPass2KHR(
3341 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08003342 const VkRenderPassCreateInfo2* pCreateInfo,
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003343 const VkAllocationCallbacks* pAllocator,
3344 VkRenderPass* pRenderPass)
3345{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003346 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003347 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003348 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003349 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003350 return vkCreateRenderPass2KHR_VkResult_return;
3351}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003352static VkResult dynCheck_entry_vkCreateRenderPass2KHR(
3353 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08003354 const VkRenderPassCreateInfo2* pCreateInfo,
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003355 const VkAllocationCallbacks* pAllocator,
3356 VkRenderPass* pRenderPass)
3357{
3358 auto resources = ResourceTracker::get();
3359 if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"))
3360 {
3361 sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2KHR", "VK_KHR_create_renderpass2");
3362 }
3363 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003364 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003365 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003366 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003367 return vkCreateRenderPass2KHR_VkResult_return;
3368}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003369static void entry_vkCmdBeginRenderPass2KHR(
3370 VkCommandBuffer commandBuffer,
3371 const VkRenderPassBeginInfo* pRenderPassBegin,
Yilong Lia8d45f12021-02-07 02:30:21 -08003372 const VkSubpassBeginInfo* pSubpassBeginInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003373{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003374 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003375 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003376 vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003377}
3378static void entry_vkCmdNextSubpass2KHR(
3379 VkCommandBuffer commandBuffer,
Yilong Lia8d45f12021-02-07 02:30:21 -08003380 const VkSubpassBeginInfo* pSubpassBeginInfo,
3381 const VkSubpassEndInfo* pSubpassEndInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003382{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003383 AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003384 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003385 vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003386}
3387static void entry_vkCmdEndRenderPass2KHR(
3388 VkCommandBuffer commandBuffer,
Yilong Lia8d45f12021-02-07 02:30:21 -08003389 const VkSubpassEndInfo* pSubpassEndInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003390{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003391 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003392 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003393 vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003394}
3395#endif
3396#ifdef VK_KHR_shared_presentable_image
3397static VkResult entry_vkGetSwapchainStatusKHR(
3398 VkDevice device,
3399 VkSwapchainKHR swapchain)
3400{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003401 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003402 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003403 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003404 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003405 return vkGetSwapchainStatusKHR_VkResult_return;
3406}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003407static VkResult dynCheck_entry_vkGetSwapchainStatusKHR(
3408 VkDevice device,
3409 VkSwapchainKHR swapchain)
3410{
3411 auto resources = ResourceTracker::get();
3412 if (!resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image"))
3413 {
3414 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainStatusKHR", "VK_KHR_shared_presentable_image");
3415 }
3416 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003417 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003418 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003419 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003420 return vkGetSwapchainStatusKHR_VkResult_return;
3421}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003422#endif
3423#ifdef VK_KHR_external_fence_capabilities
3424static void entry_vkGetPhysicalDeviceExternalFencePropertiesKHR(
3425 VkPhysicalDevice physicalDevice,
3426 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
3427 VkExternalFenceProperties* pExternalFenceProperties)
3428{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003429 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003430 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003431 auto resources = ResourceTracker::get();
3432 resources->on_vkGetPhysicalDeviceExternalFencePropertiesKHR(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003433}
3434#endif
3435#ifdef VK_KHR_external_fence
3436#endif
3437#ifdef VK_KHR_external_fence_win32
3438static VkResult entry_vkImportFenceWin32HandleKHR(
3439 VkDevice device,
3440 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3441{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003442 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003443 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003444 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003445 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003446 return vkImportFenceWin32HandleKHR_VkResult_return;
3447}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003448static VkResult dynCheck_entry_vkImportFenceWin32HandleKHR(
3449 VkDevice device,
3450 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3451{
3452 auto resources = ResourceTracker::get();
3453 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3454 {
3455 sOnInvalidDynamicallyCheckedCall("vkImportFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3456 }
3457 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003458 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003459 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003460 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003461 return vkImportFenceWin32HandleKHR_VkResult_return;
3462}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003463static VkResult entry_vkGetFenceWin32HandleKHR(
3464 VkDevice device,
3465 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3466 HANDLE* pHandle)
3467{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003468 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003469 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003470 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003471 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003472 return vkGetFenceWin32HandleKHR_VkResult_return;
3473}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003474static VkResult dynCheck_entry_vkGetFenceWin32HandleKHR(
3475 VkDevice device,
3476 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3477 HANDLE* pHandle)
3478{
3479 auto resources = ResourceTracker::get();
3480 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3481 {
3482 sOnInvalidDynamicallyCheckedCall("vkGetFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3483 }
3484 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003485 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003486 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003487 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003488 return vkGetFenceWin32HandleKHR_VkResult_return;
3489}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003490#endif
3491#ifdef VK_KHR_external_fence_fd
3492static VkResult entry_vkImportFenceFdKHR(
3493 VkDevice device,
3494 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3495{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003496 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003497 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003498 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003499 auto resources = ResourceTracker::get();
3500 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003501 return vkImportFenceFdKHR_VkResult_return;
3502}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003503static VkResult dynCheck_entry_vkImportFenceFdKHR(
3504 VkDevice device,
3505 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3506{
3507 auto resources = ResourceTracker::get();
3508 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3509 {
3510 sOnInvalidDynamicallyCheckedCall("vkImportFenceFdKHR", "VK_KHR_external_fence_fd");
3511 }
3512 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003513 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003514 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
3515 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
3516 return vkImportFenceFdKHR_VkResult_return;
3517}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003518static VkResult entry_vkGetFenceFdKHR(
3519 VkDevice device,
3520 const VkFenceGetFdInfoKHR* pGetFdInfo,
3521 int* pFd)
3522{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003523 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003524 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003525 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003526 auto resources = ResourceTracker::get();
3527 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003528 return vkGetFenceFdKHR_VkResult_return;
3529}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003530static VkResult dynCheck_entry_vkGetFenceFdKHR(
3531 VkDevice device,
3532 const VkFenceGetFdInfoKHR* pGetFdInfo,
3533 int* pFd)
3534{
3535 auto resources = ResourceTracker::get();
3536 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3537 {
3538 sOnInvalidDynamicallyCheckedCall("vkGetFenceFdKHR", "VK_KHR_external_fence_fd");
3539 }
3540 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003541 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003542 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
3543 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3544 return vkGetFenceFdKHR_VkResult_return;
3545}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003546#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003547#ifdef VK_KHR_performance_query
3548static VkResult entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
3549 VkPhysicalDevice physicalDevice,
3550 uint32_t queueFamilyIndex,
3551 uint32_t* pCounterCount,
3552 VkPerformanceCounterKHR* pCounters,
3553 VkPerformanceCounterDescriptionKHR* pCounterDescriptions)
3554{
3555 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
3556 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3557 VkResult vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return = (VkResult)0;
3558 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, true /* do lock */);
3559 return vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return;
3560}
3561static void entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
3562 VkPhysicalDevice physicalDevice,
3563 const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo,
3564 uint32_t* pNumPasses)
3565{
3566 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
3567 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3568 vkEnc->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, true /* do lock */);
3569}
3570static VkResult entry_vkAcquireProfilingLockKHR(
3571 VkDevice device,
3572 const VkAcquireProfilingLockInfoKHR* pInfo)
3573{
3574 AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
3575 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3576 VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
3577 vkAcquireProfilingLockKHR_VkResult_return = vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
3578 return vkAcquireProfilingLockKHR_VkResult_return;
3579}
3580static VkResult dynCheck_entry_vkAcquireProfilingLockKHR(
3581 VkDevice device,
3582 const VkAcquireProfilingLockInfoKHR* pInfo)
3583{
3584 auto resources = ResourceTracker::get();
3585 if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query"))
3586 {
3587 sOnInvalidDynamicallyCheckedCall("vkAcquireProfilingLockKHR", "VK_KHR_performance_query");
3588 }
3589 AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
3590 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3591 VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
3592 vkAcquireProfilingLockKHR_VkResult_return = vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
3593 return vkAcquireProfilingLockKHR_VkResult_return;
3594}
3595static void entry_vkReleaseProfilingLockKHR(
3596 VkDevice device)
3597{
3598 AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
3599 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3600 vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
3601}
3602static void dynCheck_entry_vkReleaseProfilingLockKHR(
3603 VkDevice device)
3604{
3605 auto resources = ResourceTracker::get();
3606 if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query"))
3607 {
3608 sOnInvalidDynamicallyCheckedCall("vkReleaseProfilingLockKHR", "VK_KHR_performance_query");
3609 }
3610 AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
3611 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3612 vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
3613}
3614#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003615#ifdef VK_KHR_maintenance2
3616#endif
3617#ifdef VK_KHR_get_surface_capabilities2
3618static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
3619 VkPhysicalDevice physicalDevice,
3620 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3621 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
3622{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003623 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003624 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003625 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003626 vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003627 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
3628}
3629static VkResult entry_vkGetPhysicalDeviceSurfaceFormats2KHR(
3630 VkPhysicalDevice physicalDevice,
3631 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3632 uint32_t* pSurfaceFormatCount,
3633 VkSurfaceFormat2KHR* pSurfaceFormats)
3634{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003635 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003636 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003637 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003638 vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003639 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
3640}
3641#endif
3642#ifdef VK_KHR_variable_pointers
3643#endif
3644#ifdef VK_KHR_get_display_properties2
3645static VkResult entry_vkGetPhysicalDeviceDisplayProperties2KHR(
3646 VkPhysicalDevice physicalDevice,
3647 uint32_t* pPropertyCount,
3648 VkDisplayProperties2KHR* pProperties)
3649{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003650 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003651 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003652 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003653 vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003654 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
3655}
3656static VkResult entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
3657 VkPhysicalDevice physicalDevice,
3658 uint32_t* pPropertyCount,
3659 VkDisplayPlaneProperties2KHR* pProperties)
3660{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003661 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003662 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003663 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003664 vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003665 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
3666}
3667static VkResult entry_vkGetDisplayModeProperties2KHR(
3668 VkPhysicalDevice physicalDevice,
3669 VkDisplayKHR display,
3670 uint32_t* pPropertyCount,
3671 VkDisplayModeProperties2KHR* pProperties)
3672{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003673 AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003674 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003675 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003676 vkGetDisplayModeProperties2KHR_VkResult_return = vkEnc->vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003677 return vkGetDisplayModeProperties2KHR_VkResult_return;
3678}
3679static VkResult entry_vkGetDisplayPlaneCapabilities2KHR(
3680 VkPhysicalDevice physicalDevice,
3681 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
3682 VkDisplayPlaneCapabilities2KHR* pCapabilities)
3683{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003684 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003685 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003686 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003687 vkGetDisplayPlaneCapabilities2KHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003688 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
3689}
3690#endif
3691#ifdef VK_KHR_dedicated_allocation
3692#endif
3693#ifdef VK_KHR_storage_buffer_storage_class
3694#endif
3695#ifdef VK_KHR_relaxed_block_layout
3696#endif
3697#ifdef VK_KHR_get_memory_requirements2
3698static void entry_vkGetImageMemoryRequirements2KHR(
3699 VkDevice device,
3700 const VkImageMemoryRequirementsInfo2* pInfo,
3701 VkMemoryRequirements2* pMemoryRequirements)
3702{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003703 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003704 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003705 auto resources = ResourceTracker::get();
3706 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003707}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003708static void dynCheck_entry_vkGetImageMemoryRequirements2KHR(
3709 VkDevice device,
3710 const VkImageMemoryRequirementsInfo2* pInfo,
3711 VkMemoryRequirements2* pMemoryRequirements)
3712{
3713 auto resources = ResourceTracker::get();
3714 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3715 {
3716 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3717 }
3718 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003719 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003720 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3721}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003722static void entry_vkGetBufferMemoryRequirements2KHR(
3723 VkDevice device,
3724 const VkBufferMemoryRequirementsInfo2* pInfo,
3725 VkMemoryRequirements2* pMemoryRequirements)
3726{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003727 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003728 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003729 auto resources = ResourceTracker::get();
3730 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003731}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003732static void dynCheck_entry_vkGetBufferMemoryRequirements2KHR(
3733 VkDevice device,
3734 const VkBufferMemoryRequirementsInfo2* pInfo,
3735 VkMemoryRequirements2* pMemoryRequirements)
3736{
3737 auto resources = ResourceTracker::get();
3738 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3739 {
3740 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3741 }
3742 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003743 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003744 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3745}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003746static void entry_vkGetImageSparseMemoryRequirements2KHR(
3747 VkDevice device,
3748 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3749 uint32_t* pSparseMemoryRequirementCount,
3750 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3751{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003752 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003753 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003754 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003755}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003756static void dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR(
3757 VkDevice device,
3758 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3759 uint32_t* pSparseMemoryRequirementCount,
3760 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3761{
3762 auto resources = ResourceTracker::get();
3763 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3764 {
3765 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3766 }
3767 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003768 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003769 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003770}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003771#endif
3772#ifdef VK_KHR_image_format_list
3773#endif
3774#ifdef VK_KHR_sampler_ycbcr_conversion
3775static VkResult entry_vkCreateSamplerYcbcrConversionKHR(
3776 VkDevice device,
3777 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3778 const VkAllocationCallbacks* pAllocator,
3779 VkSamplerYcbcrConversion* pYcbcrConversion)
3780{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003781 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003782 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003783 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08003784 auto resources = ResourceTracker::get();
3785 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003786 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3787}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003788static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversionKHR(
3789 VkDevice device,
3790 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3791 const VkAllocationCallbacks* pAllocator,
3792 VkSamplerYcbcrConversion* pYcbcrConversion)
3793{
3794 auto resources = ResourceTracker::get();
3795 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3796 {
3797 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3798 }
3799 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003800 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003801 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
3802 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
3803 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3804}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003805static void entry_vkDestroySamplerYcbcrConversionKHR(
3806 VkDevice device,
3807 VkSamplerYcbcrConversion ycbcrConversion,
3808 const VkAllocationCallbacks* pAllocator)
3809{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003810 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003811 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07003812 auto resources = ResourceTracker::get();
3813 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003814}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003815static void dynCheck_entry_vkDestroySamplerYcbcrConversionKHR(
3816 VkDevice device,
3817 VkSamplerYcbcrConversion ycbcrConversion,
3818 const VkAllocationCallbacks* pAllocator)
3819{
3820 auto resources = ResourceTracker::get();
3821 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3822 {
3823 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3824 }
3825 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003826 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003827 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
3828}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003829#endif
3830#ifdef VK_KHR_bind_memory2
3831static VkResult entry_vkBindBufferMemory2KHR(
3832 VkDevice device,
3833 uint32_t bindInfoCount,
3834 const VkBindBufferMemoryInfo* pBindInfos)
3835{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003836 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003837 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003838 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003839 auto resources = ResourceTracker::get();
3840 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003841 return vkBindBufferMemory2KHR_VkResult_return;
3842}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003843static VkResult dynCheck_entry_vkBindBufferMemory2KHR(
3844 VkDevice device,
3845 uint32_t bindInfoCount,
3846 const VkBindBufferMemoryInfo* pBindInfos)
3847{
3848 auto resources = ResourceTracker::get();
3849 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3850 {
3851 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2KHR", "VK_KHR_bind_memory2");
3852 }
3853 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003854 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003855 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
3856 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3857 return vkBindBufferMemory2KHR_VkResult_return;
3858}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003859static VkResult entry_vkBindImageMemory2KHR(
3860 VkDevice device,
3861 uint32_t bindInfoCount,
3862 const VkBindImageMemoryInfo* pBindInfos)
3863{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003864 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003865 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003866 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003867 auto resources = ResourceTracker::get();
3868 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003869 return vkBindImageMemory2KHR_VkResult_return;
3870}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003871static VkResult dynCheck_entry_vkBindImageMemory2KHR(
3872 VkDevice device,
3873 uint32_t bindInfoCount,
3874 const VkBindImageMemoryInfo* pBindInfos)
3875{
3876 auto resources = ResourceTracker::get();
3877 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3878 {
3879 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2KHR", "VK_KHR_bind_memory2");
3880 }
3881 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003882 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003883 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
3884 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3885 return vkBindImageMemory2KHR_VkResult_return;
3886}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003887#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003888#ifdef VK_KHR_portability_subset
3889#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003890#ifdef VK_KHR_maintenance3
3891static void entry_vkGetDescriptorSetLayoutSupportKHR(
3892 VkDevice device,
3893 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3894 VkDescriptorSetLayoutSupport* pSupport)
3895{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003896 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003897 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003898 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003899}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003900static void dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR(
3901 VkDevice device,
3902 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3903 VkDescriptorSetLayoutSupport* pSupport)
3904{
3905 auto resources = ResourceTracker::get();
3906 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance3"))
3907 {
3908 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupportKHR", "VK_KHR_maintenance3");
3909 }
3910 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003911 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003912 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003913}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003914#endif
3915#ifdef VK_KHR_draw_indirect_count
3916static void entry_vkCmdDrawIndirectCountKHR(
3917 VkCommandBuffer commandBuffer,
3918 VkBuffer buffer,
3919 VkDeviceSize offset,
3920 VkBuffer countBuffer,
3921 VkDeviceSize countBufferOffset,
3922 uint32_t maxDrawCount,
3923 uint32_t stride)
3924{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003925 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003926 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003927 vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003928}
3929static void entry_vkCmdDrawIndexedIndirectCountKHR(
3930 VkCommandBuffer commandBuffer,
3931 VkBuffer buffer,
3932 VkDeviceSize offset,
3933 VkBuffer countBuffer,
3934 VkDeviceSize countBufferOffset,
3935 uint32_t maxDrawCount,
3936 uint32_t stride)
3937{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003938 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003939 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003940 vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003941}
3942#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003943#ifdef VK_KHR_shader_subgroup_extended_types
3944#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003945#ifdef VK_KHR_8bit_storage
3946#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003947#ifdef VK_KHR_shader_atomic_int64
3948#endif
3949#ifdef VK_KHR_shader_clock
3950#endif
3951#ifdef VK_KHR_driver_properties
3952#endif
3953#ifdef VK_KHR_shader_float_controls
3954#endif
3955#ifdef VK_KHR_depth_stencil_resolve
3956#endif
3957#ifdef VK_KHR_swapchain_mutable_format
3958#endif
3959#ifdef VK_KHR_timeline_semaphore
3960static VkResult entry_vkGetSemaphoreCounterValueKHR(
3961 VkDevice device,
3962 VkSemaphore semaphore,
3963 uint64_t* pValue)
3964{
3965 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
3966 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3967 VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
3968 vkGetSemaphoreCounterValueKHR_VkResult_return = vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
3969 return vkGetSemaphoreCounterValueKHR_VkResult_return;
3970}
3971static VkResult dynCheck_entry_vkGetSemaphoreCounterValueKHR(
3972 VkDevice device,
3973 VkSemaphore semaphore,
3974 uint64_t* pValue)
3975{
3976 auto resources = ResourceTracker::get();
3977 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
3978 {
3979 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreCounterValueKHR", "VK_KHR_timeline_semaphore");
3980 }
3981 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
3982 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3983 VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
3984 vkGetSemaphoreCounterValueKHR_VkResult_return = vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
3985 return vkGetSemaphoreCounterValueKHR_VkResult_return;
3986}
3987static VkResult entry_vkWaitSemaphoresKHR(
3988 VkDevice device,
3989 const VkSemaphoreWaitInfo* pWaitInfo,
3990 uint64_t timeout)
3991{
3992 AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
3993 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3994 VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
3995 vkWaitSemaphoresKHR_VkResult_return = vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
3996 return vkWaitSemaphoresKHR_VkResult_return;
3997}
3998static VkResult dynCheck_entry_vkWaitSemaphoresKHR(
3999 VkDevice device,
4000 const VkSemaphoreWaitInfo* pWaitInfo,
4001 uint64_t timeout)
4002{
4003 auto resources = ResourceTracker::get();
4004 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
4005 {
4006 sOnInvalidDynamicallyCheckedCall("vkWaitSemaphoresKHR", "VK_KHR_timeline_semaphore");
4007 }
4008 AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
4009 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4010 VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
4011 vkWaitSemaphoresKHR_VkResult_return = vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
4012 return vkWaitSemaphoresKHR_VkResult_return;
4013}
4014static VkResult entry_vkSignalSemaphoreKHR(
4015 VkDevice device,
4016 const VkSemaphoreSignalInfo* pSignalInfo)
4017{
4018 AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
4019 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4020 VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
4021 vkSignalSemaphoreKHR_VkResult_return = vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
4022 return vkSignalSemaphoreKHR_VkResult_return;
4023}
4024static VkResult dynCheck_entry_vkSignalSemaphoreKHR(
4025 VkDevice device,
4026 const VkSemaphoreSignalInfo* pSignalInfo)
4027{
4028 auto resources = ResourceTracker::get();
4029 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
4030 {
4031 sOnInvalidDynamicallyCheckedCall("vkSignalSemaphoreKHR", "VK_KHR_timeline_semaphore");
4032 }
4033 AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
4034 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4035 VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
4036 vkSignalSemaphoreKHR_VkResult_return = vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
4037 return vkSignalSemaphoreKHR_VkResult_return;
4038}
4039#endif
4040#ifdef VK_KHR_vulkan_memory_model
4041#endif
4042#ifdef VK_KHR_shader_terminate_invocation
4043#endif
4044#ifdef VK_KHR_fragment_shading_rate
4045static VkResult entry_vkGetPhysicalDeviceFragmentShadingRatesKHR(
4046 VkPhysicalDevice physicalDevice,
4047 uint32_t* pFragmentShadingRateCount,
4048 VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates)
4049{
4050 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFragmentShadingRatesKHR");
4051 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4052 VkResult vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return = (VkResult)0;
4053 vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, true /* do lock */);
4054 return vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return;
4055}
4056static void entry_vkCmdSetFragmentShadingRateKHR(
4057 VkCommandBuffer commandBuffer,
4058 const VkExtent2D* pFragmentSize,
4059 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
4060{
4061 AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateKHR");
4062 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4063 vkEnc->vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, true /* do lock */);
4064}
4065#endif
4066#ifdef VK_KHR_spirv_1_4
4067#endif
4068#ifdef VK_KHR_surface_protected_capabilities
4069#endif
4070#ifdef VK_KHR_separate_depth_stencil_layouts
4071#endif
4072#ifdef VK_KHR_uniform_buffer_standard_layout
4073#endif
4074#ifdef VK_KHR_buffer_device_address
4075static VkDeviceAddress entry_vkGetBufferDeviceAddressKHR(
4076 VkDevice device,
4077 const VkBufferDeviceAddressInfo* pInfo)
4078{
4079 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
4080 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4081 VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
4082 vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
4083 return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
4084}
4085static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressKHR(
4086 VkDevice device,
4087 const VkBufferDeviceAddressInfo* pInfo)
4088{
4089 auto resources = ResourceTracker::get();
4090 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4091 {
4092 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressKHR", "VK_KHR_buffer_device_address");
4093 }
4094 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
4095 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4096 VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
4097 vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
4098 return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
4099}
4100static uint64_t entry_vkGetBufferOpaqueCaptureAddressKHR(
4101 VkDevice device,
4102 const VkBufferDeviceAddressInfo* pInfo)
4103{
4104 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
4105 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4106 uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4107 vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4108 return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
4109}
4110static uint64_t dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR(
4111 VkDevice device,
4112 const VkBufferDeviceAddressInfo* pInfo)
4113{
4114 auto resources = ResourceTracker::get();
4115 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4116 {
4117 sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureAddressKHR", "VK_KHR_buffer_device_address");
4118 }
4119 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
4120 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4121 uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4122 vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4123 return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
4124}
4125static uint64_t entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
4126 VkDevice device,
4127 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
4128{
4129 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
4130 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4131 uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4132 vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4133 return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
4134}
4135static uint64_t dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
4136 VkDevice device,
4137 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
4138{
4139 auto resources = ResourceTracker::get();
4140 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4141 {
4142 sOnInvalidDynamicallyCheckedCall("vkGetDeviceMemoryOpaqueCaptureAddressKHR", "VK_KHR_buffer_device_address");
4143 }
4144 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
4145 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4146 uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4147 vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4148 return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
4149}
4150#endif
4151#ifdef VK_KHR_deferred_host_operations
4152static VkResult entry_vkCreateDeferredOperationKHR(
4153 VkDevice device,
4154 const VkAllocationCallbacks* pAllocator,
4155 VkDeferredOperationKHR* pDeferredOperation)
4156{
4157 AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
4158 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4159 VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
4160 vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, true /* do lock */);
4161 return vkCreateDeferredOperationKHR_VkResult_return;
4162}
4163static VkResult dynCheck_entry_vkCreateDeferredOperationKHR(
4164 VkDevice device,
4165 const VkAllocationCallbacks* pAllocator,
4166 VkDeferredOperationKHR* pDeferredOperation)
4167{
4168 auto resources = ResourceTracker::get();
4169 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4170 {
4171 sOnInvalidDynamicallyCheckedCall("vkCreateDeferredOperationKHR", "VK_KHR_deferred_host_operations");
4172 }
4173 AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
4174 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4175 VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
4176 vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, true /* do lock */);
4177 return vkCreateDeferredOperationKHR_VkResult_return;
4178}
4179static void entry_vkDestroyDeferredOperationKHR(
4180 VkDevice device,
4181 VkDeferredOperationKHR operation,
4182 const VkAllocationCallbacks* pAllocator)
4183{
4184 AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
4185 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4186 vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
4187}
4188static void dynCheck_entry_vkDestroyDeferredOperationKHR(
4189 VkDevice device,
4190 VkDeferredOperationKHR operation,
4191 const VkAllocationCallbacks* pAllocator)
4192{
4193 auto resources = ResourceTracker::get();
4194 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4195 {
4196 sOnInvalidDynamicallyCheckedCall("vkDestroyDeferredOperationKHR", "VK_KHR_deferred_host_operations");
4197 }
4198 AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
4199 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4200 vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
4201}
4202static uint32_t entry_vkGetDeferredOperationMaxConcurrencyKHR(
4203 VkDevice device,
4204 VkDeferredOperationKHR operation)
4205{
4206 AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
4207 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4208 uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
4209 vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
4210 return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
4211}
4212static uint32_t dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR(
4213 VkDevice device,
4214 VkDeferredOperationKHR operation)
4215{
4216 auto resources = ResourceTracker::get();
4217 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4218 {
4219 sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationMaxConcurrencyKHR", "VK_KHR_deferred_host_operations");
4220 }
4221 AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
4222 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4223 uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
4224 vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
4225 return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
4226}
4227static VkResult entry_vkGetDeferredOperationResultKHR(
4228 VkDevice device,
4229 VkDeferredOperationKHR operation)
4230{
4231 AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
4232 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4233 VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
4234 vkGetDeferredOperationResultKHR_VkResult_return = vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
4235 return vkGetDeferredOperationResultKHR_VkResult_return;
4236}
4237static VkResult dynCheck_entry_vkGetDeferredOperationResultKHR(
4238 VkDevice device,
4239 VkDeferredOperationKHR operation)
4240{
4241 auto resources = ResourceTracker::get();
4242 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4243 {
4244 sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationResultKHR", "VK_KHR_deferred_host_operations");
4245 }
4246 AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
4247 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4248 VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
4249 vkGetDeferredOperationResultKHR_VkResult_return = vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
4250 return vkGetDeferredOperationResultKHR_VkResult_return;
4251}
4252static VkResult entry_vkDeferredOperationJoinKHR(
4253 VkDevice device,
4254 VkDeferredOperationKHR operation)
4255{
4256 AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
4257 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4258 VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
4259 vkDeferredOperationJoinKHR_VkResult_return = vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
4260 return vkDeferredOperationJoinKHR_VkResult_return;
4261}
4262static VkResult dynCheck_entry_vkDeferredOperationJoinKHR(
4263 VkDevice device,
4264 VkDeferredOperationKHR operation)
4265{
4266 auto resources = ResourceTracker::get();
4267 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4268 {
4269 sOnInvalidDynamicallyCheckedCall("vkDeferredOperationJoinKHR", "VK_KHR_deferred_host_operations");
4270 }
4271 AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
4272 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4273 VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
4274 vkDeferredOperationJoinKHR_VkResult_return = vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
4275 return vkDeferredOperationJoinKHR_VkResult_return;
4276}
4277#endif
4278#ifdef VK_KHR_pipeline_executable_properties
4279static VkResult entry_vkGetPipelineExecutablePropertiesKHR(
4280 VkDevice device,
4281 const VkPipelineInfoKHR* pPipelineInfo,
4282 uint32_t* pExecutableCount,
4283 VkPipelineExecutablePropertiesKHR* pProperties)
4284{
4285 AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
4286 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4287 VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
4288 vkGetPipelineExecutablePropertiesKHR_VkResult_return = vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, true /* do lock */);
4289 return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
4290}
4291static VkResult dynCheck_entry_vkGetPipelineExecutablePropertiesKHR(
4292 VkDevice device,
4293 const VkPipelineInfoKHR* pPipelineInfo,
4294 uint32_t* pExecutableCount,
4295 VkPipelineExecutablePropertiesKHR* pProperties)
4296{
4297 auto resources = ResourceTracker::get();
4298 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4299 {
4300 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutablePropertiesKHR", "VK_KHR_pipeline_executable_properties");
4301 }
4302 AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
4303 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4304 VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
4305 vkGetPipelineExecutablePropertiesKHR_VkResult_return = vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, true /* do lock */);
4306 return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
4307}
4308static VkResult entry_vkGetPipelineExecutableStatisticsKHR(
4309 VkDevice device,
4310 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4311 uint32_t* pStatisticCount,
4312 VkPipelineExecutableStatisticKHR* pStatistics)
4313{
4314 AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
4315 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4316 VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
4317 vkGetPipelineExecutableStatisticsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, true /* do lock */);
4318 return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
4319}
4320static VkResult dynCheck_entry_vkGetPipelineExecutableStatisticsKHR(
4321 VkDevice device,
4322 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4323 uint32_t* pStatisticCount,
4324 VkPipelineExecutableStatisticKHR* pStatistics)
4325{
4326 auto resources = ResourceTracker::get();
4327 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4328 {
4329 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableStatisticsKHR", "VK_KHR_pipeline_executable_properties");
4330 }
4331 AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
4332 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4333 VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
4334 vkGetPipelineExecutableStatisticsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, true /* do lock */);
4335 return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
4336}
4337static VkResult entry_vkGetPipelineExecutableInternalRepresentationsKHR(
4338 VkDevice device,
4339 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4340 uint32_t* pInternalRepresentationCount,
4341 VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
4342{
4343 AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
4344 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4345 VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
4346 vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, true /* do lock */);
4347 return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
4348}
4349static VkResult dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR(
4350 VkDevice device,
4351 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4352 uint32_t* pInternalRepresentationCount,
4353 VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
4354{
4355 auto resources = ResourceTracker::get();
4356 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4357 {
4358 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableInternalRepresentationsKHR", "VK_KHR_pipeline_executable_properties");
4359 }
4360 AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
4361 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4362 VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
4363 vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, true /* do lock */);
4364 return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
4365}
4366#endif
4367#ifdef VK_KHR_pipeline_library
4368#endif
4369#ifdef VK_KHR_shader_non_semantic_info
4370#endif
4371#ifdef VK_KHR_copy_commands2
4372static void entry_vkCmdCopyBuffer2KHR(
4373 VkCommandBuffer commandBuffer,
4374 const VkCopyBufferInfo2KHR* pCopyBufferInfo)
4375{
4376 AEMU_SCOPED_TRACE("vkCmdCopyBuffer2KHR");
4377 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4378 vkEnc->vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, true /* do lock */);
4379}
4380static void entry_vkCmdCopyImage2KHR(
4381 VkCommandBuffer commandBuffer,
4382 const VkCopyImageInfo2KHR* pCopyImageInfo)
4383{
4384 AEMU_SCOPED_TRACE("vkCmdCopyImage2KHR");
4385 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4386 vkEnc->vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, true /* do lock */);
4387}
4388static void entry_vkCmdCopyBufferToImage2KHR(
4389 VkCommandBuffer commandBuffer,
4390 const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo)
4391{
4392 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage2KHR");
4393 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4394 vkEnc->vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, true /* do lock */);
4395}
4396static void entry_vkCmdCopyImageToBuffer2KHR(
4397 VkCommandBuffer commandBuffer,
4398 const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo)
4399{
4400 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer2KHR");
4401 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4402 vkEnc->vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, true /* do lock */);
4403}
4404static void entry_vkCmdBlitImage2KHR(
4405 VkCommandBuffer commandBuffer,
4406 const VkBlitImageInfo2KHR* pBlitImageInfo)
4407{
4408 AEMU_SCOPED_TRACE("vkCmdBlitImage2KHR");
4409 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4410 vkEnc->vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, true /* do lock */);
4411}
4412static void entry_vkCmdResolveImage2KHR(
4413 VkCommandBuffer commandBuffer,
4414 const VkResolveImageInfo2KHR* pResolveImageInfo)
4415{
4416 AEMU_SCOPED_TRACE("vkCmdResolveImage2KHR");
4417 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4418 vkEnc->vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, true /* do lock */);
4419}
Lingfeng Yang4c056b22020-07-02 11:43:57 -07004420#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08004421#ifdef VK_ANDROID_native_buffer
4422static VkResult entry_vkGetSwapchainGrallocUsageANDROID(
4423 VkDevice device,
4424 VkFormat format,
4425 VkImageUsageFlags imageUsage,
4426 int* grallocUsage)
4427{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004428 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004429 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang808a6312018-11-13 21:06:15 -08004430 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004431 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004432 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
4433}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004434static VkResult dynCheck_entry_vkGetSwapchainGrallocUsageANDROID(
4435 VkDevice device,
4436 VkFormat format,
4437 VkImageUsageFlags imageUsage,
4438 int* grallocUsage)
4439{
4440 auto resources = ResourceTracker::get();
4441 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
4442 {
4443 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainGrallocUsageANDROID", "VK_ANDROID_native_buffer");
4444 }
4445 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004446 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004447 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004448 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004449 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
4450}
Lingfeng Yang808a6312018-11-13 21:06:15 -08004451static VkResult entry_vkAcquireImageANDROID(
4452 VkDevice device,
4453 VkImage image,
4454 int nativeFenceFd,
4455 VkSemaphore semaphore,
4456 VkFence fence)
4457{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004458 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004459 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang808a6312018-11-13 21:06:15 -08004460 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004461 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004462 return vkAcquireImageANDROID_VkResult_return;
4463}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004464static VkResult dynCheck_entry_vkAcquireImageANDROID(
4465 VkDevice device,
4466 VkImage image,
4467 int nativeFenceFd,
4468 VkSemaphore semaphore,
4469 VkFence fence)
4470{
4471 auto resources = ResourceTracker::get();
4472 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
4473 {
4474 sOnInvalidDynamicallyCheckedCall("vkAcquireImageANDROID", "VK_ANDROID_native_buffer");
4475 }
4476 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004477 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004478 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004479 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004480 return vkAcquireImageANDROID_VkResult_return;
4481}
Lingfeng Yang808a6312018-11-13 21:06:15 -08004482static VkResult entry_vkQueueSignalReleaseImageANDROID(
4483 VkQueue queue,
4484 uint32_t waitSemaphoreCount,
4485 const VkSemaphore* pWaitSemaphores,
4486 VkImage image,
4487 int* pNativeFenceFd)
4488{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004489 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004490 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004491 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang084e5342021-07-15 13:06:43 -07004492 auto resources = ResourceTracker::get();
4493 vkQueueSignalReleaseImageANDROID_VkResult_return = resources->on_vkQueueSignalReleaseImageANDROID(vkEnc, VK_SUCCESS, queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004494 return vkQueueSignalReleaseImageANDROID_VkResult_return;
4495}
4496#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004497#ifdef VK_EXT_debug_report
4498static VkResult entry_vkCreateDebugReportCallbackEXT(
4499 VkInstance instance,
4500 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
4501 const VkAllocationCallbacks* pAllocator,
4502 VkDebugReportCallbackEXT* pCallback)
4503{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004504 AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004505 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004506 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004507 vkCreateDebugReportCallbackEXT_VkResult_return = vkEnc->vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004508 return vkCreateDebugReportCallbackEXT_VkResult_return;
4509}
4510static void entry_vkDestroyDebugReportCallbackEXT(
4511 VkInstance instance,
4512 VkDebugReportCallbackEXT callback,
4513 const VkAllocationCallbacks* pAllocator)
4514{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004515 AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004516 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004517 vkEnc->vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004518}
4519static void entry_vkDebugReportMessageEXT(
4520 VkInstance instance,
4521 VkDebugReportFlagsEXT flags,
4522 VkDebugReportObjectTypeEXT objectType,
4523 uint64_t object,
4524 size_t location,
4525 int32_t messageCode,
4526 const char* pLayerPrefix,
4527 const char* pMessage)
4528{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004529 AEMU_SCOPED_TRACE("vkDebugReportMessageEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004530 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004531 vkEnc->vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004532}
4533#endif
4534#ifdef VK_NV_glsl_shader
4535#endif
4536#ifdef VK_EXT_depth_range_unrestricted
4537#endif
4538#ifdef VK_IMG_filter_cubic
4539#endif
4540#ifdef VK_AMD_rasterization_order
4541#endif
4542#ifdef VK_AMD_shader_trinary_minmax
4543#endif
4544#ifdef VK_AMD_shader_explicit_vertex_parameter
4545#endif
4546#ifdef VK_EXT_debug_marker
4547static VkResult entry_vkDebugMarkerSetObjectTagEXT(
4548 VkDevice device,
4549 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
4550{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004551 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004552 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004553 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004554 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004555 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
4556}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004557static VkResult dynCheck_entry_vkDebugMarkerSetObjectTagEXT(
4558 VkDevice device,
4559 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
4560{
4561 auto resources = ResourceTracker::get();
4562 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
4563 {
4564 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectTagEXT", "VK_EXT_debug_marker");
4565 }
4566 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004567 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004568 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004569 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004570 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
4571}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004572static VkResult entry_vkDebugMarkerSetObjectNameEXT(
4573 VkDevice device,
4574 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
4575{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004576 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004577 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004578 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004579 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004580 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
4581}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004582static VkResult dynCheck_entry_vkDebugMarkerSetObjectNameEXT(
4583 VkDevice device,
4584 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
4585{
4586 auto resources = ResourceTracker::get();
4587 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
4588 {
4589 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectNameEXT", "VK_EXT_debug_marker");
4590 }
4591 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004592 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004593 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004594 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004595 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
4596}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004597static void entry_vkCmdDebugMarkerBeginEXT(
4598 VkCommandBuffer commandBuffer,
4599 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
4600{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004601 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004602 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004603 vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004604}
4605static void entry_vkCmdDebugMarkerEndEXT(
4606 VkCommandBuffer commandBuffer)
4607{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004608 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004609 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004610 vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004611}
4612static void entry_vkCmdDebugMarkerInsertEXT(
4613 VkCommandBuffer commandBuffer,
4614 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
4615{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004616 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004617 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004618 vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004619}
4620#endif
4621#ifdef VK_AMD_gcn_shader
4622#endif
4623#ifdef VK_NV_dedicated_allocation
4624#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004625#ifdef VK_EXT_transform_feedback
4626static void entry_vkCmdBindTransformFeedbackBuffersEXT(
4627 VkCommandBuffer commandBuffer,
4628 uint32_t firstBinding,
4629 uint32_t bindingCount,
4630 const VkBuffer* pBuffers,
4631 const VkDeviceSize* pOffsets,
4632 const VkDeviceSize* pSizes)
4633{
4634 AEMU_SCOPED_TRACE("vkCmdBindTransformFeedbackBuffersEXT");
4635 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4636 vkEnc->vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, true /* do lock */);
4637}
4638static void entry_vkCmdBeginTransformFeedbackEXT(
4639 VkCommandBuffer commandBuffer,
4640 uint32_t firstCounterBuffer,
4641 uint32_t counterBufferCount,
4642 const VkBuffer* pCounterBuffers,
4643 const VkDeviceSize* pCounterBufferOffsets)
4644{
4645 AEMU_SCOPED_TRACE("vkCmdBeginTransformFeedbackEXT");
4646 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4647 vkEnc->vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
4648}
4649static void entry_vkCmdEndTransformFeedbackEXT(
4650 VkCommandBuffer commandBuffer,
4651 uint32_t firstCounterBuffer,
4652 uint32_t counterBufferCount,
4653 const VkBuffer* pCounterBuffers,
4654 const VkDeviceSize* pCounterBufferOffsets)
4655{
4656 AEMU_SCOPED_TRACE("vkCmdEndTransformFeedbackEXT");
4657 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4658 vkEnc->vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
4659}
4660static void entry_vkCmdBeginQueryIndexedEXT(
4661 VkCommandBuffer commandBuffer,
4662 VkQueryPool queryPool,
4663 uint32_t query,
4664 VkQueryControlFlags flags,
4665 uint32_t index)
4666{
4667 AEMU_SCOPED_TRACE("vkCmdBeginQueryIndexedEXT");
4668 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4669 vkEnc->vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, true /* do lock */);
4670}
4671static void entry_vkCmdEndQueryIndexedEXT(
4672 VkCommandBuffer commandBuffer,
4673 VkQueryPool queryPool,
4674 uint32_t query,
4675 uint32_t index)
4676{
4677 AEMU_SCOPED_TRACE("vkCmdEndQueryIndexedEXT");
4678 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4679 vkEnc->vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, true /* do lock */);
4680}
4681static void entry_vkCmdDrawIndirectByteCountEXT(
4682 VkCommandBuffer commandBuffer,
4683 uint32_t instanceCount,
4684 uint32_t firstInstance,
4685 VkBuffer counterBuffer,
4686 VkDeviceSize counterBufferOffset,
4687 uint32_t counterOffset,
4688 uint32_t vertexStride)
4689{
4690 AEMU_SCOPED_TRACE("vkCmdDrawIndirectByteCountEXT");
4691 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4692 vkEnc->vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, true /* do lock */);
4693}
4694#endif
4695#ifdef VK_NVX_image_view_handle
4696static uint32_t entry_vkGetImageViewHandleNVX(
4697 VkDevice device,
4698 const VkImageViewHandleInfoNVX* pInfo)
4699{
4700 AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
4701 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4702 uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
4703 vkGetImageViewHandleNVX_uint32_t_return = vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
4704 return vkGetImageViewHandleNVX_uint32_t_return;
4705}
4706static uint32_t dynCheck_entry_vkGetImageViewHandleNVX(
4707 VkDevice device,
4708 const VkImageViewHandleInfoNVX* pInfo)
4709{
4710 auto resources = ResourceTracker::get();
4711 if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle"))
4712 {
4713 sOnInvalidDynamicallyCheckedCall("vkGetImageViewHandleNVX", "VK_NVX_image_view_handle");
4714 }
4715 AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
4716 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4717 uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
4718 vkGetImageViewHandleNVX_uint32_t_return = vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
4719 return vkGetImageViewHandleNVX_uint32_t_return;
4720}
4721static VkResult entry_vkGetImageViewAddressNVX(
4722 VkDevice device,
4723 VkImageView imageView,
4724 VkImageViewAddressPropertiesNVX* pProperties)
4725{
4726 AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
4727 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4728 VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
4729 vkGetImageViewAddressNVX_VkResult_return = vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
4730 return vkGetImageViewAddressNVX_VkResult_return;
4731}
4732static VkResult dynCheck_entry_vkGetImageViewAddressNVX(
4733 VkDevice device,
4734 VkImageView imageView,
4735 VkImageViewAddressPropertiesNVX* pProperties)
4736{
4737 auto resources = ResourceTracker::get();
4738 if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle"))
4739 {
4740 sOnInvalidDynamicallyCheckedCall("vkGetImageViewAddressNVX", "VK_NVX_image_view_handle");
4741 }
4742 AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
4743 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4744 VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
4745 vkGetImageViewAddressNVX_VkResult_return = vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
4746 return vkGetImageViewAddressNVX_VkResult_return;
4747}
4748#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004749#ifdef VK_AMD_draw_indirect_count
4750static void entry_vkCmdDrawIndirectCountAMD(
4751 VkCommandBuffer commandBuffer,
4752 VkBuffer buffer,
4753 VkDeviceSize offset,
4754 VkBuffer countBuffer,
4755 VkDeviceSize countBufferOffset,
4756 uint32_t maxDrawCount,
4757 uint32_t stride)
4758{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004759 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004760 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004761 vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004762}
4763static void entry_vkCmdDrawIndexedIndirectCountAMD(
4764 VkCommandBuffer commandBuffer,
4765 VkBuffer buffer,
4766 VkDeviceSize offset,
4767 VkBuffer countBuffer,
4768 VkDeviceSize countBufferOffset,
4769 uint32_t maxDrawCount,
4770 uint32_t stride)
4771{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004772 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004773 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004774 vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004775}
4776#endif
4777#ifdef VK_AMD_negative_viewport_height
4778#endif
4779#ifdef VK_AMD_gpu_shader_half_float
4780#endif
4781#ifdef VK_AMD_shader_ballot
4782#endif
4783#ifdef VK_AMD_texture_gather_bias_lod
4784#endif
4785#ifdef VK_AMD_shader_info
4786static VkResult entry_vkGetShaderInfoAMD(
4787 VkDevice device,
4788 VkPipeline pipeline,
4789 VkShaderStageFlagBits shaderStage,
4790 VkShaderInfoTypeAMD infoType,
4791 size_t* pInfoSize,
4792 void* pInfo)
4793{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004794 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004795 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004796 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004797 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004798 return vkGetShaderInfoAMD_VkResult_return;
4799}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004800static VkResult dynCheck_entry_vkGetShaderInfoAMD(
4801 VkDevice device,
4802 VkPipeline pipeline,
4803 VkShaderStageFlagBits shaderStage,
4804 VkShaderInfoTypeAMD infoType,
4805 size_t* pInfoSize,
4806 void* pInfo)
4807{
4808 auto resources = ResourceTracker::get();
4809 if (!resources->hasDeviceExtension(device, "VK_AMD_shader_info"))
4810 {
4811 sOnInvalidDynamicallyCheckedCall("vkGetShaderInfoAMD", "VK_AMD_shader_info");
4812 }
4813 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004814 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004815 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004816 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004817 return vkGetShaderInfoAMD_VkResult_return;
4818}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004819#endif
4820#ifdef VK_AMD_shader_image_load_store_lod
4821#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004822#ifdef VK_GGP_stream_descriptor_surface
4823static VkResult entry_vkCreateStreamDescriptorSurfaceGGP(
4824 VkInstance instance,
4825 const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
4826 const VkAllocationCallbacks* pAllocator,
4827 VkSurfaceKHR* pSurface)
4828{
4829 AEMU_SCOPED_TRACE("vkCreateStreamDescriptorSurfaceGGP");
4830 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4831 VkResult vkCreateStreamDescriptorSurfaceGGP_VkResult_return = (VkResult)0;
4832 vkCreateStreamDescriptorSurfaceGGP_VkResult_return = vkEnc->vkCreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
4833 return vkCreateStreamDescriptorSurfaceGGP_VkResult_return;
4834}
4835#endif
4836#ifdef VK_NV_corner_sampled_image
4837#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004838#ifdef VK_IMG_format_pvrtc
4839#endif
4840#ifdef VK_NV_external_memory_capabilities
4841static VkResult entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
4842 VkPhysicalDevice physicalDevice,
4843 VkFormat format,
4844 VkImageType type,
4845 VkImageTiling tiling,
4846 VkImageUsageFlags usage,
4847 VkImageCreateFlags flags,
4848 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
4849 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
4850{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004851 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004852 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004853 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004854 vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004855 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
4856}
4857#endif
4858#ifdef VK_NV_external_memory
4859#endif
4860#ifdef VK_NV_external_memory_win32
4861static VkResult entry_vkGetMemoryWin32HandleNV(
4862 VkDevice device,
4863 VkDeviceMemory memory,
4864 VkExternalMemoryHandleTypeFlagsNV handleType,
4865 HANDLE* pHandle)
4866{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004867 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004868 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004869 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004870 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004871 return vkGetMemoryWin32HandleNV_VkResult_return;
4872}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004873static VkResult dynCheck_entry_vkGetMemoryWin32HandleNV(
4874 VkDevice device,
4875 VkDeviceMemory memory,
4876 VkExternalMemoryHandleTypeFlagsNV handleType,
4877 HANDLE* pHandle)
4878{
4879 auto resources = ResourceTracker::get();
4880 if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_win32"))
4881 {
4882 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleNV", "VK_NV_external_memory_win32");
4883 }
4884 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004885 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004886 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004887 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004888 return vkGetMemoryWin32HandleNV_VkResult_return;
4889}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004890#endif
4891#ifdef VK_NV_win32_keyed_mutex
4892#endif
4893#ifdef VK_EXT_validation_flags
4894#endif
4895#ifdef VK_NN_vi_surface
4896static VkResult entry_vkCreateViSurfaceNN(
4897 VkInstance instance,
4898 const VkViSurfaceCreateInfoNN* pCreateInfo,
4899 const VkAllocationCallbacks* pAllocator,
4900 VkSurfaceKHR* pSurface)
4901{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004902 AEMU_SCOPED_TRACE("vkCreateViSurfaceNN");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004903 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004904 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004905 vkCreateViSurfaceNN_VkResult_return = vkEnc->vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004906 return vkCreateViSurfaceNN_VkResult_return;
4907}
4908#endif
4909#ifdef VK_EXT_shader_subgroup_ballot
4910#endif
4911#ifdef VK_EXT_shader_subgroup_vote
4912#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004913#ifdef VK_EXT_texture_compression_astc_hdr
4914#endif
4915#ifdef VK_EXT_astc_decode_mode
4916#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004917#ifdef VK_EXT_conditional_rendering
4918static void entry_vkCmdBeginConditionalRenderingEXT(
4919 VkCommandBuffer commandBuffer,
4920 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
4921{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004922 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004923 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004924 vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004925}
4926static void entry_vkCmdEndConditionalRenderingEXT(
4927 VkCommandBuffer commandBuffer)
4928{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004929 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004930 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004931 vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004932}
4933#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004934#ifdef VK_NV_clip_space_w_scaling
4935static void entry_vkCmdSetViewportWScalingNV(
4936 VkCommandBuffer commandBuffer,
4937 uint32_t firstViewport,
4938 uint32_t viewportCount,
4939 const VkViewportWScalingNV* pViewportWScalings)
4940{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004941 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004942 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004943 vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004944}
4945#endif
4946#ifdef VK_EXT_direct_mode_display
4947static VkResult entry_vkReleaseDisplayEXT(
4948 VkPhysicalDevice physicalDevice,
4949 VkDisplayKHR display)
4950{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004951 AEMU_SCOPED_TRACE("vkReleaseDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004952 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004953 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004954 vkReleaseDisplayEXT_VkResult_return = vkEnc->vkReleaseDisplayEXT(physicalDevice, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004955 return vkReleaseDisplayEXT_VkResult_return;
4956}
4957#endif
4958#ifdef VK_EXT_acquire_xlib_display
4959static VkResult entry_vkAcquireXlibDisplayEXT(
4960 VkPhysicalDevice physicalDevice,
4961 Display* dpy,
4962 VkDisplayKHR display)
4963{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004964 AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004965 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004966 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004967 vkAcquireXlibDisplayEXT_VkResult_return = vkEnc->vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004968 return vkAcquireXlibDisplayEXT_VkResult_return;
4969}
4970static VkResult entry_vkGetRandROutputDisplayEXT(
4971 VkPhysicalDevice physicalDevice,
4972 Display* dpy,
4973 RROutput rrOutput,
4974 VkDisplayKHR* pDisplay)
4975{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004976 AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004977 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004978 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004979 vkGetRandROutputDisplayEXT_VkResult_return = vkEnc->vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004980 return vkGetRandROutputDisplayEXT_VkResult_return;
4981}
4982#endif
4983#ifdef VK_EXT_display_surface_counter
4984static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
4985 VkPhysicalDevice physicalDevice,
4986 VkSurfaceKHR surface,
4987 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
4988{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004989 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004990 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004991 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004992 vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004993 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
4994}
4995#endif
4996#ifdef VK_EXT_display_control
4997static VkResult entry_vkDisplayPowerControlEXT(
4998 VkDevice device,
4999 VkDisplayKHR display,
5000 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
5001{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005002 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005003 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005004 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005005 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005006 return vkDisplayPowerControlEXT_VkResult_return;
5007}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005008static VkResult dynCheck_entry_vkDisplayPowerControlEXT(
5009 VkDevice device,
5010 VkDisplayKHR display,
5011 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
5012{
5013 auto resources = ResourceTracker::get();
5014 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5015 {
5016 sOnInvalidDynamicallyCheckedCall("vkDisplayPowerControlEXT", "VK_EXT_display_control");
5017 }
5018 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005019 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005020 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005021 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005022 return vkDisplayPowerControlEXT_VkResult_return;
5023}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005024static VkResult entry_vkRegisterDeviceEventEXT(
5025 VkDevice device,
5026 const VkDeviceEventInfoEXT* pDeviceEventInfo,
5027 const VkAllocationCallbacks* pAllocator,
5028 VkFence* pFence)
5029{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005030 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005031 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005032 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005033 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005034 return vkRegisterDeviceEventEXT_VkResult_return;
5035}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005036static VkResult dynCheck_entry_vkRegisterDeviceEventEXT(
5037 VkDevice device,
5038 const VkDeviceEventInfoEXT* pDeviceEventInfo,
5039 const VkAllocationCallbacks* pAllocator,
5040 VkFence* pFence)
5041{
5042 auto resources = ResourceTracker::get();
5043 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5044 {
5045 sOnInvalidDynamicallyCheckedCall("vkRegisterDeviceEventEXT", "VK_EXT_display_control");
5046 }
5047 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005048 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005049 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005050 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005051 return vkRegisterDeviceEventEXT_VkResult_return;
5052}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005053static VkResult entry_vkRegisterDisplayEventEXT(
5054 VkDevice device,
5055 VkDisplayKHR display,
5056 const VkDisplayEventInfoEXT* pDisplayEventInfo,
5057 const VkAllocationCallbacks* pAllocator,
5058 VkFence* pFence)
5059{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005060 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005061 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005062 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005063 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005064 return vkRegisterDisplayEventEXT_VkResult_return;
5065}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005066static VkResult dynCheck_entry_vkRegisterDisplayEventEXT(
5067 VkDevice device,
5068 VkDisplayKHR display,
5069 const VkDisplayEventInfoEXT* pDisplayEventInfo,
5070 const VkAllocationCallbacks* pAllocator,
5071 VkFence* pFence)
5072{
5073 auto resources = ResourceTracker::get();
5074 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5075 {
5076 sOnInvalidDynamicallyCheckedCall("vkRegisterDisplayEventEXT", "VK_EXT_display_control");
5077 }
5078 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005079 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005080 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005081 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005082 return vkRegisterDisplayEventEXT_VkResult_return;
5083}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005084static VkResult entry_vkGetSwapchainCounterEXT(
5085 VkDevice device,
5086 VkSwapchainKHR swapchain,
5087 VkSurfaceCounterFlagBitsEXT counter,
5088 uint64_t* pCounterValue)
5089{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005090 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005091 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005092 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005093 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005094 return vkGetSwapchainCounterEXT_VkResult_return;
5095}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005096static VkResult dynCheck_entry_vkGetSwapchainCounterEXT(
5097 VkDevice device,
5098 VkSwapchainKHR swapchain,
5099 VkSurfaceCounterFlagBitsEXT counter,
5100 uint64_t* pCounterValue)
5101{
5102 auto resources = ResourceTracker::get();
5103 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5104 {
5105 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainCounterEXT", "VK_EXT_display_control");
5106 }
5107 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005108 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005109 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005110 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005111 return vkGetSwapchainCounterEXT_VkResult_return;
5112}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005113#endif
5114#ifdef VK_GOOGLE_display_timing
5115static VkResult entry_vkGetRefreshCycleDurationGOOGLE(
5116 VkDevice device,
5117 VkSwapchainKHR swapchain,
5118 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
5119{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005120 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005121 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005122 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005123 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005124 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
5125}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005126static VkResult dynCheck_entry_vkGetRefreshCycleDurationGOOGLE(
5127 VkDevice device,
5128 VkSwapchainKHR swapchain,
5129 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
5130{
5131 auto resources = ResourceTracker::get();
5132 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
5133 {
5134 sOnInvalidDynamicallyCheckedCall("vkGetRefreshCycleDurationGOOGLE", "VK_GOOGLE_display_timing");
5135 }
5136 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005137 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005138 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005139 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005140 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
5141}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005142static VkResult entry_vkGetPastPresentationTimingGOOGLE(
5143 VkDevice device,
5144 VkSwapchainKHR swapchain,
5145 uint32_t* pPresentationTimingCount,
5146 VkPastPresentationTimingGOOGLE* pPresentationTimings)
5147{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005148 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005149 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005150 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005151 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005152 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
5153}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005154static VkResult dynCheck_entry_vkGetPastPresentationTimingGOOGLE(
5155 VkDevice device,
5156 VkSwapchainKHR swapchain,
5157 uint32_t* pPresentationTimingCount,
5158 VkPastPresentationTimingGOOGLE* pPresentationTimings)
5159{
5160 auto resources = ResourceTracker::get();
5161 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
5162 {
5163 sOnInvalidDynamicallyCheckedCall("vkGetPastPresentationTimingGOOGLE", "VK_GOOGLE_display_timing");
5164 }
5165 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005166 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005167 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005168 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005169 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
5170}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005171#endif
5172#ifdef VK_NV_sample_mask_override_coverage
5173#endif
5174#ifdef VK_NV_geometry_shader_passthrough
5175#endif
5176#ifdef VK_NV_viewport_array2
5177#endif
5178#ifdef VK_NVX_multiview_per_view_attributes
5179#endif
5180#ifdef VK_NV_viewport_swizzle
5181#endif
5182#ifdef VK_EXT_discard_rectangles
5183static void entry_vkCmdSetDiscardRectangleEXT(
5184 VkCommandBuffer commandBuffer,
5185 uint32_t firstDiscardRectangle,
5186 uint32_t discardRectangleCount,
5187 const VkRect2D* pDiscardRectangles)
5188{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005189 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005190 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005191 vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005192}
5193#endif
5194#ifdef VK_EXT_conservative_rasterization
5195#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005196#ifdef VK_EXT_depth_clip_enable
5197#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005198#ifdef VK_EXT_swapchain_colorspace
5199#endif
5200#ifdef VK_EXT_hdr_metadata
5201static void entry_vkSetHdrMetadataEXT(
5202 VkDevice device,
5203 uint32_t swapchainCount,
5204 const VkSwapchainKHR* pSwapchains,
5205 const VkHdrMetadataEXT* pMetadata)
5206{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005207 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005208 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005209 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005210}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005211static void dynCheck_entry_vkSetHdrMetadataEXT(
5212 VkDevice device,
5213 uint32_t swapchainCount,
5214 const VkSwapchainKHR* pSwapchains,
5215 const VkHdrMetadataEXT* pMetadata)
5216{
5217 auto resources = ResourceTracker::get();
5218 if (!resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata"))
5219 {
5220 sOnInvalidDynamicallyCheckedCall("vkSetHdrMetadataEXT", "VK_EXT_hdr_metadata");
5221 }
5222 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005223 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005224 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005225}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005226#endif
5227#ifdef VK_MVK_ios_surface
5228static VkResult entry_vkCreateIOSSurfaceMVK(
5229 VkInstance instance,
5230 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
5231 const VkAllocationCallbacks* pAllocator,
5232 VkSurfaceKHR* pSurface)
5233{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005234 AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005235 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005236 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005237 vkCreateIOSSurfaceMVK_VkResult_return = vkEnc->vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005238 return vkCreateIOSSurfaceMVK_VkResult_return;
5239}
5240#endif
5241#ifdef VK_MVK_macos_surface
5242static VkResult entry_vkCreateMacOSSurfaceMVK(
5243 VkInstance instance,
5244 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
5245 const VkAllocationCallbacks* pAllocator,
5246 VkSurfaceKHR* pSurface)
5247{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005248 AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005249 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005250 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005251 vkCreateMacOSSurfaceMVK_VkResult_return = vkEnc->vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005252 return vkCreateMacOSSurfaceMVK_VkResult_return;
5253}
5254#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005255#ifdef VK_MVK_moltenvk
5256static void entry_vkGetMTLDeviceMVK(
5257 VkPhysicalDevice physicalDevice,
5258 void** pMTLDevice)
5259{
5260 AEMU_SCOPED_TRACE("vkGetMTLDeviceMVK");
5261 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5262 vkEnc->vkGetMTLDeviceMVK(physicalDevice, pMTLDevice, true /* do lock */);
5263}
5264static VkResult entry_vkSetMTLTextureMVK(
5265 VkImage image,
5266 void* mtlTexture)
5267{
5268 AEMU_SCOPED_TRACE("vkSetMTLTextureMVK");
5269 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5270 VkResult vkSetMTLTextureMVK_VkResult_return = (VkResult)0;
5271 vkSetMTLTextureMVK_VkResult_return = vkEnc->vkSetMTLTextureMVK(image, mtlTexture, true /* do lock */);
5272 return vkSetMTLTextureMVK_VkResult_return;
5273}
5274static void entry_vkGetMTLTextureMVK(
5275 VkImage image,
5276 void** pMTLTexture)
5277{
5278 AEMU_SCOPED_TRACE("vkGetMTLTextureMVK");
5279 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5280 vkEnc->vkGetMTLTextureMVK(image, pMTLTexture, true /* do lock */);
5281}
5282static void entry_vkGetMTLBufferMVK(
5283 VkBuffer buffer,
5284 void** pMTLBuffer)
5285{
5286 AEMU_SCOPED_TRACE("vkGetMTLBufferMVK");
5287 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5288 vkEnc->vkGetMTLBufferMVK(buffer, pMTLBuffer, true /* do lock */);
5289}
5290static VkResult entry_vkUseIOSurfaceMVK(
5291 VkImage image,
5292 void* ioSurface)
5293{
5294 AEMU_SCOPED_TRACE("vkUseIOSurfaceMVK");
5295 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5296 VkResult vkUseIOSurfaceMVK_VkResult_return = (VkResult)0;
5297 vkUseIOSurfaceMVK_VkResult_return = vkEnc->vkUseIOSurfaceMVK(image, ioSurface, true /* do lock */);
5298 return vkUseIOSurfaceMVK_VkResult_return;
5299}
5300static void entry_vkGetIOSurfaceMVK(
5301 VkImage image,
5302 void** pIOSurface)
5303{
5304 AEMU_SCOPED_TRACE("vkGetIOSurfaceMVK");
5305 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5306 vkEnc->vkGetIOSurfaceMVK(image, pIOSurface, true /* do lock */);
5307}
5308#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005309#ifdef VK_EXT_external_memory_dma_buf
5310#endif
5311#ifdef VK_EXT_queue_family_foreign
5312#endif
5313#ifdef VK_EXT_debug_utils
5314static VkResult entry_vkSetDebugUtilsObjectNameEXT(
5315 VkDevice device,
5316 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
5317{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005318 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005319 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005320 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005321 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005322 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
5323}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005324static VkResult dynCheck_entry_vkSetDebugUtilsObjectNameEXT(
5325 VkDevice device,
5326 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
5327{
5328 auto resources = ResourceTracker::get();
5329 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
5330 {
5331 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectNameEXT", "VK_EXT_debug_utils");
5332 }
5333 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005334 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005335 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005336 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005337 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
5338}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005339static VkResult entry_vkSetDebugUtilsObjectTagEXT(
5340 VkDevice device,
5341 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
5342{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005343 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005344 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005345 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005346 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005347 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
5348}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005349static VkResult dynCheck_entry_vkSetDebugUtilsObjectTagEXT(
5350 VkDevice device,
5351 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
5352{
5353 auto resources = ResourceTracker::get();
5354 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
5355 {
5356 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectTagEXT", "VK_EXT_debug_utils");
5357 }
5358 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005359 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005360 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005361 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005362 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
5363}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005364static void entry_vkQueueBeginDebugUtilsLabelEXT(
5365 VkQueue queue,
5366 const VkDebugUtilsLabelEXT* pLabelInfo)
5367{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005368 AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005369 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005370 vkEnc->vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005371}
5372static void entry_vkQueueEndDebugUtilsLabelEXT(
5373 VkQueue queue)
5374{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005375 AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005376 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005377 vkEnc->vkQueueEndDebugUtilsLabelEXT(queue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005378}
5379static void entry_vkQueueInsertDebugUtilsLabelEXT(
5380 VkQueue queue,
5381 const VkDebugUtilsLabelEXT* pLabelInfo)
5382{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005383 AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005384 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005385 vkEnc->vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005386}
5387static void entry_vkCmdBeginDebugUtilsLabelEXT(
5388 VkCommandBuffer commandBuffer,
5389 const VkDebugUtilsLabelEXT* pLabelInfo)
5390{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005391 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005392 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005393 vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005394}
5395static void entry_vkCmdEndDebugUtilsLabelEXT(
5396 VkCommandBuffer commandBuffer)
5397{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005398 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005399 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005400 vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005401}
5402static void entry_vkCmdInsertDebugUtilsLabelEXT(
5403 VkCommandBuffer commandBuffer,
5404 const VkDebugUtilsLabelEXT* pLabelInfo)
5405{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005406 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005407 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005408 vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005409}
5410static VkResult entry_vkCreateDebugUtilsMessengerEXT(
5411 VkInstance instance,
5412 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
5413 const VkAllocationCallbacks* pAllocator,
5414 VkDebugUtilsMessengerEXT* pMessenger)
5415{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005416 AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005417 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005418 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005419 vkCreateDebugUtilsMessengerEXT_VkResult_return = vkEnc->vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005420 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
5421}
5422static void entry_vkDestroyDebugUtilsMessengerEXT(
5423 VkInstance instance,
5424 VkDebugUtilsMessengerEXT messenger,
5425 const VkAllocationCallbacks* pAllocator)
5426{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005427 AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005428 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005429 vkEnc->vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005430}
5431static void entry_vkSubmitDebugUtilsMessageEXT(
5432 VkInstance instance,
5433 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
5434 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
5435 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
5436{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005437 AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005438 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005439 vkEnc->vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005440}
5441#endif
5442#ifdef VK_ANDROID_external_memory_android_hardware_buffer
5443static VkResult entry_vkGetAndroidHardwareBufferPropertiesANDROID(
5444 VkDevice device,
5445 const AHardwareBuffer* buffer,
5446 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
5447{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005448 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005449 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005450 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08005451 auto resources = ResourceTracker::get();
5452 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005453 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
5454}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005455static VkResult dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID(
5456 VkDevice device,
5457 const AHardwareBuffer* buffer,
5458 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
5459{
5460 auto resources = ResourceTracker::get();
5461 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
5462 {
5463 sOnInvalidDynamicallyCheckedCall("vkGetAndroidHardwareBufferPropertiesANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
5464 }
5465 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005466 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005467 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
5468 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
5469 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
5470}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005471static VkResult entry_vkGetMemoryAndroidHardwareBufferANDROID(
5472 VkDevice device,
5473 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
5474 AHardwareBuffer** pBuffer)
5475{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005476 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005477 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005478 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08005479 auto resources = ResourceTracker::get();
5480 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005481 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
5482}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005483static VkResult dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID(
5484 VkDevice device,
5485 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
5486 AHardwareBuffer** pBuffer)
5487{
5488 auto resources = ResourceTracker::get();
5489 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
5490 {
5491 sOnInvalidDynamicallyCheckedCall("vkGetMemoryAndroidHardwareBufferANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
5492 }
5493 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005494 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005495 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
5496 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
5497 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
5498}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005499#endif
5500#ifdef VK_EXT_sampler_filter_minmax
5501#endif
5502#ifdef VK_AMD_gpu_shader_int16
5503#endif
5504#ifdef VK_AMD_mixed_attachment_samples
5505#endif
5506#ifdef VK_AMD_shader_fragment_mask
5507#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005508#ifdef VK_EXT_inline_uniform_block
5509#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005510#ifdef VK_EXT_shader_stencil_export
5511#endif
5512#ifdef VK_EXT_sample_locations
5513static void entry_vkCmdSetSampleLocationsEXT(
5514 VkCommandBuffer commandBuffer,
5515 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
5516{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005517 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005518 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005519 vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005520}
5521static void entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(
5522 VkPhysicalDevice physicalDevice,
5523 VkSampleCountFlagBits samples,
5524 VkMultisamplePropertiesEXT* pMultisampleProperties)
5525{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005526 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005527 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005528 vkEnc->vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005529}
5530#endif
5531#ifdef VK_EXT_blend_operation_advanced
5532#endif
5533#ifdef VK_NV_fragment_coverage_to_color
5534#endif
5535#ifdef VK_NV_framebuffer_mixed_samples
5536#endif
5537#ifdef VK_NV_fill_rectangle
5538#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005539#ifdef VK_NV_shader_sm_builtins
5540#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005541#ifdef VK_EXT_post_depth_coverage
5542#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005543#ifdef VK_EXT_image_drm_format_modifier
5544static VkResult entry_vkGetImageDrmFormatModifierPropertiesEXT(
5545 VkDevice device,
5546 VkImage image,
5547 VkImageDrmFormatModifierPropertiesEXT* pProperties)
5548{
5549 AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
5550 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5551 VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
5552 vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, true /* do lock */);
5553 return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
5554}
5555static VkResult dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT(
5556 VkDevice device,
5557 VkImage image,
5558 VkImageDrmFormatModifierPropertiesEXT* pProperties)
5559{
5560 auto resources = ResourceTracker::get();
5561 if (!resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier"))
5562 {
5563 sOnInvalidDynamicallyCheckedCall("vkGetImageDrmFormatModifierPropertiesEXT", "VK_EXT_image_drm_format_modifier");
5564 }
5565 AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
5566 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5567 VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
5568 vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, true /* do lock */);
5569 return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
5570}
5571#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005572#ifdef VK_EXT_validation_cache
5573static VkResult entry_vkCreateValidationCacheEXT(
5574 VkDevice device,
5575 const VkValidationCacheCreateInfoEXT* pCreateInfo,
5576 const VkAllocationCallbacks* pAllocator,
5577 VkValidationCacheEXT* pValidationCache)
5578{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005579 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005580 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005581 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005582 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005583 return vkCreateValidationCacheEXT_VkResult_return;
5584}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005585static VkResult dynCheck_entry_vkCreateValidationCacheEXT(
5586 VkDevice device,
5587 const VkValidationCacheCreateInfoEXT* pCreateInfo,
5588 const VkAllocationCallbacks* pAllocator,
5589 VkValidationCacheEXT* pValidationCache)
5590{
5591 auto resources = ResourceTracker::get();
5592 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5593 {
5594 sOnInvalidDynamicallyCheckedCall("vkCreateValidationCacheEXT", "VK_EXT_validation_cache");
5595 }
5596 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005597 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005598 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005599 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005600 return vkCreateValidationCacheEXT_VkResult_return;
5601}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005602static void entry_vkDestroyValidationCacheEXT(
5603 VkDevice device,
5604 VkValidationCacheEXT validationCache,
5605 const VkAllocationCallbacks* pAllocator)
5606{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005607 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005608 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005609 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005610}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005611static void dynCheck_entry_vkDestroyValidationCacheEXT(
5612 VkDevice device,
5613 VkValidationCacheEXT validationCache,
5614 const VkAllocationCallbacks* pAllocator)
5615{
5616 auto resources = ResourceTracker::get();
5617 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5618 {
5619 sOnInvalidDynamicallyCheckedCall("vkDestroyValidationCacheEXT", "VK_EXT_validation_cache");
5620 }
5621 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005622 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005623 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005624}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005625static VkResult entry_vkMergeValidationCachesEXT(
5626 VkDevice device,
5627 VkValidationCacheEXT dstCache,
5628 uint32_t srcCacheCount,
5629 const VkValidationCacheEXT* pSrcCaches)
5630{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005631 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005632 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005633 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005634 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005635 return vkMergeValidationCachesEXT_VkResult_return;
5636}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005637static VkResult dynCheck_entry_vkMergeValidationCachesEXT(
5638 VkDevice device,
5639 VkValidationCacheEXT dstCache,
5640 uint32_t srcCacheCount,
5641 const VkValidationCacheEXT* pSrcCaches)
5642{
5643 auto resources = ResourceTracker::get();
5644 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5645 {
5646 sOnInvalidDynamicallyCheckedCall("vkMergeValidationCachesEXT", "VK_EXT_validation_cache");
5647 }
5648 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005649 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005650 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005651 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005652 return vkMergeValidationCachesEXT_VkResult_return;
5653}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005654static VkResult entry_vkGetValidationCacheDataEXT(
5655 VkDevice device,
5656 VkValidationCacheEXT validationCache,
5657 size_t* pDataSize,
5658 void* pData)
5659{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005660 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005661 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005662 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005663 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005664 return vkGetValidationCacheDataEXT_VkResult_return;
5665}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005666static VkResult dynCheck_entry_vkGetValidationCacheDataEXT(
5667 VkDevice device,
5668 VkValidationCacheEXT validationCache,
5669 size_t* pDataSize,
5670 void* pData)
5671{
5672 auto resources = ResourceTracker::get();
5673 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5674 {
5675 sOnInvalidDynamicallyCheckedCall("vkGetValidationCacheDataEXT", "VK_EXT_validation_cache");
5676 }
5677 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005678 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005679 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005680 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005681 return vkGetValidationCacheDataEXT_VkResult_return;
5682}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005683#endif
5684#ifdef VK_EXT_descriptor_indexing
5685#endif
5686#ifdef VK_EXT_shader_viewport_index_layer
5687#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005688#ifdef VK_NV_shading_rate_image
5689static void entry_vkCmdBindShadingRateImageNV(
5690 VkCommandBuffer commandBuffer,
5691 VkImageView imageView,
5692 VkImageLayout imageLayout)
5693{
5694 AEMU_SCOPED_TRACE("vkCmdBindShadingRateImageNV");
5695 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5696 vkEnc->vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, true /* do lock */);
5697}
5698static void entry_vkCmdSetViewportShadingRatePaletteNV(
5699 VkCommandBuffer commandBuffer,
5700 uint32_t firstViewport,
5701 uint32_t viewportCount,
5702 const VkShadingRatePaletteNV* pShadingRatePalettes)
5703{
5704 AEMU_SCOPED_TRACE("vkCmdSetViewportShadingRatePaletteNV");
5705 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5706 vkEnc->vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, true /* do lock */);
5707}
5708static void entry_vkCmdSetCoarseSampleOrderNV(
5709 VkCommandBuffer commandBuffer,
5710 VkCoarseSampleOrderTypeNV sampleOrderType,
5711 uint32_t customSampleOrderCount,
5712 const VkCoarseSampleOrderCustomNV* pCustomSampleOrders)
5713{
5714 AEMU_SCOPED_TRACE("vkCmdSetCoarseSampleOrderNV");
5715 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5716 vkEnc->vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, true /* do lock */);
5717}
5718#endif
5719#ifdef VK_NV_ray_tracing
5720static VkResult entry_vkCreateAccelerationStructureNV(
5721 VkDevice device,
5722 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
5723 const VkAllocationCallbacks* pAllocator,
5724 VkAccelerationStructureNV* pAccelerationStructure)
5725{
5726 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
5727 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5728 VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
5729 vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
5730 return vkCreateAccelerationStructureNV_VkResult_return;
5731}
5732static VkResult dynCheck_entry_vkCreateAccelerationStructureNV(
5733 VkDevice device,
5734 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
5735 const VkAllocationCallbacks* pAllocator,
5736 VkAccelerationStructureNV* pAccelerationStructure)
5737{
5738 auto resources = ResourceTracker::get();
5739 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5740 {
5741 sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureNV", "VK_NV_ray_tracing");
5742 }
5743 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
5744 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5745 VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
5746 vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
5747 return vkCreateAccelerationStructureNV_VkResult_return;
5748}
5749static void entry_vkDestroyAccelerationStructureNV(
5750 VkDevice device,
5751 VkAccelerationStructureNV accelerationStructure,
5752 const VkAllocationCallbacks* pAllocator)
5753{
5754 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
5755 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5756 vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, true /* do lock */);
5757}
5758static void dynCheck_entry_vkDestroyAccelerationStructureNV(
5759 VkDevice device,
5760 VkAccelerationStructureNV accelerationStructure,
5761 const VkAllocationCallbacks* pAllocator)
5762{
5763 auto resources = ResourceTracker::get();
5764 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5765 {
5766 sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureNV", "VK_NV_ray_tracing");
5767 }
5768 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
5769 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5770 vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, true /* do lock */);
5771}
5772static void entry_vkGetAccelerationStructureMemoryRequirementsNV(
5773 VkDevice device,
5774 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
5775 VkMemoryRequirements2KHR* pMemoryRequirements)
5776{
5777 AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
5778 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5779 vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
5780}
5781static void dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV(
5782 VkDevice device,
5783 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
5784 VkMemoryRequirements2KHR* pMemoryRequirements)
5785{
5786 auto resources = ResourceTracker::get();
5787 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5788 {
5789 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureMemoryRequirementsNV", "VK_NV_ray_tracing");
5790 }
5791 AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
5792 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5793 vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
5794}
5795static VkResult entry_vkBindAccelerationStructureMemoryNV(
5796 VkDevice device,
5797 uint32_t bindInfoCount,
5798 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
5799{
5800 AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
5801 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5802 VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
5803 vkBindAccelerationStructureMemoryNV_VkResult_return = vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, true /* do lock */);
5804 return vkBindAccelerationStructureMemoryNV_VkResult_return;
5805}
5806static VkResult dynCheck_entry_vkBindAccelerationStructureMemoryNV(
5807 VkDevice device,
5808 uint32_t bindInfoCount,
5809 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
5810{
5811 auto resources = ResourceTracker::get();
5812 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5813 {
5814 sOnInvalidDynamicallyCheckedCall("vkBindAccelerationStructureMemoryNV", "VK_NV_ray_tracing");
5815 }
5816 AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
5817 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5818 VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
5819 vkBindAccelerationStructureMemoryNV_VkResult_return = vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, true /* do lock */);
5820 return vkBindAccelerationStructureMemoryNV_VkResult_return;
5821}
5822static void entry_vkCmdBuildAccelerationStructureNV(
5823 VkCommandBuffer commandBuffer,
5824 const VkAccelerationStructureInfoNV* pInfo,
5825 VkBuffer instanceData,
5826 VkDeviceSize instanceOffset,
5827 VkBool32 update,
5828 VkAccelerationStructureNV dst,
5829 VkAccelerationStructureNV src,
5830 VkBuffer scratch,
5831 VkDeviceSize scratchOffset)
5832{
5833 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructureNV");
5834 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5835 vkEnc->vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, true /* do lock */);
5836}
5837static void entry_vkCmdCopyAccelerationStructureNV(
5838 VkCommandBuffer commandBuffer,
5839 VkAccelerationStructureNV dst,
5840 VkAccelerationStructureNV src,
5841 VkCopyAccelerationStructureModeKHR mode)
5842{
5843 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureNV");
5844 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5845 vkEnc->vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, true /* do lock */);
5846}
5847static void entry_vkCmdTraceRaysNV(
5848 VkCommandBuffer commandBuffer,
5849 VkBuffer raygenShaderBindingTableBuffer,
5850 VkDeviceSize raygenShaderBindingOffset,
5851 VkBuffer missShaderBindingTableBuffer,
5852 VkDeviceSize missShaderBindingOffset,
5853 VkDeviceSize missShaderBindingStride,
5854 VkBuffer hitShaderBindingTableBuffer,
5855 VkDeviceSize hitShaderBindingOffset,
5856 VkDeviceSize hitShaderBindingStride,
5857 VkBuffer callableShaderBindingTableBuffer,
5858 VkDeviceSize callableShaderBindingOffset,
5859 VkDeviceSize callableShaderBindingStride,
5860 uint32_t width,
5861 uint32_t height,
5862 uint32_t depth)
5863{
5864 AEMU_SCOPED_TRACE("vkCmdTraceRaysNV");
5865 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5866 vkEnc->vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, true /* do lock */);
5867}
5868static VkResult entry_vkCreateRayTracingPipelinesNV(
5869 VkDevice device,
5870 VkPipelineCache pipelineCache,
5871 uint32_t createInfoCount,
5872 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
5873 const VkAllocationCallbacks* pAllocator,
5874 VkPipeline* pPipelines)
5875{
5876 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
5877 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5878 VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
5879 vkCreateRayTracingPipelinesNV_VkResult_return = vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
5880 return vkCreateRayTracingPipelinesNV_VkResult_return;
5881}
5882static VkResult dynCheck_entry_vkCreateRayTracingPipelinesNV(
5883 VkDevice device,
5884 VkPipelineCache pipelineCache,
5885 uint32_t createInfoCount,
5886 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
5887 const VkAllocationCallbacks* pAllocator,
5888 VkPipeline* pPipelines)
5889{
5890 auto resources = ResourceTracker::get();
5891 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5892 {
5893 sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesNV", "VK_NV_ray_tracing");
5894 }
5895 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
5896 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5897 VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
5898 vkCreateRayTracingPipelinesNV_VkResult_return = vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
5899 return vkCreateRayTracingPipelinesNV_VkResult_return;
5900}
5901static VkResult entry_vkGetRayTracingShaderGroupHandlesKHR(
5902 VkDevice device,
5903 VkPipeline pipeline,
5904 uint32_t firstGroup,
5905 uint32_t groupCount,
5906 size_t dataSize,
5907 void* pData)
5908{
5909 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
5910 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5911 VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
5912 vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5913 return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
5914}
5915static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR(
5916 VkDevice device,
5917 VkPipeline pipeline,
5918 uint32_t firstGroup,
5919 uint32_t groupCount,
5920 size_t dataSize,
5921 void* pData)
5922{
5923 auto resources = ResourceTracker::get();
5924 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5925 {
5926 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesKHR", "VK_NV_ray_tracing");
5927 }
5928 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
5929 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5930 VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
5931 vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5932 return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
5933}
5934static VkResult entry_vkGetRayTracingShaderGroupHandlesNV(
5935 VkDevice device,
5936 VkPipeline pipeline,
5937 uint32_t firstGroup,
5938 uint32_t groupCount,
5939 size_t dataSize,
5940 void* pData)
5941{
5942 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
5943 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5944 VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
5945 vkGetRayTracingShaderGroupHandlesNV_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5946 return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
5947}
5948static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV(
5949 VkDevice device,
5950 VkPipeline pipeline,
5951 uint32_t firstGroup,
5952 uint32_t groupCount,
5953 size_t dataSize,
5954 void* pData)
5955{
5956 auto resources = ResourceTracker::get();
5957 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5958 {
5959 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesNV", "VK_NV_ray_tracing");
5960 }
5961 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
5962 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5963 VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
5964 vkGetRayTracingShaderGroupHandlesNV_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5965 return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
5966}
5967static VkResult entry_vkGetAccelerationStructureHandleNV(
5968 VkDevice device,
5969 VkAccelerationStructureNV accelerationStructure,
5970 size_t dataSize,
5971 void* pData)
5972{
5973 AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
5974 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5975 VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
5976 vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, true /* do lock */);
5977 return vkGetAccelerationStructureHandleNV_VkResult_return;
5978}
5979static VkResult dynCheck_entry_vkGetAccelerationStructureHandleNV(
5980 VkDevice device,
5981 VkAccelerationStructureNV accelerationStructure,
5982 size_t dataSize,
5983 void* pData)
5984{
5985 auto resources = ResourceTracker::get();
5986 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5987 {
5988 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureHandleNV", "VK_NV_ray_tracing");
5989 }
5990 AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
5991 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5992 VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
5993 vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, true /* do lock */);
5994 return vkGetAccelerationStructureHandleNV_VkResult_return;
5995}
5996static void entry_vkCmdWriteAccelerationStructuresPropertiesNV(
5997 VkCommandBuffer commandBuffer,
5998 uint32_t accelerationStructureCount,
5999 const VkAccelerationStructureNV* pAccelerationStructures,
6000 VkQueryType queryType,
6001 VkQueryPool queryPool,
6002 uint32_t firstQuery)
6003{
6004 AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesNV");
6005 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6006 vkEnc->vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
6007}
6008static VkResult entry_vkCompileDeferredNV(
6009 VkDevice device,
6010 VkPipeline pipeline,
6011 uint32_t shader)
6012{
6013 AEMU_SCOPED_TRACE("vkCompileDeferredNV");
6014 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6015 VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
6016 vkCompileDeferredNV_VkResult_return = vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
6017 return vkCompileDeferredNV_VkResult_return;
6018}
6019static VkResult dynCheck_entry_vkCompileDeferredNV(
6020 VkDevice device,
6021 VkPipeline pipeline,
6022 uint32_t shader)
6023{
6024 auto resources = ResourceTracker::get();
6025 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6026 {
6027 sOnInvalidDynamicallyCheckedCall("vkCompileDeferredNV", "VK_NV_ray_tracing");
6028 }
6029 AEMU_SCOPED_TRACE("vkCompileDeferredNV");
6030 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6031 VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
6032 vkCompileDeferredNV_VkResult_return = vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
6033 return vkCompileDeferredNV_VkResult_return;
6034}
6035#endif
6036#ifdef VK_NV_representative_fragment_test
6037#endif
6038#ifdef VK_EXT_filter_cubic
6039#endif
6040#ifdef VK_QCOM_render_pass_shader_resolve
6041#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006042#ifdef VK_EXT_global_priority
6043#endif
6044#ifdef VK_EXT_external_memory_host
6045static VkResult entry_vkGetMemoryHostPointerPropertiesEXT(
6046 VkDevice device,
6047 VkExternalMemoryHandleTypeFlagBits handleType,
6048 const void* pHostPointer,
6049 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
6050{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006051 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006052 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006053 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006054 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006055 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
6056}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006057static VkResult dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT(
6058 VkDevice device,
6059 VkExternalMemoryHandleTypeFlagBits handleType,
6060 const void* pHostPointer,
6061 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
6062{
6063 auto resources = ResourceTracker::get();
6064 if (!resources->hasDeviceExtension(device, "VK_EXT_external_memory_host"))
6065 {
6066 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostPointerPropertiesEXT", "VK_EXT_external_memory_host");
6067 }
6068 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006069 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006070 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006071 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006072 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
6073}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006074#endif
6075#ifdef VK_AMD_buffer_marker
6076static void entry_vkCmdWriteBufferMarkerAMD(
6077 VkCommandBuffer commandBuffer,
6078 VkPipelineStageFlagBits pipelineStage,
6079 VkBuffer dstBuffer,
6080 VkDeviceSize dstOffset,
6081 uint32_t marker)
6082{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006083 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006084 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006085 vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006086}
6087#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006088#ifdef VK_AMD_pipeline_compiler_control
6089#endif
6090#ifdef VK_EXT_calibrated_timestamps
6091static VkResult entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
6092 VkPhysicalDevice physicalDevice,
6093 uint32_t* pTimeDomainCount,
6094 VkTimeDomainEXT* pTimeDomains)
6095{
6096 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCalibrateableTimeDomainsEXT");
6097 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6098 VkResult vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return = (VkResult)0;
6099 vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return = vkEnc->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, true /* do lock */);
6100 return vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return;
6101}
6102static VkResult entry_vkGetCalibratedTimestampsEXT(
6103 VkDevice device,
6104 uint32_t timestampCount,
6105 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
6106 uint64_t* pTimestamps,
6107 uint64_t* pMaxDeviation)
6108{
6109 AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
6110 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6111 VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
6112 vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
6113 return vkGetCalibratedTimestampsEXT_VkResult_return;
6114}
6115static VkResult dynCheck_entry_vkGetCalibratedTimestampsEXT(
6116 VkDevice device,
6117 uint32_t timestampCount,
6118 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
6119 uint64_t* pTimestamps,
6120 uint64_t* pMaxDeviation)
6121{
6122 auto resources = ResourceTracker::get();
6123 if (!resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps"))
6124 {
6125 sOnInvalidDynamicallyCheckedCall("vkGetCalibratedTimestampsEXT", "VK_EXT_calibrated_timestamps");
6126 }
6127 AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
6128 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6129 VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
6130 vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
6131 return vkGetCalibratedTimestampsEXT_VkResult_return;
6132}
6133#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006134#ifdef VK_AMD_shader_core_properties
6135#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006136#ifdef VK_AMD_memory_overallocation_behavior
6137#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006138#ifdef VK_EXT_vertex_attribute_divisor
6139#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006140#ifdef VK_GGP_frame_token
6141#endif
6142#ifdef VK_EXT_pipeline_creation_feedback
6143#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006144#ifdef VK_NV_shader_subgroup_partitioned
6145#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006146#ifdef VK_NV_compute_shader_derivatives
6147#endif
6148#ifdef VK_NV_mesh_shader
6149static void entry_vkCmdDrawMeshTasksNV(
6150 VkCommandBuffer commandBuffer,
6151 uint32_t taskCount,
6152 uint32_t firstTask)
6153{
6154 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksNV");
6155 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6156 vkEnc->vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, true /* do lock */);
6157}
6158static void entry_vkCmdDrawMeshTasksIndirectNV(
6159 VkCommandBuffer commandBuffer,
6160 VkBuffer buffer,
6161 VkDeviceSize offset,
6162 uint32_t drawCount,
6163 uint32_t stride)
6164{
6165 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectNV");
6166 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6167 vkEnc->vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
6168}
6169static void entry_vkCmdDrawMeshTasksIndirectCountNV(
6170 VkCommandBuffer commandBuffer,
6171 VkBuffer buffer,
6172 VkDeviceSize offset,
6173 VkBuffer countBuffer,
6174 VkDeviceSize countBufferOffset,
6175 uint32_t maxDrawCount,
6176 uint32_t stride)
6177{
6178 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectCountNV");
6179 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6180 vkEnc->vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
6181}
6182#endif
6183#ifdef VK_NV_fragment_shader_barycentric
6184#endif
6185#ifdef VK_NV_shader_image_footprint
6186#endif
6187#ifdef VK_NV_scissor_exclusive
6188static void entry_vkCmdSetExclusiveScissorNV(
6189 VkCommandBuffer commandBuffer,
6190 uint32_t firstExclusiveScissor,
6191 uint32_t exclusiveScissorCount,
6192 const VkRect2D* pExclusiveScissors)
6193{
6194 AEMU_SCOPED_TRACE("vkCmdSetExclusiveScissorNV");
6195 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6196 vkEnc->vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, true /* do lock */);
6197}
6198#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006199#ifdef VK_NV_device_diagnostic_checkpoints
6200static void entry_vkCmdSetCheckpointNV(
6201 VkCommandBuffer commandBuffer,
6202 const void* pCheckpointMarker)
6203{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006204 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006205 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006206 vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006207}
6208static void entry_vkGetQueueCheckpointDataNV(
6209 VkQueue queue,
6210 uint32_t* pCheckpointDataCount,
6211 VkCheckpointDataNV* pCheckpointData)
6212{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006213 AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006214 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006215 vkEnc->vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006216}
6217#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006218#ifdef VK_INTEL_shader_integer_functions2
6219#endif
6220#ifdef VK_INTEL_performance_query
6221static VkResult entry_vkInitializePerformanceApiINTEL(
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006222 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08006223 const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006224{
Yilong Lia8d45f12021-02-07 02:30:21 -08006225 AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006226 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Yilong Lia8d45f12021-02-07 02:30:21 -08006227 VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
6228 vkInitializePerformanceApiINTEL_VkResult_return = vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
6229 return vkInitializePerformanceApiINTEL_VkResult_return;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006230}
Yilong Lia8d45f12021-02-07 02:30:21 -08006231static VkResult dynCheck_entry_vkInitializePerformanceApiINTEL(
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006232 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08006233 const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006234{
6235 auto resources = ResourceTracker::get();
Yilong Lia8d45f12021-02-07 02:30:21 -08006236 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006237 {
Yilong Lia8d45f12021-02-07 02:30:21 -08006238 sOnInvalidDynamicallyCheckedCall("vkInitializePerformanceApiINTEL", "VK_INTEL_performance_query");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006239 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006240 AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006241 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Yilong Lia8d45f12021-02-07 02:30:21 -08006242 VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
6243 vkInitializePerformanceApiINTEL_VkResult_return = vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
6244 return vkInitializePerformanceApiINTEL_VkResult_return;
6245}
6246static void entry_vkUninitializePerformanceApiINTEL(
6247 VkDevice device)
6248{
6249 AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
6250 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6251 vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
6252}
6253static void dynCheck_entry_vkUninitializePerformanceApiINTEL(
6254 VkDevice device)
6255{
6256 auto resources = ResourceTracker::get();
6257 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6258 {
6259 sOnInvalidDynamicallyCheckedCall("vkUninitializePerformanceApiINTEL", "VK_INTEL_performance_query");
6260 }
6261 AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
6262 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6263 vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
6264}
6265static VkResult entry_vkCmdSetPerformanceMarkerINTEL(
6266 VkCommandBuffer commandBuffer,
6267 const VkPerformanceMarkerInfoINTEL* pMarkerInfo)
6268{
6269 AEMU_SCOPED_TRACE("vkCmdSetPerformanceMarkerINTEL");
6270 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6271 VkResult vkCmdSetPerformanceMarkerINTEL_VkResult_return = (VkResult)0;
6272 vkCmdSetPerformanceMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
6273 return vkCmdSetPerformanceMarkerINTEL_VkResult_return;
6274}
6275static VkResult entry_vkCmdSetPerformanceStreamMarkerINTEL(
6276 VkCommandBuffer commandBuffer,
6277 const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo)
6278{
6279 AEMU_SCOPED_TRACE("vkCmdSetPerformanceStreamMarkerINTEL");
6280 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6281 VkResult vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = (VkResult)0;
6282 vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
6283 return vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return;
6284}
6285static VkResult entry_vkCmdSetPerformanceOverrideINTEL(
6286 VkCommandBuffer commandBuffer,
6287 const VkPerformanceOverrideInfoINTEL* pOverrideInfo)
6288{
6289 AEMU_SCOPED_TRACE("vkCmdSetPerformanceOverrideINTEL");
6290 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6291 VkResult vkCmdSetPerformanceOverrideINTEL_VkResult_return = (VkResult)0;
6292 vkCmdSetPerformanceOverrideINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, true /* do lock */);
6293 return vkCmdSetPerformanceOverrideINTEL_VkResult_return;
6294}
6295static VkResult entry_vkAcquirePerformanceConfigurationINTEL(
6296 VkDevice device,
6297 const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
6298 VkPerformanceConfigurationINTEL* pConfiguration)
6299{
6300 AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
6301 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6302 VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6303 vkAcquirePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, true /* do lock */);
6304 return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
6305}
6306static VkResult dynCheck_entry_vkAcquirePerformanceConfigurationINTEL(
6307 VkDevice device,
6308 const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
6309 VkPerformanceConfigurationINTEL* pConfiguration)
6310{
6311 auto resources = ResourceTracker::get();
6312 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6313 {
6314 sOnInvalidDynamicallyCheckedCall("vkAcquirePerformanceConfigurationINTEL", "VK_INTEL_performance_query");
6315 }
6316 AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
6317 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6318 VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6319 vkAcquirePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, true /* do lock */);
6320 return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
6321}
6322static VkResult entry_vkReleasePerformanceConfigurationINTEL(
6323 VkDevice device,
6324 VkPerformanceConfigurationINTEL configuration)
6325{
6326 AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
6327 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6328 VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6329 vkReleasePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
6330 return vkReleasePerformanceConfigurationINTEL_VkResult_return;
6331}
6332static VkResult dynCheck_entry_vkReleasePerformanceConfigurationINTEL(
6333 VkDevice device,
6334 VkPerformanceConfigurationINTEL configuration)
6335{
6336 auto resources = ResourceTracker::get();
6337 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6338 {
6339 sOnInvalidDynamicallyCheckedCall("vkReleasePerformanceConfigurationINTEL", "VK_INTEL_performance_query");
6340 }
6341 AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
6342 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6343 VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6344 vkReleasePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
6345 return vkReleasePerformanceConfigurationINTEL_VkResult_return;
6346}
6347static VkResult entry_vkQueueSetPerformanceConfigurationINTEL(
6348 VkQueue queue,
6349 VkPerformanceConfigurationINTEL configuration)
6350{
6351 AEMU_SCOPED_TRACE("vkQueueSetPerformanceConfigurationINTEL");
6352 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
6353 VkResult vkQueueSetPerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6354 vkQueueSetPerformanceConfigurationINTEL_VkResult_return = vkEnc->vkQueueSetPerformanceConfigurationINTEL(queue, configuration, true /* do lock */);
6355 return vkQueueSetPerformanceConfigurationINTEL_VkResult_return;
6356}
6357static VkResult entry_vkGetPerformanceParameterINTEL(
6358 VkDevice device,
6359 VkPerformanceParameterTypeINTEL parameter,
6360 VkPerformanceValueINTEL* pValue)
6361{
6362 AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
6363 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6364 VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
6365 vkGetPerformanceParameterINTEL_VkResult_return = vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
6366 return vkGetPerformanceParameterINTEL_VkResult_return;
6367}
6368static VkResult dynCheck_entry_vkGetPerformanceParameterINTEL(
6369 VkDevice device,
6370 VkPerformanceParameterTypeINTEL parameter,
6371 VkPerformanceValueINTEL* pValue)
6372{
6373 auto resources = ResourceTracker::get();
6374 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6375 {
6376 sOnInvalidDynamicallyCheckedCall("vkGetPerformanceParameterINTEL", "VK_INTEL_performance_query");
6377 }
6378 AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
6379 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6380 VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
6381 vkGetPerformanceParameterINTEL_VkResult_return = vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
6382 return vkGetPerformanceParameterINTEL_VkResult_return;
6383}
6384#endif
6385#ifdef VK_EXT_pci_bus_info
6386#endif
6387#ifdef VK_AMD_display_native_hdr
6388static void entry_vkSetLocalDimmingAMD(
6389 VkDevice device,
6390 VkSwapchainKHR swapChain,
6391 VkBool32 localDimmingEnable)
6392{
6393 AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
6394 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6395 vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
6396}
6397static void dynCheck_entry_vkSetLocalDimmingAMD(
6398 VkDevice device,
6399 VkSwapchainKHR swapChain,
6400 VkBool32 localDimmingEnable)
6401{
6402 auto resources = ResourceTracker::get();
6403 if (!resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr"))
6404 {
6405 sOnInvalidDynamicallyCheckedCall("vkSetLocalDimmingAMD", "VK_AMD_display_native_hdr");
6406 }
6407 AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
6408 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6409 vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
6410}
6411#endif
6412#ifdef VK_FUCHSIA_imagepipe_surface
6413static VkResult entry_vkCreateImagePipeSurfaceFUCHSIA(
6414 VkInstance instance,
6415 const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
6416 const VkAllocationCallbacks* pAllocator,
6417 VkSurfaceKHR* pSurface)
6418{
6419 AEMU_SCOPED_TRACE("vkCreateImagePipeSurfaceFUCHSIA");
6420 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6421 VkResult vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = (VkResult)0;
6422 vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = vkEnc->vkCreateImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
6423 return vkCreateImagePipeSurfaceFUCHSIA_VkResult_return;
6424}
6425#endif
6426#ifdef VK_EXT_metal_surface
6427static VkResult entry_vkCreateMetalSurfaceEXT(
6428 VkInstance instance,
6429 const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
6430 const VkAllocationCallbacks* pAllocator,
6431 VkSurfaceKHR* pSurface)
6432{
6433 AEMU_SCOPED_TRACE("vkCreateMetalSurfaceEXT");
6434 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6435 VkResult vkCreateMetalSurfaceEXT_VkResult_return = (VkResult)0;
6436 vkCreateMetalSurfaceEXT_VkResult_return = vkEnc->vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
6437 return vkCreateMetalSurfaceEXT_VkResult_return;
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006438}
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006439#endif
Yilong Li48081632021-04-13 22:38:10 -07006440#ifdef VK_EXT_fragment_density_map
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006441#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006442#ifdef VK_EXT_scalar_block_layout
6443#endif
6444#ifdef VK_GOOGLE_hlsl_functionality1
6445#endif
6446#ifdef VK_GOOGLE_decorate_string
6447#endif
6448#ifdef VK_EXT_subgroup_size_control
6449#endif
6450#ifdef VK_AMD_shader_core_properties2
6451#endif
6452#ifdef VK_AMD_device_coherent_memory
6453#endif
6454#ifdef VK_EXT_shader_image_atomic_int64
6455#endif
6456#ifdef VK_EXT_memory_budget
6457#endif
6458#ifdef VK_EXT_memory_priority
6459#endif
6460#ifdef VK_NV_dedicated_allocation_image_aliasing
6461#endif
6462#ifdef VK_EXT_buffer_device_address
6463static VkDeviceAddress entry_vkGetBufferDeviceAddressEXT(
6464 VkDevice device,
6465 const VkBufferDeviceAddressInfo* pInfo)
6466{
6467 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
6468 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6469 VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
6470 vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
6471 return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
6472}
6473static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressEXT(
6474 VkDevice device,
6475 const VkBufferDeviceAddressInfo* pInfo)
6476{
6477 auto resources = ResourceTracker::get();
6478 if (!resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address"))
6479 {
6480 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressEXT", "VK_EXT_buffer_device_address");
6481 }
6482 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
6483 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6484 VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
6485 vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
6486 return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
6487}
6488#endif
6489#ifdef VK_EXT_tooling_info
6490static VkResult entry_vkGetPhysicalDeviceToolPropertiesEXT(
6491 VkPhysicalDevice physicalDevice,
6492 uint32_t* pToolCount,
6493 VkPhysicalDeviceToolPropertiesEXT* pToolProperties)
6494{
6495 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceToolPropertiesEXT");
6496 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6497 VkResult vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = (VkResult)0;
6498 vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = vkEnc->vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, true /* do lock */);
6499 return vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return;
6500}
6501#endif
6502#ifdef VK_EXT_separate_stencil_usage
6503#endif
6504#ifdef VK_EXT_validation_features
6505#endif
6506#ifdef VK_NV_cooperative_matrix
6507static VkResult entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
6508 VkPhysicalDevice physicalDevice,
6509 uint32_t* pPropertyCount,
6510 VkCooperativeMatrixPropertiesNV* pProperties)
6511{
6512 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
6513 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6514 VkResult vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return = (VkResult)0;
6515 vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
6516 return vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return;
6517}
6518#endif
6519#ifdef VK_NV_coverage_reduction_mode
6520static VkResult entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
6521 VkPhysicalDevice physicalDevice,
6522 uint32_t* pCombinationCount,
6523 VkFramebufferMixedSamplesCombinationNV* pCombinations)
6524{
6525 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
6526 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6527 VkResult vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return = (VkResult)0;
6528 vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return = vkEnc->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, true /* do lock */);
6529 return vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return;
6530}
6531#endif
6532#ifdef VK_EXT_fragment_shader_interlock
6533#endif
6534#ifdef VK_EXT_ycbcr_image_arrays
6535#endif
6536#ifdef VK_EXT_full_screen_exclusive
6537static VkResult entry_vkGetPhysicalDeviceSurfacePresentModes2EXT(
6538 VkPhysicalDevice physicalDevice,
6539 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
6540 uint32_t* pPresentModeCount,
6541 VkPresentModeKHR* pPresentModes)
6542{
6543 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModes2EXT");
6544 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6545 VkResult vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
6546 vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes, true /* do lock */);
6547 return vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return;
6548}
6549static VkResult entry_vkAcquireFullScreenExclusiveModeEXT(
6550 VkDevice device,
6551 VkSwapchainKHR swapchain)
6552{
6553 AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
6554 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6555 VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6556 vkAcquireFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6557 return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
6558}
6559static VkResult dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT(
6560 VkDevice device,
6561 VkSwapchainKHR swapchain)
6562{
6563 auto resources = ResourceTracker::get();
6564 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
6565 {
6566 sOnInvalidDynamicallyCheckedCall("vkAcquireFullScreenExclusiveModeEXT", "VK_EXT_full_screen_exclusive");
6567 }
6568 AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
6569 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6570 VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6571 vkAcquireFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6572 return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
6573}
6574static VkResult entry_vkReleaseFullScreenExclusiveModeEXT(
6575 VkDevice device,
6576 VkSwapchainKHR swapchain)
6577{
6578 AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
6579 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6580 VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6581 vkReleaseFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6582 return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
6583}
6584static VkResult dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT(
6585 VkDevice device,
6586 VkSwapchainKHR swapchain)
6587{
6588 auto resources = ResourceTracker::get();
6589 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
6590 {
6591 sOnInvalidDynamicallyCheckedCall("vkReleaseFullScreenExclusiveModeEXT", "VK_EXT_full_screen_exclusive");
6592 }
6593 AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
6594 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6595 VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6596 vkReleaseFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6597 return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
6598}
6599static VkResult entry_vkGetDeviceGroupSurfacePresentModes2EXT(
6600 VkDevice device,
6601 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
6602 VkDeviceGroupPresentModeFlagsKHR* pModes)
6603{
6604 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
6605 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6606 VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
6607 vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, true /* do lock */);
6608 return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
6609}
6610static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT(
6611 VkDevice device,
6612 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
6613 VkDeviceGroupPresentModeFlagsKHR* pModes)
6614{
6615 auto resources = ResourceTracker::get();
6616 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
6617 {
6618 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModes2EXT", "VK_EXT_full_screen_exclusive");
6619 }
6620 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
6621 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6622 VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
6623 vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, true /* do lock */);
6624 return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
6625}
6626#endif
6627#ifdef VK_EXT_headless_surface
6628static VkResult entry_vkCreateHeadlessSurfaceEXT(
6629 VkInstance instance,
6630 const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo,
6631 const VkAllocationCallbacks* pAllocator,
6632 VkSurfaceKHR* pSurface)
6633{
6634 AEMU_SCOPED_TRACE("vkCreateHeadlessSurfaceEXT");
6635 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6636 VkResult vkCreateHeadlessSurfaceEXT_VkResult_return = (VkResult)0;
6637 vkCreateHeadlessSurfaceEXT_VkResult_return = vkEnc->vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
6638 return vkCreateHeadlessSurfaceEXT_VkResult_return;
6639}
6640#endif
6641#ifdef VK_EXT_line_rasterization
6642static void entry_vkCmdSetLineStippleEXT(
6643 VkCommandBuffer commandBuffer,
6644 uint32_t lineStippleFactor,
6645 uint16_t lineStipplePattern)
6646{
6647 AEMU_SCOPED_TRACE("vkCmdSetLineStippleEXT");
6648 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6649 vkEnc->vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, true /* do lock */);
6650}
6651#endif
6652#ifdef VK_EXT_shader_atomic_float
6653#endif
6654#ifdef VK_EXT_host_query_reset
6655static void entry_vkResetQueryPoolEXT(
6656 VkDevice device,
6657 VkQueryPool queryPool,
6658 uint32_t firstQuery,
6659 uint32_t queryCount)
6660{
6661 AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
6662 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6663 vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
6664}
6665static void dynCheck_entry_vkResetQueryPoolEXT(
6666 VkDevice device,
6667 VkQueryPool queryPool,
6668 uint32_t firstQuery,
6669 uint32_t queryCount)
6670{
6671 auto resources = ResourceTracker::get();
6672 if (!resources->hasDeviceExtension(device, "VK_EXT_host_query_reset"))
6673 {
6674 sOnInvalidDynamicallyCheckedCall("vkResetQueryPoolEXT", "VK_EXT_host_query_reset");
6675 }
6676 AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
6677 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6678 vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
6679}
6680#endif
6681#ifdef VK_EXT_index_type_uint8
6682#endif
6683#ifdef VK_EXT_extended_dynamic_state
6684static void entry_vkCmdSetCullModeEXT(
6685 VkCommandBuffer commandBuffer,
6686 VkCullModeFlags cullMode)
6687{
6688 AEMU_SCOPED_TRACE("vkCmdSetCullModeEXT");
6689 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6690 vkEnc->vkCmdSetCullModeEXT(commandBuffer, cullMode, true /* do lock */);
6691}
6692static void entry_vkCmdSetFrontFaceEXT(
6693 VkCommandBuffer commandBuffer,
6694 VkFrontFace frontFace)
6695{
6696 AEMU_SCOPED_TRACE("vkCmdSetFrontFaceEXT");
6697 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6698 vkEnc->vkCmdSetFrontFaceEXT(commandBuffer, frontFace, true /* do lock */);
6699}
6700static void entry_vkCmdSetPrimitiveTopologyEXT(
6701 VkCommandBuffer commandBuffer,
6702 VkPrimitiveTopology primitiveTopology)
6703{
6704 AEMU_SCOPED_TRACE("vkCmdSetPrimitiveTopologyEXT");
6705 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6706 vkEnc->vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, true /* do lock */);
6707}
6708static void entry_vkCmdSetViewportWithCountEXT(
6709 VkCommandBuffer commandBuffer,
6710 uint32_t viewportCount,
6711 const VkViewport* pViewports)
6712{
6713 AEMU_SCOPED_TRACE("vkCmdSetViewportWithCountEXT");
6714 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6715 vkEnc->vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, true /* do lock */);
6716}
6717static void entry_vkCmdSetScissorWithCountEXT(
6718 VkCommandBuffer commandBuffer,
6719 uint32_t scissorCount,
6720 const VkRect2D* pScissors)
6721{
6722 AEMU_SCOPED_TRACE("vkCmdSetScissorWithCountEXT");
6723 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6724 vkEnc->vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, true /* do lock */);
6725}
6726static void entry_vkCmdBindVertexBuffers2EXT(
6727 VkCommandBuffer commandBuffer,
6728 uint32_t firstBinding,
6729 uint32_t bindingCount,
6730 const VkBuffer* pBuffers,
6731 const VkDeviceSize* pOffsets,
6732 const VkDeviceSize* pSizes,
6733 const VkDeviceSize* pStrides)
6734{
6735 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers2EXT");
6736 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6737 vkEnc->vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, true /* do lock */);
6738}
6739static void entry_vkCmdSetDepthTestEnableEXT(
6740 VkCommandBuffer commandBuffer,
6741 VkBool32 depthTestEnable)
6742{
6743 AEMU_SCOPED_TRACE("vkCmdSetDepthTestEnableEXT");
6744 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6745 vkEnc->vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, true /* do lock */);
6746}
6747static void entry_vkCmdSetDepthWriteEnableEXT(
6748 VkCommandBuffer commandBuffer,
6749 VkBool32 depthWriteEnable)
6750{
6751 AEMU_SCOPED_TRACE("vkCmdSetDepthWriteEnableEXT");
6752 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6753 vkEnc->vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, true /* do lock */);
6754}
6755static void entry_vkCmdSetDepthCompareOpEXT(
6756 VkCommandBuffer commandBuffer,
6757 VkCompareOp depthCompareOp)
6758{
6759 AEMU_SCOPED_TRACE("vkCmdSetDepthCompareOpEXT");
6760 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6761 vkEnc->vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, true /* do lock */);
6762}
6763static void entry_vkCmdSetDepthBoundsTestEnableEXT(
6764 VkCommandBuffer commandBuffer,
6765 VkBool32 depthBoundsTestEnable)
6766{
6767 AEMU_SCOPED_TRACE("vkCmdSetDepthBoundsTestEnableEXT");
6768 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6769 vkEnc->vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, true /* do lock */);
6770}
6771static void entry_vkCmdSetStencilTestEnableEXT(
6772 VkCommandBuffer commandBuffer,
6773 VkBool32 stencilTestEnable)
6774{
6775 AEMU_SCOPED_TRACE("vkCmdSetStencilTestEnableEXT");
6776 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6777 vkEnc->vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, true /* do lock */);
6778}
6779static void entry_vkCmdSetStencilOpEXT(
6780 VkCommandBuffer commandBuffer,
6781 VkStencilFaceFlags faceMask,
6782 VkStencilOp failOp,
6783 VkStencilOp passOp,
6784 VkStencilOp depthFailOp,
6785 VkCompareOp compareOp)
6786{
6787 AEMU_SCOPED_TRACE("vkCmdSetStencilOpEXT");
6788 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6789 vkEnc->vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, true /* do lock */);
6790}
6791#endif
6792#ifdef VK_EXT_shader_demote_to_helper_invocation
6793#endif
6794#ifdef VK_NV_device_generated_commands
6795static void entry_vkGetGeneratedCommandsMemoryRequirementsNV(
6796 VkDevice device,
6797 const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
6798 VkMemoryRequirements2* pMemoryRequirements)
6799{
6800 AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
6801 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6802 vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
6803}
6804static void dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV(
6805 VkDevice device,
6806 const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
6807 VkMemoryRequirements2* pMemoryRequirements)
6808{
6809 auto resources = ResourceTracker::get();
6810 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
6811 {
6812 sOnInvalidDynamicallyCheckedCall("vkGetGeneratedCommandsMemoryRequirementsNV", "VK_NV_device_generated_commands");
6813 }
6814 AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
6815 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6816 vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
6817}
6818static void entry_vkCmdPreprocessGeneratedCommandsNV(
6819 VkCommandBuffer commandBuffer,
6820 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
6821{
6822 AEMU_SCOPED_TRACE("vkCmdPreprocessGeneratedCommandsNV");
6823 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6824 vkEnc->vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, true /* do lock */);
6825}
6826static void entry_vkCmdExecuteGeneratedCommandsNV(
6827 VkCommandBuffer commandBuffer,
6828 VkBool32 isPreprocessed,
6829 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
6830{
6831 AEMU_SCOPED_TRACE("vkCmdExecuteGeneratedCommandsNV");
6832 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6833 vkEnc->vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, true /* do lock */);
6834}
6835static void entry_vkCmdBindPipelineShaderGroupNV(
6836 VkCommandBuffer commandBuffer,
6837 VkPipelineBindPoint pipelineBindPoint,
6838 VkPipeline pipeline,
6839 uint32_t groupIndex)
6840{
6841 AEMU_SCOPED_TRACE("vkCmdBindPipelineShaderGroupNV");
6842 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6843 vkEnc->vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, true /* do lock */);
6844}
6845static VkResult entry_vkCreateIndirectCommandsLayoutNV(
6846 VkDevice device,
6847 const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
6848 const VkAllocationCallbacks* pAllocator,
6849 VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
6850{
6851 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
6852 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6853 VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
6854 vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
6855 return vkCreateIndirectCommandsLayoutNV_VkResult_return;
6856}
6857static VkResult dynCheck_entry_vkCreateIndirectCommandsLayoutNV(
6858 VkDevice device,
6859 const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
6860 const VkAllocationCallbacks* pAllocator,
6861 VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
6862{
6863 auto resources = ResourceTracker::get();
6864 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
6865 {
6866 sOnInvalidDynamicallyCheckedCall("vkCreateIndirectCommandsLayoutNV", "VK_NV_device_generated_commands");
6867 }
6868 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
6869 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6870 VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
6871 vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
6872 return vkCreateIndirectCommandsLayoutNV_VkResult_return;
6873}
6874static void entry_vkDestroyIndirectCommandsLayoutNV(
6875 VkDevice device,
6876 VkIndirectCommandsLayoutNV indirectCommandsLayout,
6877 const VkAllocationCallbacks* pAllocator)
6878{
6879 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
6880 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6881 vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, true /* do lock */);
6882}
6883static void dynCheck_entry_vkDestroyIndirectCommandsLayoutNV(
6884 VkDevice device,
6885 VkIndirectCommandsLayoutNV indirectCommandsLayout,
6886 const VkAllocationCallbacks* pAllocator)
6887{
6888 auto resources = ResourceTracker::get();
6889 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
6890 {
6891 sOnInvalidDynamicallyCheckedCall("vkDestroyIndirectCommandsLayoutNV", "VK_NV_device_generated_commands");
6892 }
6893 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
6894 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6895 vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, true /* do lock */);
6896}
6897#endif
6898#ifdef VK_EXT_texel_buffer_alignment
6899#endif
6900#ifdef VK_QCOM_render_pass_transform
6901#endif
6902#ifdef VK_EXT_device_memory_report
6903#endif
6904#ifdef VK_EXT_robustness2
6905#endif
6906#ifdef VK_EXT_custom_border_color
6907#endif
6908#ifdef VK_GOOGLE_user_type
6909#endif
6910#ifdef VK_EXT_private_data
6911static VkResult entry_vkCreatePrivateDataSlotEXT(
6912 VkDevice device,
6913 const VkPrivateDataSlotCreateInfoEXT* pCreateInfo,
6914 const VkAllocationCallbacks* pAllocator,
6915 VkPrivateDataSlotEXT* pPrivateDataSlot)
6916{
6917 AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
6918 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6919 VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
6920 vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
6921 return vkCreatePrivateDataSlotEXT_VkResult_return;
6922}
6923static VkResult dynCheck_entry_vkCreatePrivateDataSlotEXT(
6924 VkDevice device,
6925 const VkPrivateDataSlotCreateInfoEXT* pCreateInfo,
6926 const VkAllocationCallbacks* pAllocator,
6927 VkPrivateDataSlotEXT* pPrivateDataSlot)
6928{
6929 auto resources = ResourceTracker::get();
6930 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
6931 {
6932 sOnInvalidDynamicallyCheckedCall("vkCreatePrivateDataSlotEXT", "VK_EXT_private_data");
6933 }
6934 AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
6935 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6936 VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
6937 vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
6938 return vkCreatePrivateDataSlotEXT_VkResult_return;
6939}
6940static void entry_vkDestroyPrivateDataSlotEXT(
6941 VkDevice device,
6942 VkPrivateDataSlotEXT privateDataSlot,
6943 const VkAllocationCallbacks* pAllocator)
6944{
6945 AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
6946 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6947 vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
6948}
6949static void dynCheck_entry_vkDestroyPrivateDataSlotEXT(
6950 VkDevice device,
6951 VkPrivateDataSlotEXT privateDataSlot,
6952 const VkAllocationCallbacks* pAllocator)
6953{
6954 auto resources = ResourceTracker::get();
6955 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
6956 {
6957 sOnInvalidDynamicallyCheckedCall("vkDestroyPrivateDataSlotEXT", "VK_EXT_private_data");
6958 }
6959 AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
6960 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6961 vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
6962}
6963static VkResult entry_vkSetPrivateDataEXT(
6964 VkDevice device,
6965 VkObjectType objectType,
6966 uint64_t objectHandle,
6967 VkPrivateDataSlotEXT privateDataSlot,
6968 uint64_t data)
6969{
6970 AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
6971 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6972 VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
6973 vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
6974 return vkSetPrivateDataEXT_VkResult_return;
6975}
6976static VkResult dynCheck_entry_vkSetPrivateDataEXT(
6977 VkDevice device,
6978 VkObjectType objectType,
6979 uint64_t objectHandle,
6980 VkPrivateDataSlotEXT privateDataSlot,
6981 uint64_t data)
6982{
6983 auto resources = ResourceTracker::get();
6984 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
6985 {
6986 sOnInvalidDynamicallyCheckedCall("vkSetPrivateDataEXT", "VK_EXT_private_data");
6987 }
6988 AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
6989 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6990 VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
6991 vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
6992 return vkSetPrivateDataEXT_VkResult_return;
6993}
6994static void entry_vkGetPrivateDataEXT(
6995 VkDevice device,
6996 VkObjectType objectType,
6997 uint64_t objectHandle,
6998 VkPrivateDataSlotEXT privateDataSlot,
6999 uint64_t* pData)
7000{
7001 AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
7002 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7003 vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, true /* do lock */);
7004}
7005static void dynCheck_entry_vkGetPrivateDataEXT(
7006 VkDevice device,
7007 VkObjectType objectType,
7008 uint64_t objectHandle,
7009 VkPrivateDataSlotEXT privateDataSlot,
7010 uint64_t* pData)
7011{
7012 auto resources = ResourceTracker::get();
7013 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
7014 {
7015 sOnInvalidDynamicallyCheckedCall("vkGetPrivateDataEXT", "VK_EXT_private_data");
7016 }
7017 AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
7018 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7019 vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, true /* do lock */);
7020}
7021#endif
7022#ifdef VK_EXT_pipeline_creation_cache_control
7023#endif
7024#ifdef VK_NV_device_diagnostics_config
7025#endif
7026#ifdef VK_QCOM_render_pass_store_ops
7027#endif
7028#ifdef VK_NV_fragment_shading_rate_enums
7029static void entry_vkCmdSetFragmentShadingRateEnumNV(
7030 VkCommandBuffer commandBuffer,
7031 VkFragmentShadingRateNV shadingRate,
7032 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
7033{
7034 AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateEnumNV");
7035 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7036 vkEnc->vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, true /* do lock */);
7037}
7038#endif
7039#ifdef VK_EXT_fragment_density_map2
7040#endif
7041#ifdef VK_QCOM_rotated_copy_commands
7042#endif
7043#ifdef VK_EXT_image_robustness
7044#endif
7045#ifdef VK_EXT_4444_formats
7046#endif
7047#ifdef VK_EXT_directfb_surface
7048static VkResult entry_vkCreateDirectFBSurfaceEXT(
7049 VkInstance instance,
7050 const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo,
7051 const VkAllocationCallbacks* pAllocator,
7052 VkSurfaceKHR* pSurface)
7053{
7054 AEMU_SCOPED_TRACE("vkCreateDirectFBSurfaceEXT");
7055 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7056 VkResult vkCreateDirectFBSurfaceEXT_VkResult_return = (VkResult)0;
7057 vkCreateDirectFBSurfaceEXT_VkResult_return = vkEnc->vkCreateDirectFBSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
7058 return vkCreateDirectFBSurfaceEXT_VkResult_return;
7059}
7060static VkBool32 entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT(
7061 VkPhysicalDevice physicalDevice,
7062 uint32_t queueFamilyIndex,
7063 IDirectFB* dfb)
7064{
7065 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDirectFBPresentationSupportEXT");
7066 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7067 VkBool32 vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return = (VkBool32)0;
7068 vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return = vkEnc->vkGetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice, queueFamilyIndex, dfb, true /* do lock */);
7069 return vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return;
7070}
7071#endif
Yilong Li71c43c52021-02-10 02:50:43 -08007072#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -07007073static VkResult entry_vkRegisterImageColorBufferGOOGLE(
7074 VkDevice device,
7075 VkImage image,
7076 uint32_t colorBuffer)
7077{
7078 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
7079 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7080 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
7081 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
7082 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
7083}
7084static VkResult dynCheck_entry_vkRegisterImageColorBufferGOOGLE(
7085 VkDevice device,
7086 VkImage image,
7087 uint32_t colorBuffer)
7088{
7089 auto resources = ResourceTracker::get();
7090 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
7091 {
7092 sOnInvalidDynamicallyCheckedCall("vkRegisterImageColorBufferGOOGLE", "VK_GOOGLE_gfxstream");
7093 }
7094 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
7095 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7096 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
7097 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
7098 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
7099}
7100static VkResult entry_vkRegisterBufferColorBufferGOOGLE(
7101 VkDevice device,
7102 VkBuffer buffer,
7103 uint32_t colorBuffer)
7104{
7105 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
7106 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7107 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
7108 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
7109 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
7110}
7111static VkResult dynCheck_entry_vkRegisterBufferColorBufferGOOGLE(
7112 VkDevice device,
7113 VkBuffer buffer,
7114 uint32_t colorBuffer)
7115{
7116 auto resources = ResourceTracker::get();
7117 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
7118 {
7119 sOnInvalidDynamicallyCheckedCall("vkRegisterBufferColorBufferGOOGLE", "VK_GOOGLE_gfxstream");
7120 }
7121 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
7122 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7123 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
7124 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
7125 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
7126}
Yilong Lia8d45f12021-02-07 02:30:21 -08007127static VkResult entry_vkMapMemoryIntoAddressSpaceGOOGLE(
7128 VkDevice device,
7129 VkDeviceMemory memory,
7130 uint64_t* pAddress)
7131{
7132 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
7133 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7134 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
7135 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
7136 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
7137}
7138static VkResult dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE(
7139 VkDevice device,
7140 VkDeviceMemory memory,
7141 uint64_t* pAddress)
7142{
7143 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007144 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Yilong Lia8d45f12021-02-07 02:30:21 -08007145 {
Yilong Li71c43c52021-02-10 02:50:43 -08007146 sOnInvalidDynamicallyCheckedCall("vkMapMemoryIntoAddressSpaceGOOGLE", "VK_GOOGLE_gfxstream");
Yilong Lia8d45f12021-02-07 02:30:21 -08007147 }
7148 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
7149 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7150 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
7151 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
7152 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
7153}
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07007154static void entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
7155 VkDevice device,
7156 VkDescriptorSet descriptorSet,
7157 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
7158 uint32_t imageInfoCount,
7159 uint32_t bufferInfoCount,
7160 uint32_t bufferViewCount,
7161 const uint32_t* pImageInfoEntryIndices,
7162 const uint32_t* pBufferInfoEntryIndices,
7163 const uint32_t* pBufferViewEntryIndices,
7164 const VkDescriptorImageInfo* pImageInfos,
7165 const VkDescriptorBufferInfo* pBufferInfos,
7166 const VkBufferView* pBufferViews)
7167{
7168 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007169 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007170 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07007171}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007172static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
7173 VkDevice device,
7174 VkDescriptorSet descriptorSet,
7175 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
7176 uint32_t imageInfoCount,
7177 uint32_t bufferInfoCount,
7178 uint32_t bufferViewCount,
7179 const uint32_t* pImageInfoEntryIndices,
7180 const uint32_t* pBufferInfoEntryIndices,
7181 const uint32_t* pBufferViewEntryIndices,
7182 const VkDescriptorImageInfo* pImageInfos,
7183 const VkDescriptorBufferInfo* pBufferInfos,
7184 const VkBufferView* pBufferViews)
7185{
7186 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007187 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007188 {
Yilong Li71c43c52021-02-10 02:50:43 -08007189 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateSizedGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007190 }
7191 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007192 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007193 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007194}
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007195static void entry_vkBeginCommandBufferAsyncGOOGLE(
7196 VkCommandBuffer commandBuffer,
7197 const VkCommandBufferBeginInfo* pBeginInfo)
7198{
7199 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007200 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007201 vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007202}
7203static void entry_vkEndCommandBufferAsyncGOOGLE(
7204 VkCommandBuffer commandBuffer)
7205{
7206 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007207 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007208 vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007209}
7210static void entry_vkResetCommandBufferAsyncGOOGLE(
7211 VkCommandBuffer commandBuffer,
7212 VkCommandBufferResetFlags flags)
7213{
7214 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007215 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007216 vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007217}
Lingfeng Yang39a276e2019-06-17 13:27:22 -07007218static void entry_vkCommandBufferHostSyncGOOGLE(
7219 VkCommandBuffer commandBuffer,
7220 uint32_t needHostSync,
7221 uint32_t sequenceNumber)
7222{
7223 AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007224 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007225 vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber, true /* do lock */);
Lingfeng Yang39a276e2019-06-17 13:27:22 -07007226}
Lingfeng Yang87f11962019-06-27 16:28:53 +00007227static VkResult entry_vkCreateImageWithRequirementsGOOGLE(
7228 VkDevice device,
7229 const VkImageCreateInfo* pCreateInfo,
7230 const VkAllocationCallbacks* pAllocator,
7231 VkImage* pImage,
7232 VkMemoryRequirements* pMemoryRequirements)
7233{
7234 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007235 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang87f11962019-06-27 16:28:53 +00007236 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007237 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
Lingfeng Yang87f11962019-06-27 16:28:53 +00007238 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
7239}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007240static VkResult dynCheck_entry_vkCreateImageWithRequirementsGOOGLE(
7241 VkDevice device,
7242 const VkImageCreateInfo* pCreateInfo,
7243 const VkAllocationCallbacks* pAllocator,
7244 VkImage* pImage,
7245 VkMemoryRequirements* pMemoryRequirements)
7246{
7247 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007248 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007249 {
Yilong Li71c43c52021-02-10 02:50:43 -08007250 sOnInvalidDynamicallyCheckedCall("vkCreateImageWithRequirementsGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007251 }
7252 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007253 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007254 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007255 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007256 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
7257}
Lingfeng Yang87f11962019-06-27 16:28:53 +00007258static VkResult entry_vkCreateBufferWithRequirementsGOOGLE(
7259 VkDevice device,
7260 const VkBufferCreateInfo* pCreateInfo,
7261 const VkAllocationCallbacks* pAllocator,
7262 VkBuffer* pBuffer,
7263 VkMemoryRequirements* pMemoryRequirements)
7264{
7265 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007266 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang87f11962019-06-27 16:28:53 +00007267 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007268 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
Lingfeng Yang87f11962019-06-27 16:28:53 +00007269 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
7270}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007271static VkResult dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE(
7272 VkDevice device,
7273 const VkBufferCreateInfo* pCreateInfo,
7274 const VkAllocationCallbacks* pAllocator,
7275 VkBuffer* pBuffer,
7276 VkMemoryRequirements* pMemoryRequirements)
7277{
7278 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007279 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007280 {
Yilong Li71c43c52021-02-10 02:50:43 -08007281 sOnInvalidDynamicallyCheckedCall("vkCreateBufferWithRequirementsGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007282 }
7283 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007284 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007285 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007286 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007287 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
7288}
Lingfeng Yang4c542412020-02-04 18:18:32 -08007289static VkResult entry_vkGetMemoryHostAddressInfoGOOGLE(
7290 VkDevice device,
7291 VkDeviceMemory memory,
7292 uint64_t* pAddress,
7293 uint64_t* pSize,
7294 uint64_t* pHostmemId)
7295{
7296 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007297 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4c542412020-02-04 18:18:32 -08007298 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007299 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
Lingfeng Yang4c542412020-02-04 18:18:32 -08007300 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
7301}
7302static VkResult dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE(
7303 VkDevice device,
7304 VkDeviceMemory memory,
7305 uint64_t* pAddress,
7306 uint64_t* pSize,
7307 uint64_t* pHostmemId)
7308{
7309 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007310 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang4c542412020-02-04 18:18:32 -08007311 {
Yilong Li71c43c52021-02-10 02:50:43 -08007312 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostAddressInfoGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang4c542412020-02-04 18:18:32 -08007313 }
7314 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007315 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4c542412020-02-04 18:18:32 -08007316 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007317 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
Lingfeng Yang4c542412020-02-04 18:18:32 -08007318 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
7319}
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007320static VkResult entry_vkFreeMemorySyncGOOGLE(
7321 VkDevice device,
7322 VkDeviceMemory memory,
7323 const VkAllocationCallbacks* pAllocator)
7324{
7325 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007326 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007327 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007328 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007329 return vkFreeMemorySyncGOOGLE_VkResult_return;
7330}
7331static VkResult dynCheck_entry_vkFreeMemorySyncGOOGLE(
7332 VkDevice device,
7333 VkDeviceMemory memory,
7334 const VkAllocationCallbacks* pAllocator)
7335{
7336 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007337 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007338 {
Yilong Li71c43c52021-02-10 02:50:43 -08007339 sOnInvalidDynamicallyCheckedCall("vkFreeMemorySyncGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007340 }
7341 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007342 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007343 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007344 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007345 return vkFreeMemorySyncGOOGLE_VkResult_return;
7346}
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007347static void entry_vkQueueHostSyncGOOGLE(
7348 VkQueue queue,
7349 uint32_t needHostSync,
7350 uint32_t sequenceNumber)
7351{
7352 AEMU_SCOPED_TRACE("vkQueueHostSyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007353 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007354 vkEnc->vkQueueHostSyncGOOGLE(queue, needHostSync, sequenceNumber, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007355}
7356static void entry_vkQueueSubmitAsyncGOOGLE(
7357 VkQueue queue,
7358 uint32_t submitCount,
7359 const VkSubmitInfo* pSubmits,
7360 VkFence fence)
7361{
7362 AEMU_SCOPED_TRACE("vkQueueSubmitAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007363 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007364 vkEnc->vkQueueSubmitAsyncGOOGLE(queue, submitCount, pSubmits, fence, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007365}
7366static void entry_vkQueueWaitIdleAsyncGOOGLE(
7367 VkQueue queue)
7368{
7369 AEMU_SCOPED_TRACE("vkQueueWaitIdleAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007370 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007371 vkEnc->vkQueueWaitIdleAsyncGOOGLE(queue, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007372}
7373static void entry_vkQueueBindSparseAsyncGOOGLE(
7374 VkQueue queue,
7375 uint32_t bindInfoCount,
7376 const VkBindSparseInfo* pBindInfo,
7377 VkFence fence)
7378{
7379 AEMU_SCOPED_TRACE("vkQueueBindSparseAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007380 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007381 vkEnc->vkQueueBindSparseAsyncGOOGLE(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007382}
Yilong Lia48b0102020-09-15 15:08:28 -07007383static void entry_vkGetLinearImageLayoutGOOGLE(
7384 VkDevice device,
7385 VkFormat format,
7386 VkDeviceSize* pOffset,
7387 VkDeviceSize* pRowPitchAlignment)
7388{
7389 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007390 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007391 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
Yilong Lia48b0102020-09-15 15:08:28 -07007392}
7393static void dynCheck_entry_vkGetLinearImageLayoutGOOGLE(
7394 VkDevice device,
7395 VkFormat format,
7396 VkDeviceSize* pOffset,
7397 VkDeviceSize* pRowPitchAlignment)
7398{
7399 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007400 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Yilong Lia48b0102020-09-15 15:08:28 -07007401 {
Yilong Li71c43c52021-02-10 02:50:43 -08007402 sOnInvalidDynamicallyCheckedCall("vkGetLinearImageLayoutGOOGLE", "VK_GOOGLE_gfxstream");
Yilong Lia48b0102020-09-15 15:08:28 -07007403 }
7404 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007405 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007406 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
Yilong Lia48b0102020-09-15 15:08:28 -07007407}
Lingfeng Yangded34672021-01-22 23:17:47 -08007408static void entry_vkQueueFlushCommandsGOOGLE(
7409 VkQueue queue,
7410 VkCommandBuffer commandBuffer,
7411 VkDeviceSize dataSize,
7412 const void* pData)
7413{
7414 AEMU_SCOPED_TRACE("vkQueueFlushCommandsGOOGLE");
7415 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
7416 vkEnc->vkQueueFlushCommandsGOOGLE(queue, commandBuffer, dataSize, pData, true /* do lock */);
7417}
Lingfeng Yang55676e02021-02-08 08:39:45 -08007418static void entry_vkQueueCommitDescriptorSetUpdatesGOOGLE(
7419 VkQueue queue,
7420 uint32_t descriptorPoolCount,
7421 const VkDescriptorPool* pDescriptorPools,
7422 uint32_t descriptorSetCount,
7423 const VkDescriptorSetLayout* pSetLayouts,
7424 const uint64_t* pDescriptorSetPoolIds,
7425 const uint32_t* pDescriptorSetWhichPool,
7426 const uint32_t* pDescriptorSetPendingAllocation,
7427 const uint32_t* pDescriptorWriteStartingIndices,
7428 uint32_t pendingDescriptorWriteCount,
7429 const VkWriteDescriptorSet* pPendingDescriptorWrites)
7430{
7431 AEMU_SCOPED_TRACE("vkQueueCommitDescriptorSetUpdatesGOOGLE");
7432 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
7433 vkEnc->vkQueueCommitDescriptorSetUpdatesGOOGLE(queue, descriptorPoolCount, pDescriptorPools, descriptorSetCount, pSetLayouts, pDescriptorSetPoolIds, pDescriptorSetWhichPool, pDescriptorSetPendingAllocation, pDescriptorWriteStartingIndices, pendingDescriptorWriteCount, pPendingDescriptorWrites, true /* do lock */);
7434}
7435static void entry_vkCollectDescriptorPoolIdsGOOGLE(
7436 VkDevice device,
7437 VkDescriptorPool descriptorPool,
7438 uint32_t* pPoolIdCount,
7439 uint64_t* pPoolIds)
7440{
7441 AEMU_SCOPED_TRACE("vkCollectDescriptorPoolIdsGOOGLE");
7442 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7443 vkEnc->vkCollectDescriptorPoolIdsGOOGLE(device, descriptorPool, pPoolIdCount, pPoolIds, true /* do lock */);
7444}
7445static void dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE(
7446 VkDevice device,
7447 VkDescriptorPool descriptorPool,
7448 uint32_t* pPoolIdCount,
7449 uint64_t* pPoolIds)
7450{
7451 auto resources = ResourceTracker::get();
7452 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
7453 {
7454 sOnInvalidDynamicallyCheckedCall("vkCollectDescriptorPoolIdsGOOGLE", "VK_GOOGLE_gfxstream");
7455 }
7456 AEMU_SCOPED_TRACE("vkCollectDescriptorPoolIdsGOOGLE");
7457 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7458 vkEnc->vkCollectDescriptorPoolIdsGOOGLE(device, descriptorPool, pPoolIdCount, pPoolIds, true /* do lock */);
7459}
Lingfeng Yang5678e1e2021-07-15 12:28:05 -07007460static void entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(
7461 VkQueue queue,
7462 uint32_t waitSemaphoreCount,
7463 const VkSemaphore* pWaitSemaphores,
7464 VkImage image)
7465{
7466 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROIDAsyncGOOGLE");
7467 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
7468 vkEnc->vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(queue, waitSemaphoreCount, pWaitSemaphores, image, true /* do lock */);
7469}
Lingfeng Yangded34672021-01-22 23:17:47 -08007470#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007471#ifdef VK_KHR_acceleration_structure
7472static VkResult entry_vkCreateAccelerationStructureKHR(
7473 VkDevice device,
7474 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
7475 const VkAllocationCallbacks* pAllocator,
7476 VkAccelerationStructureKHR* pAccelerationStructure)
7477{
7478 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
7479 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7480 VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
7481 vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
7482 return vkCreateAccelerationStructureKHR_VkResult_return;
7483}
7484static VkResult dynCheck_entry_vkCreateAccelerationStructureKHR(
7485 VkDevice device,
7486 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
7487 const VkAllocationCallbacks* pAllocator,
7488 VkAccelerationStructureKHR* pAccelerationStructure)
7489{
7490 auto resources = ResourceTracker::get();
7491 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7492 {
7493 sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7494 }
7495 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
7496 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7497 VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
7498 vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
7499 return vkCreateAccelerationStructureKHR_VkResult_return;
7500}
7501static void entry_vkDestroyAccelerationStructureKHR(
7502 VkDevice device,
7503 VkAccelerationStructureKHR accelerationStructure,
7504 const VkAllocationCallbacks* pAllocator)
7505{
7506 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
7507 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7508 vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
7509}
7510static void dynCheck_entry_vkDestroyAccelerationStructureKHR(
7511 VkDevice device,
7512 VkAccelerationStructureKHR accelerationStructure,
7513 const VkAllocationCallbacks* pAllocator)
7514{
7515 auto resources = ResourceTracker::get();
7516 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7517 {
7518 sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7519 }
7520 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
7521 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7522 vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
7523}
7524static void entry_vkCmdBuildAccelerationStructuresKHR(
7525 VkCommandBuffer commandBuffer,
7526 uint32_t infoCount,
7527 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7528 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
7529{
7530 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresKHR");
7531 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7532 vkEnc->vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
7533}
7534static void entry_vkCmdBuildAccelerationStructuresIndirectKHR(
7535 VkCommandBuffer commandBuffer,
7536 uint32_t infoCount,
7537 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7538 const VkDeviceAddress* pIndirectDeviceAddresses,
7539 const uint32_t* pIndirectStrides,
7540 const uint32_t* const* ppMaxPrimitiveCounts)
7541{
7542 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresIndirectKHR");
7543 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7544 vkEnc->vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, true /* do lock */);
7545}
7546static VkResult entry_vkBuildAccelerationStructuresKHR(
7547 VkDevice device,
7548 VkDeferredOperationKHR deferredOperation,
7549 uint32_t infoCount,
7550 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7551 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
7552{
7553 AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
7554 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7555 VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
7556 vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
7557 return vkBuildAccelerationStructuresKHR_VkResult_return;
7558}
7559static VkResult dynCheck_entry_vkBuildAccelerationStructuresKHR(
7560 VkDevice device,
7561 VkDeferredOperationKHR deferredOperation,
7562 uint32_t infoCount,
7563 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7564 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
7565{
7566 auto resources = ResourceTracker::get();
7567 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7568 {
7569 sOnInvalidDynamicallyCheckedCall("vkBuildAccelerationStructuresKHR", "VK_KHR_acceleration_structure");
7570 }
7571 AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
7572 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7573 VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
7574 vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
7575 return vkBuildAccelerationStructuresKHR_VkResult_return;
7576}
7577static VkResult entry_vkCopyAccelerationStructureKHR(
7578 VkDevice device,
7579 VkDeferredOperationKHR deferredOperation,
7580 const VkCopyAccelerationStructureInfoKHR* pInfo)
7581{
7582 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
7583 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7584 VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
7585 vkCopyAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7586 return vkCopyAccelerationStructureKHR_VkResult_return;
7587}
7588static VkResult dynCheck_entry_vkCopyAccelerationStructureKHR(
7589 VkDevice device,
7590 VkDeferredOperationKHR deferredOperation,
7591 const VkCopyAccelerationStructureInfoKHR* pInfo)
7592{
7593 auto resources = ResourceTracker::get();
7594 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7595 {
7596 sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7597 }
7598 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
7599 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7600 VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
7601 vkCopyAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7602 return vkCopyAccelerationStructureKHR_VkResult_return;
7603}
7604static VkResult entry_vkCopyAccelerationStructureToMemoryKHR(
7605 VkDevice device,
7606 VkDeferredOperationKHR deferredOperation,
7607 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
7608{
7609 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
7610 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7611 VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
7612 vkCopyAccelerationStructureToMemoryKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, true /* do lock */);
7613 return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
7614}
7615static VkResult dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR(
7616 VkDevice device,
7617 VkDeferredOperationKHR deferredOperation,
7618 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
7619{
7620 auto resources = ResourceTracker::get();
7621 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7622 {
7623 sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureToMemoryKHR", "VK_KHR_acceleration_structure");
7624 }
7625 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
7626 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7627 VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
7628 vkCopyAccelerationStructureToMemoryKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, true /* do lock */);
7629 return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
7630}
7631static VkResult entry_vkCopyMemoryToAccelerationStructureKHR(
7632 VkDevice device,
7633 VkDeferredOperationKHR deferredOperation,
7634 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
7635{
7636 AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
7637 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7638 VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
7639 vkCopyMemoryToAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7640 return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
7641}
7642static VkResult dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR(
7643 VkDevice device,
7644 VkDeferredOperationKHR deferredOperation,
7645 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
7646{
7647 auto resources = ResourceTracker::get();
7648 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7649 {
7650 sOnInvalidDynamicallyCheckedCall("vkCopyMemoryToAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7651 }
7652 AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
7653 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7654 VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
7655 vkCopyMemoryToAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7656 return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
7657}
7658static VkResult entry_vkWriteAccelerationStructuresPropertiesKHR(
7659 VkDevice device,
7660 uint32_t accelerationStructureCount,
7661 const VkAccelerationStructureKHR* pAccelerationStructures,
7662 VkQueryType queryType,
7663 size_t dataSize,
7664 void* pData,
7665 size_t stride)
7666{
7667 AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
7668 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7669 VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
7670 vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
7671 return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
7672}
7673static VkResult dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR(
7674 VkDevice device,
7675 uint32_t accelerationStructureCount,
7676 const VkAccelerationStructureKHR* pAccelerationStructures,
7677 VkQueryType queryType,
7678 size_t dataSize,
7679 void* pData,
7680 size_t stride)
7681{
7682 auto resources = ResourceTracker::get();
7683 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7684 {
7685 sOnInvalidDynamicallyCheckedCall("vkWriteAccelerationStructuresPropertiesKHR", "VK_KHR_acceleration_structure");
7686 }
7687 AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
7688 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7689 VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
7690 vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
7691 return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
7692}
7693static void entry_vkCmdCopyAccelerationStructureKHR(
7694 VkCommandBuffer commandBuffer,
7695 const VkCopyAccelerationStructureInfoKHR* pInfo)
7696{
7697 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureKHR");
7698 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7699 vkEnc->vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
7700}
7701static void entry_vkCmdCopyAccelerationStructureToMemoryKHR(
7702 VkCommandBuffer commandBuffer,
7703 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
7704{
7705 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureToMemoryKHR");
7706 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7707 vkEnc->vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, true /* do lock */);
7708}
7709static void entry_vkCmdCopyMemoryToAccelerationStructureKHR(
7710 VkCommandBuffer commandBuffer,
7711 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
7712{
7713 AEMU_SCOPED_TRACE("vkCmdCopyMemoryToAccelerationStructureKHR");
7714 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7715 vkEnc->vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
7716}
7717static VkDeviceAddress entry_vkGetAccelerationStructureDeviceAddressKHR(
7718 VkDevice device,
7719 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
7720{
7721 AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
7722 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7723 VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
7724 vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
7725 return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
7726}
7727static VkDeviceAddress dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR(
7728 VkDevice device,
7729 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
7730{
7731 auto resources = ResourceTracker::get();
7732 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7733 {
7734 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureDeviceAddressKHR", "VK_KHR_acceleration_structure");
7735 }
7736 AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
7737 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7738 VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
7739 vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
7740 return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
7741}
7742static void entry_vkCmdWriteAccelerationStructuresPropertiesKHR(
7743 VkCommandBuffer commandBuffer,
7744 uint32_t accelerationStructureCount,
7745 const VkAccelerationStructureKHR* pAccelerationStructures,
7746 VkQueryType queryType,
7747 VkQueryPool queryPool,
7748 uint32_t firstQuery)
7749{
7750 AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesKHR");
7751 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7752 vkEnc->vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
7753}
7754static void entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
7755 VkDevice device,
7756 const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
7757 VkAccelerationStructureCompatibilityKHR* pCompatibility)
7758{
7759 AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
7760 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7761 vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
7762}
7763static void dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
7764 VkDevice device,
7765 const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
7766 VkAccelerationStructureCompatibilityKHR* pCompatibility)
7767{
7768 auto resources = ResourceTracker::get();
7769 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7770 {
7771 sOnInvalidDynamicallyCheckedCall("vkGetDeviceAccelerationStructureCompatibilityKHR", "VK_KHR_acceleration_structure");
7772 }
7773 AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
7774 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7775 vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
7776}
7777static void entry_vkGetAccelerationStructureBuildSizesKHR(
7778 VkDevice device,
7779 VkAccelerationStructureBuildTypeKHR buildType,
7780 const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
7781 const uint32_t* pMaxPrimitiveCounts,
7782 VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
7783{
7784 AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
7785 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7786 vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
7787}
7788static void dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR(
7789 VkDevice device,
7790 VkAccelerationStructureBuildTypeKHR buildType,
7791 const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
7792 const uint32_t* pMaxPrimitiveCounts,
7793 VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
7794{
7795 auto resources = ResourceTracker::get();
7796 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7797 {
7798 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureBuildSizesKHR", "VK_KHR_acceleration_structure");
7799 }
7800 AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
7801 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7802 vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
7803}
7804#endif
7805#ifdef VK_KHR_ray_tracing_pipeline
7806static void entry_vkCmdTraceRaysKHR(
7807 VkCommandBuffer commandBuffer,
7808 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
7809 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
7810 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
7811 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
7812 uint32_t width,
7813 uint32_t height,
7814 uint32_t depth)
7815{
7816 AEMU_SCOPED_TRACE("vkCmdTraceRaysKHR");
7817 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7818 vkEnc->vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, true /* do lock */);
7819}
7820static VkResult entry_vkCreateRayTracingPipelinesKHR(
7821 VkDevice device,
7822 VkDeferredOperationKHR deferredOperation,
7823 VkPipelineCache pipelineCache,
7824 uint32_t createInfoCount,
7825 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
7826 const VkAllocationCallbacks* pAllocator,
7827 VkPipeline* pPipelines)
7828{
7829 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
7830 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7831 VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
7832 vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
7833 return vkCreateRayTracingPipelinesKHR_VkResult_return;
7834}
7835static VkResult dynCheck_entry_vkCreateRayTracingPipelinesKHR(
7836 VkDevice device,
7837 VkDeferredOperationKHR deferredOperation,
7838 VkPipelineCache pipelineCache,
7839 uint32_t createInfoCount,
7840 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
7841 const VkAllocationCallbacks* pAllocator,
7842 VkPipeline* pPipelines)
7843{
7844 auto resources = ResourceTracker::get();
7845 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
7846 {
7847 sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesKHR", "VK_KHR_ray_tracing_pipeline");
7848 }
7849 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
7850 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7851 VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
7852 vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
7853 return vkCreateRayTracingPipelinesKHR_VkResult_return;
7854}
7855static VkResult entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
7856 VkDevice device,
7857 VkPipeline pipeline,
7858 uint32_t firstGroup,
7859 uint32_t groupCount,
7860 size_t dataSize,
7861 void* pData)
7862{
7863 AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
7864 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7865 VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
7866 vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
7867 return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
7868}
7869static VkResult dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
7870 VkDevice device,
7871 VkPipeline pipeline,
7872 uint32_t firstGroup,
7873 uint32_t groupCount,
7874 size_t dataSize,
7875 void* pData)
7876{
7877 auto resources = ResourceTracker::get();
7878 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
7879 {
7880 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR", "VK_KHR_ray_tracing_pipeline");
7881 }
7882 AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
7883 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7884 VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
7885 vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
7886 return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
7887}
7888static void entry_vkCmdTraceRaysIndirectKHR(
7889 VkCommandBuffer commandBuffer,
7890 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
7891 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
7892 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
7893 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
7894 VkDeviceAddress indirectDeviceAddress)
7895{
7896 AEMU_SCOPED_TRACE("vkCmdTraceRaysIndirectKHR");
7897 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7898 vkEnc->vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, true /* do lock */);
7899}
7900static VkDeviceSize entry_vkGetRayTracingShaderGroupStackSizeKHR(
7901 VkDevice device,
7902 VkPipeline pipeline,
7903 uint32_t group,
7904 VkShaderGroupShaderKHR groupShader)
7905{
7906 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
7907 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7908 VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
7909 vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
7910 return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
7911}
7912static VkDeviceSize dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR(
7913 VkDevice device,
7914 VkPipeline pipeline,
7915 uint32_t group,
7916 VkShaderGroupShaderKHR groupShader)
7917{
7918 auto resources = ResourceTracker::get();
7919 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
7920 {
7921 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupStackSizeKHR", "VK_KHR_ray_tracing_pipeline");
7922 }
7923 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
7924 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7925 VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
7926 vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
7927 return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
7928}
7929static void entry_vkCmdSetRayTracingPipelineStackSizeKHR(
7930 VkCommandBuffer commandBuffer,
7931 uint32_t pipelineStackSize)
7932{
7933 AEMU_SCOPED_TRACE("vkCmdSetRayTracingPipelineStackSizeKHR");
7934 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7935 vkEnc->vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, true /* do lock */);
7936}
7937#endif
7938#ifdef VK_KHR_ray_query
7939#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007940void* goldfish_vulkan_get_proc_address(const char* name){
7941#ifdef VK_VERSION_1_0
7942 if (!strcmp(name, "vkCreateInstance"))
7943 {
7944 return (void*)entry_vkCreateInstance;
7945 }
7946 if (!strcmp(name, "vkDestroyInstance"))
7947 {
7948 return (void*)entry_vkDestroyInstance;
7949 }
7950 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
7951 {
7952 return (void*)entry_vkEnumeratePhysicalDevices;
7953 }
7954 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
7955 {
7956 return (void*)entry_vkGetPhysicalDeviceFeatures;
7957 }
7958 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
7959 {
7960 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
7961 }
7962 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
7963 {
7964 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
7965 }
7966 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
7967 {
7968 return (void*)entry_vkGetPhysicalDeviceProperties;
7969 }
7970 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
7971 {
7972 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
7973 }
7974 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
7975 {
7976 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
7977 }
7978 if (!strcmp(name, "vkGetInstanceProcAddr"))
7979 {
7980 return (void*)entry_vkGetInstanceProcAddr;
7981 }
7982 if (!strcmp(name, "vkGetDeviceProcAddr"))
7983 {
7984 return (void*)entry_vkGetDeviceProcAddr;
7985 }
7986 if (!strcmp(name, "vkCreateDevice"))
7987 {
7988 return (void*)entry_vkCreateDevice;
7989 }
7990 if (!strcmp(name, "vkDestroyDevice"))
7991 {
7992 return (void*)entry_vkDestroyDevice;
7993 }
7994 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
7995 {
7996 return (void*)entry_vkEnumerateInstanceExtensionProperties;
7997 }
7998 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
7999 {
8000 return (void*)entry_vkEnumerateDeviceExtensionProperties;
8001 }
8002 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
8003 {
8004 return (void*)entry_vkEnumerateInstanceLayerProperties;
8005 }
8006 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
8007 {
8008 return (void*)entry_vkEnumerateDeviceLayerProperties;
8009 }
8010 if (!strcmp(name, "vkGetDeviceQueue"))
8011 {
8012 return (void*)entry_vkGetDeviceQueue;
8013 }
8014 if (!strcmp(name, "vkQueueSubmit"))
8015 {
8016 return (void*)entry_vkQueueSubmit;
8017 }
8018 if (!strcmp(name, "vkQueueWaitIdle"))
8019 {
8020 return (void*)entry_vkQueueWaitIdle;
8021 }
8022 if (!strcmp(name, "vkDeviceWaitIdle"))
8023 {
8024 return (void*)entry_vkDeviceWaitIdle;
8025 }
8026 if (!strcmp(name, "vkAllocateMemory"))
8027 {
8028 return (void*)entry_vkAllocateMemory;
8029 }
8030 if (!strcmp(name, "vkFreeMemory"))
8031 {
8032 return (void*)entry_vkFreeMemory;
8033 }
8034 if (!strcmp(name, "vkMapMemory"))
8035 {
8036 return (void*)entry_vkMapMemory;
8037 }
8038 if (!strcmp(name, "vkUnmapMemory"))
8039 {
8040 return (void*)entry_vkUnmapMemory;
8041 }
8042 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
8043 {
8044 return (void*)entry_vkFlushMappedMemoryRanges;
8045 }
8046 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
8047 {
8048 return (void*)entry_vkInvalidateMappedMemoryRanges;
8049 }
8050 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
8051 {
8052 return (void*)entry_vkGetDeviceMemoryCommitment;
8053 }
8054 if (!strcmp(name, "vkBindBufferMemory"))
8055 {
8056 return (void*)entry_vkBindBufferMemory;
8057 }
8058 if (!strcmp(name, "vkBindImageMemory"))
8059 {
8060 return (void*)entry_vkBindImageMemory;
8061 }
8062 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
8063 {
8064 return (void*)entry_vkGetBufferMemoryRequirements;
8065 }
8066 if (!strcmp(name, "vkGetImageMemoryRequirements"))
8067 {
8068 return (void*)entry_vkGetImageMemoryRequirements;
8069 }
8070 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
8071 {
8072 return (void*)entry_vkGetImageSparseMemoryRequirements;
8073 }
8074 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
8075 {
8076 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
8077 }
8078 if (!strcmp(name, "vkQueueBindSparse"))
8079 {
8080 return (void*)entry_vkQueueBindSparse;
8081 }
8082 if (!strcmp(name, "vkCreateFence"))
8083 {
8084 return (void*)entry_vkCreateFence;
8085 }
8086 if (!strcmp(name, "vkDestroyFence"))
8087 {
8088 return (void*)entry_vkDestroyFence;
8089 }
8090 if (!strcmp(name, "vkResetFences"))
8091 {
8092 return (void*)entry_vkResetFences;
8093 }
8094 if (!strcmp(name, "vkGetFenceStatus"))
8095 {
8096 return (void*)entry_vkGetFenceStatus;
8097 }
8098 if (!strcmp(name, "vkWaitForFences"))
8099 {
8100 return (void*)entry_vkWaitForFences;
8101 }
8102 if (!strcmp(name, "vkCreateSemaphore"))
8103 {
8104 return (void*)entry_vkCreateSemaphore;
8105 }
8106 if (!strcmp(name, "vkDestroySemaphore"))
8107 {
8108 return (void*)entry_vkDestroySemaphore;
8109 }
8110 if (!strcmp(name, "vkCreateEvent"))
8111 {
8112 return (void*)entry_vkCreateEvent;
8113 }
8114 if (!strcmp(name, "vkDestroyEvent"))
8115 {
8116 return (void*)entry_vkDestroyEvent;
8117 }
8118 if (!strcmp(name, "vkGetEventStatus"))
8119 {
8120 return (void*)entry_vkGetEventStatus;
8121 }
8122 if (!strcmp(name, "vkSetEvent"))
8123 {
8124 return (void*)entry_vkSetEvent;
8125 }
8126 if (!strcmp(name, "vkResetEvent"))
8127 {
8128 return (void*)entry_vkResetEvent;
8129 }
8130 if (!strcmp(name, "vkCreateQueryPool"))
8131 {
8132 return (void*)entry_vkCreateQueryPool;
8133 }
8134 if (!strcmp(name, "vkDestroyQueryPool"))
8135 {
8136 return (void*)entry_vkDestroyQueryPool;
8137 }
8138 if (!strcmp(name, "vkGetQueryPoolResults"))
8139 {
8140 return (void*)entry_vkGetQueryPoolResults;
8141 }
8142 if (!strcmp(name, "vkCreateBuffer"))
8143 {
8144 return (void*)entry_vkCreateBuffer;
8145 }
8146 if (!strcmp(name, "vkDestroyBuffer"))
8147 {
8148 return (void*)entry_vkDestroyBuffer;
8149 }
8150 if (!strcmp(name, "vkCreateBufferView"))
8151 {
8152 return (void*)entry_vkCreateBufferView;
8153 }
8154 if (!strcmp(name, "vkDestroyBufferView"))
8155 {
8156 return (void*)entry_vkDestroyBufferView;
8157 }
8158 if (!strcmp(name, "vkCreateImage"))
8159 {
8160 return (void*)entry_vkCreateImage;
8161 }
8162 if (!strcmp(name, "vkDestroyImage"))
8163 {
8164 return (void*)entry_vkDestroyImage;
8165 }
8166 if (!strcmp(name, "vkGetImageSubresourceLayout"))
8167 {
8168 return (void*)entry_vkGetImageSubresourceLayout;
8169 }
8170 if (!strcmp(name, "vkCreateImageView"))
8171 {
8172 return (void*)entry_vkCreateImageView;
8173 }
8174 if (!strcmp(name, "vkDestroyImageView"))
8175 {
8176 return (void*)entry_vkDestroyImageView;
8177 }
8178 if (!strcmp(name, "vkCreateShaderModule"))
8179 {
8180 return (void*)entry_vkCreateShaderModule;
8181 }
8182 if (!strcmp(name, "vkDestroyShaderModule"))
8183 {
8184 return (void*)entry_vkDestroyShaderModule;
8185 }
8186 if (!strcmp(name, "vkCreatePipelineCache"))
8187 {
8188 return (void*)entry_vkCreatePipelineCache;
8189 }
8190 if (!strcmp(name, "vkDestroyPipelineCache"))
8191 {
8192 return (void*)entry_vkDestroyPipelineCache;
8193 }
8194 if (!strcmp(name, "vkGetPipelineCacheData"))
8195 {
8196 return (void*)entry_vkGetPipelineCacheData;
8197 }
8198 if (!strcmp(name, "vkMergePipelineCaches"))
8199 {
8200 return (void*)entry_vkMergePipelineCaches;
8201 }
8202 if (!strcmp(name, "vkCreateGraphicsPipelines"))
8203 {
8204 return (void*)entry_vkCreateGraphicsPipelines;
8205 }
8206 if (!strcmp(name, "vkCreateComputePipelines"))
8207 {
8208 return (void*)entry_vkCreateComputePipelines;
8209 }
8210 if (!strcmp(name, "vkDestroyPipeline"))
8211 {
8212 return (void*)entry_vkDestroyPipeline;
8213 }
8214 if (!strcmp(name, "vkCreatePipelineLayout"))
8215 {
8216 return (void*)entry_vkCreatePipelineLayout;
8217 }
8218 if (!strcmp(name, "vkDestroyPipelineLayout"))
8219 {
8220 return (void*)entry_vkDestroyPipelineLayout;
8221 }
8222 if (!strcmp(name, "vkCreateSampler"))
8223 {
8224 return (void*)entry_vkCreateSampler;
8225 }
8226 if (!strcmp(name, "vkDestroySampler"))
8227 {
8228 return (void*)entry_vkDestroySampler;
8229 }
8230 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
8231 {
8232 return (void*)entry_vkCreateDescriptorSetLayout;
8233 }
8234 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
8235 {
8236 return (void*)entry_vkDestroyDescriptorSetLayout;
8237 }
8238 if (!strcmp(name, "vkCreateDescriptorPool"))
8239 {
8240 return (void*)entry_vkCreateDescriptorPool;
8241 }
8242 if (!strcmp(name, "vkDestroyDescriptorPool"))
8243 {
8244 return (void*)entry_vkDestroyDescriptorPool;
8245 }
8246 if (!strcmp(name, "vkResetDescriptorPool"))
8247 {
8248 return (void*)entry_vkResetDescriptorPool;
8249 }
8250 if (!strcmp(name, "vkAllocateDescriptorSets"))
8251 {
8252 return (void*)entry_vkAllocateDescriptorSets;
8253 }
8254 if (!strcmp(name, "vkFreeDescriptorSets"))
8255 {
8256 return (void*)entry_vkFreeDescriptorSets;
8257 }
8258 if (!strcmp(name, "vkUpdateDescriptorSets"))
8259 {
8260 return (void*)entry_vkUpdateDescriptorSets;
8261 }
8262 if (!strcmp(name, "vkCreateFramebuffer"))
8263 {
8264 return (void*)entry_vkCreateFramebuffer;
8265 }
8266 if (!strcmp(name, "vkDestroyFramebuffer"))
8267 {
8268 return (void*)entry_vkDestroyFramebuffer;
8269 }
8270 if (!strcmp(name, "vkCreateRenderPass"))
8271 {
8272 return (void*)entry_vkCreateRenderPass;
8273 }
8274 if (!strcmp(name, "vkDestroyRenderPass"))
8275 {
8276 return (void*)entry_vkDestroyRenderPass;
8277 }
8278 if (!strcmp(name, "vkGetRenderAreaGranularity"))
8279 {
8280 return (void*)entry_vkGetRenderAreaGranularity;
8281 }
8282 if (!strcmp(name, "vkCreateCommandPool"))
8283 {
8284 return (void*)entry_vkCreateCommandPool;
8285 }
8286 if (!strcmp(name, "vkDestroyCommandPool"))
8287 {
8288 return (void*)entry_vkDestroyCommandPool;
8289 }
8290 if (!strcmp(name, "vkResetCommandPool"))
8291 {
8292 return (void*)entry_vkResetCommandPool;
8293 }
8294 if (!strcmp(name, "vkAllocateCommandBuffers"))
8295 {
8296 return (void*)entry_vkAllocateCommandBuffers;
8297 }
8298 if (!strcmp(name, "vkFreeCommandBuffers"))
8299 {
8300 return (void*)entry_vkFreeCommandBuffers;
8301 }
8302 if (!strcmp(name, "vkBeginCommandBuffer"))
8303 {
8304 return (void*)entry_vkBeginCommandBuffer;
8305 }
8306 if (!strcmp(name, "vkEndCommandBuffer"))
8307 {
8308 return (void*)entry_vkEndCommandBuffer;
8309 }
8310 if (!strcmp(name, "vkResetCommandBuffer"))
8311 {
8312 return (void*)entry_vkResetCommandBuffer;
8313 }
8314 if (!strcmp(name, "vkCmdBindPipeline"))
8315 {
8316 return (void*)entry_vkCmdBindPipeline;
8317 }
8318 if (!strcmp(name, "vkCmdSetViewport"))
8319 {
8320 return (void*)entry_vkCmdSetViewport;
8321 }
8322 if (!strcmp(name, "vkCmdSetScissor"))
8323 {
8324 return (void*)entry_vkCmdSetScissor;
8325 }
8326 if (!strcmp(name, "vkCmdSetLineWidth"))
8327 {
8328 return (void*)entry_vkCmdSetLineWidth;
8329 }
8330 if (!strcmp(name, "vkCmdSetDepthBias"))
8331 {
8332 return (void*)entry_vkCmdSetDepthBias;
8333 }
8334 if (!strcmp(name, "vkCmdSetBlendConstants"))
8335 {
8336 return (void*)entry_vkCmdSetBlendConstants;
8337 }
8338 if (!strcmp(name, "vkCmdSetDepthBounds"))
8339 {
8340 return (void*)entry_vkCmdSetDepthBounds;
8341 }
8342 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
8343 {
8344 return (void*)entry_vkCmdSetStencilCompareMask;
8345 }
8346 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
8347 {
8348 return (void*)entry_vkCmdSetStencilWriteMask;
8349 }
8350 if (!strcmp(name, "vkCmdSetStencilReference"))
8351 {
8352 return (void*)entry_vkCmdSetStencilReference;
8353 }
8354 if (!strcmp(name, "vkCmdBindDescriptorSets"))
8355 {
8356 return (void*)entry_vkCmdBindDescriptorSets;
8357 }
8358 if (!strcmp(name, "vkCmdBindIndexBuffer"))
8359 {
8360 return (void*)entry_vkCmdBindIndexBuffer;
8361 }
8362 if (!strcmp(name, "vkCmdBindVertexBuffers"))
8363 {
8364 return (void*)entry_vkCmdBindVertexBuffers;
8365 }
8366 if (!strcmp(name, "vkCmdDraw"))
8367 {
8368 return (void*)entry_vkCmdDraw;
8369 }
8370 if (!strcmp(name, "vkCmdDrawIndexed"))
8371 {
8372 return (void*)entry_vkCmdDrawIndexed;
8373 }
8374 if (!strcmp(name, "vkCmdDrawIndirect"))
8375 {
8376 return (void*)entry_vkCmdDrawIndirect;
8377 }
8378 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
8379 {
8380 return (void*)entry_vkCmdDrawIndexedIndirect;
8381 }
8382 if (!strcmp(name, "vkCmdDispatch"))
8383 {
8384 return (void*)entry_vkCmdDispatch;
8385 }
8386 if (!strcmp(name, "vkCmdDispatchIndirect"))
8387 {
8388 return (void*)entry_vkCmdDispatchIndirect;
8389 }
8390 if (!strcmp(name, "vkCmdCopyBuffer"))
8391 {
8392 return (void*)entry_vkCmdCopyBuffer;
8393 }
8394 if (!strcmp(name, "vkCmdCopyImage"))
8395 {
8396 return (void*)entry_vkCmdCopyImage;
8397 }
8398 if (!strcmp(name, "vkCmdBlitImage"))
8399 {
8400 return (void*)entry_vkCmdBlitImage;
8401 }
8402 if (!strcmp(name, "vkCmdCopyBufferToImage"))
8403 {
8404 return (void*)entry_vkCmdCopyBufferToImage;
8405 }
8406 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
8407 {
8408 return (void*)entry_vkCmdCopyImageToBuffer;
8409 }
8410 if (!strcmp(name, "vkCmdUpdateBuffer"))
8411 {
8412 return (void*)entry_vkCmdUpdateBuffer;
8413 }
8414 if (!strcmp(name, "vkCmdFillBuffer"))
8415 {
8416 return (void*)entry_vkCmdFillBuffer;
8417 }
8418 if (!strcmp(name, "vkCmdClearColorImage"))
8419 {
8420 return (void*)entry_vkCmdClearColorImage;
8421 }
8422 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
8423 {
8424 return (void*)entry_vkCmdClearDepthStencilImage;
8425 }
8426 if (!strcmp(name, "vkCmdClearAttachments"))
8427 {
8428 return (void*)entry_vkCmdClearAttachments;
8429 }
8430 if (!strcmp(name, "vkCmdResolveImage"))
8431 {
8432 return (void*)entry_vkCmdResolveImage;
8433 }
8434 if (!strcmp(name, "vkCmdSetEvent"))
8435 {
8436 return (void*)entry_vkCmdSetEvent;
8437 }
8438 if (!strcmp(name, "vkCmdResetEvent"))
8439 {
8440 return (void*)entry_vkCmdResetEvent;
8441 }
8442 if (!strcmp(name, "vkCmdWaitEvents"))
8443 {
8444 return (void*)entry_vkCmdWaitEvents;
8445 }
8446 if (!strcmp(name, "vkCmdPipelineBarrier"))
8447 {
8448 return (void*)entry_vkCmdPipelineBarrier;
8449 }
8450 if (!strcmp(name, "vkCmdBeginQuery"))
8451 {
8452 return (void*)entry_vkCmdBeginQuery;
8453 }
8454 if (!strcmp(name, "vkCmdEndQuery"))
8455 {
8456 return (void*)entry_vkCmdEndQuery;
8457 }
8458 if (!strcmp(name, "vkCmdResetQueryPool"))
8459 {
8460 return (void*)entry_vkCmdResetQueryPool;
8461 }
8462 if (!strcmp(name, "vkCmdWriteTimestamp"))
8463 {
8464 return (void*)entry_vkCmdWriteTimestamp;
8465 }
8466 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
8467 {
8468 return (void*)entry_vkCmdCopyQueryPoolResults;
8469 }
8470 if (!strcmp(name, "vkCmdPushConstants"))
8471 {
8472 return (void*)entry_vkCmdPushConstants;
8473 }
8474 if (!strcmp(name, "vkCmdBeginRenderPass"))
8475 {
8476 return (void*)entry_vkCmdBeginRenderPass;
8477 }
8478 if (!strcmp(name, "vkCmdNextSubpass"))
8479 {
8480 return (void*)entry_vkCmdNextSubpass;
8481 }
8482 if (!strcmp(name, "vkCmdEndRenderPass"))
8483 {
8484 return (void*)entry_vkCmdEndRenderPass;
8485 }
8486 if (!strcmp(name, "vkCmdExecuteCommands"))
8487 {
8488 return (void*)entry_vkCmdExecuteCommands;
8489 }
8490#endif
8491#ifdef VK_VERSION_1_1
8492 if (!strcmp(name, "vkEnumerateInstanceVersion"))
8493 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008494 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008495 }
8496 if (!strcmp(name, "vkBindBufferMemory2"))
8497 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008498 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008499 }
8500 if (!strcmp(name, "vkBindImageMemory2"))
8501 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008502 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008503 }
8504 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
8505 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008506 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008507 }
8508 if (!strcmp(name, "vkCmdSetDeviceMask"))
8509 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008510 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008511 }
8512 if (!strcmp(name, "vkCmdDispatchBase"))
8513 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008514 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008515 }
8516 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
8517 {
Lingfeng Yang113689e2018-11-11 16:48:50 -08008518 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008519 }
8520 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
8521 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008522 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008523 }
8524 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
8525 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008526 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008527 }
8528 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
8529 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008530 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008531 }
8532 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
8533 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008534 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008535 }
8536 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
8537 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008538 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008539 }
8540 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
8541 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008542 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008543 }
8544 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
8545 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008546 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008547 }
8548 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
8549 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008550 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008551 }
8552 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
8553 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008554 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008555 }
8556 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
8557 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008558 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008559 }
8560 if (!strcmp(name, "vkTrimCommandPool"))
8561 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008562 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008563 }
8564 if (!strcmp(name, "vkGetDeviceQueue2"))
8565 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008566 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008567 }
8568 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
8569 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008570 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008571 }
8572 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
8573 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008574 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008575 }
8576 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
8577 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008578 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008579 }
8580 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
8581 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008582 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008583 }
8584 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
8585 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008586 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008587 }
8588 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
8589 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008590 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008591 }
8592 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
8593 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008594 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008595 }
8596 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
8597 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008598 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008599 }
8600 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
8601 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008602 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008603 }
8604#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008605#ifdef VK_VERSION_1_2
8606 if (!strcmp(name, "vkCmdDrawIndirectCount"))
8607 {
8608 return nullptr;
8609 }
8610 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
8611 {
8612 return nullptr;
8613 }
8614 if (!strcmp(name, "vkCreateRenderPass2"))
8615 {
8616 return nullptr;
8617 }
8618 if (!strcmp(name, "vkCmdBeginRenderPass2"))
8619 {
8620 return nullptr;
8621 }
8622 if (!strcmp(name, "vkCmdNextSubpass2"))
8623 {
8624 return nullptr;
8625 }
8626 if (!strcmp(name, "vkCmdEndRenderPass2"))
8627 {
8628 return nullptr;
8629 }
8630 if (!strcmp(name, "vkResetQueryPool"))
8631 {
8632 return nullptr;
8633 }
8634 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
8635 {
8636 return nullptr;
8637 }
8638 if (!strcmp(name, "vkWaitSemaphores"))
8639 {
8640 return nullptr;
8641 }
8642 if (!strcmp(name, "vkSignalSemaphore"))
8643 {
8644 return nullptr;
8645 }
8646 if (!strcmp(name, "vkGetBufferDeviceAddress"))
8647 {
8648 return nullptr;
8649 }
8650 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
8651 {
8652 return nullptr;
8653 }
8654 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
8655 {
8656 return nullptr;
8657 }
8658#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008659#ifdef VK_KHR_surface
8660 if (!strcmp(name, "vkDestroySurfaceKHR"))
8661 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008662 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008663 }
8664 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
8665 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008666 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008667 }
8668 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
8669 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008670 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008671 }
8672 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
8673 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008674 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008675 }
8676 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
8677 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008678 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008679 }
8680#endif
8681#ifdef VK_KHR_swapchain
8682 if (!strcmp(name, "vkCreateSwapchainKHR"))
8683 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008684 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008685 }
8686 if (!strcmp(name, "vkDestroySwapchainKHR"))
8687 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008688 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008689 }
8690 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
8691 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008692 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008693 }
8694 if (!strcmp(name, "vkAcquireNextImageKHR"))
8695 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008696 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008697 }
8698 if (!strcmp(name, "vkQueuePresentKHR"))
8699 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008700 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008701 }
8702 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
8703 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008704 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008705 }
8706 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
8707 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008708 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008709 }
8710 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
8711 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008712 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008713 }
8714 if (!strcmp(name, "vkAcquireNextImage2KHR"))
8715 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008716 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008717 }
8718#endif
8719#ifdef VK_KHR_display
8720 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
8721 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008722 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008723 }
8724 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
8725 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008726 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008727 }
8728 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
8729 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008730 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008731 }
8732 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
8733 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008734 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008735 }
8736 if (!strcmp(name, "vkCreateDisplayModeKHR"))
8737 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008738 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008739 }
8740 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
8741 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008742 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008743 }
8744 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
8745 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008746 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008747 }
8748#endif
8749#ifdef VK_KHR_display_swapchain
8750 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
8751 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008752 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008753 }
8754#endif
8755#ifdef VK_KHR_xlib_surface
8756 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
8757 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008758 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008759 }
8760 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
8761 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008762 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008763 }
8764#endif
8765#ifdef VK_KHR_xcb_surface
8766 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
8767 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008768 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008769 }
8770 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
8771 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008772 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008773 }
8774#endif
8775#ifdef VK_KHR_wayland_surface
8776 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
8777 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008778 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008779 }
8780 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
8781 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008782 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008783 }
8784#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008785#ifdef VK_KHR_android_surface
8786 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
8787 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008788 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008789 }
8790#endif
8791#ifdef VK_KHR_win32_surface
8792 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
8793 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008794 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008795 }
8796 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
8797 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008798 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008799 }
8800#endif
8801#ifdef VK_KHR_get_physical_device_properties2
8802 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
8803 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008804 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008805 }
8806 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
8807 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008808 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008809 }
8810 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
8811 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008812 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008813 }
8814 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
8815 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008816 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008817 }
8818 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
8819 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008820 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008821 }
8822 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
8823 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008824 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008825 }
8826 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
8827 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008828 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008829 }
8830#endif
8831#ifdef VK_KHR_device_group
8832 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
8833 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008834 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008835 }
8836 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
8837 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008838 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008839 }
8840 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
8841 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008842 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008843 }
8844#endif
8845#ifdef VK_KHR_maintenance1
8846 if (!strcmp(name, "vkTrimCommandPoolKHR"))
8847 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008848 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008849 }
8850#endif
8851#ifdef VK_KHR_device_group_creation
8852 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
8853 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008854 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008855 }
8856#endif
8857#ifdef VK_KHR_external_memory_capabilities
8858 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
8859 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008860 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008861 }
8862#endif
8863#ifdef VK_KHR_external_memory_win32
8864 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
8865 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008866 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008867 }
8868 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
8869 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008870 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008871 }
8872#endif
8873#ifdef VK_KHR_external_memory_fd
8874 if (!strcmp(name, "vkGetMemoryFdKHR"))
8875 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008876 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008877 }
8878 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
8879 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008880 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008881 }
8882#endif
8883#ifdef VK_KHR_external_semaphore_capabilities
8884 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
8885 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008886 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008887 }
8888#endif
8889#ifdef VK_KHR_external_semaphore_win32
8890 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
8891 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008892 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008893 }
8894 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
8895 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008896 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008897 }
8898#endif
8899#ifdef VK_KHR_external_semaphore_fd
8900 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
8901 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008902 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008903 }
8904 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
8905 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008906 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008907 }
8908#endif
8909#ifdef VK_KHR_push_descriptor
8910 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
8911 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008912 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008913 }
8914 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
8915 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008916 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008917 }
8918#endif
8919#ifdef VK_KHR_descriptor_update_template
8920 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
8921 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008922 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008923 }
8924 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
8925 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008926 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008927 }
8928 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
8929 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008930 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008931 }
8932#endif
8933#ifdef VK_KHR_create_renderpass2
8934 if (!strcmp(name, "vkCreateRenderPass2KHR"))
8935 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008936 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008937 }
8938 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
8939 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008940 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008941 }
8942 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
8943 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008944 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008945 }
8946 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
8947 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008948 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008949 }
8950#endif
8951#ifdef VK_KHR_shared_presentable_image
8952 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
8953 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008954 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008955 }
8956#endif
8957#ifdef VK_KHR_external_fence_capabilities
8958 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
8959 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008960 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008961 }
8962#endif
8963#ifdef VK_KHR_external_fence_win32
8964 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
8965 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008966 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008967 }
8968 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
8969 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008970 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008971 }
8972#endif
8973#ifdef VK_KHR_external_fence_fd
8974 if (!strcmp(name, "vkImportFenceFdKHR"))
8975 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008976 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008977 }
8978 if (!strcmp(name, "vkGetFenceFdKHR"))
8979 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008980 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008981 }
8982#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008983#ifdef VK_KHR_performance_query
8984 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
8985 {
8986 return nullptr;
8987 }
8988 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
8989 {
8990 return nullptr;
8991 }
8992 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
8993 {
8994 return nullptr;
8995 }
8996 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
8997 {
8998 return nullptr;
8999 }
9000#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009001#ifdef VK_KHR_get_surface_capabilities2
9002 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
9003 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009004 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009005 }
9006 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
9007 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009008 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009009 }
9010#endif
9011#ifdef VK_KHR_get_display_properties2
9012 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
9013 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009014 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009015 }
9016 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
9017 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009018 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009019 }
9020 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
9021 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009022 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009023 }
9024 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
9025 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009026 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009027 }
9028#endif
9029#ifdef VK_KHR_get_memory_requirements2
9030 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
9031 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009032 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009033 }
9034 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
9035 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009036 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009037 }
9038 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
9039 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009040 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009041 }
9042#endif
9043#ifdef VK_KHR_sampler_ycbcr_conversion
9044 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
9045 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009046 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009047 }
9048 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
9049 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009050 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009051 }
9052#endif
9053#ifdef VK_KHR_bind_memory2
9054 if (!strcmp(name, "vkBindBufferMemory2KHR"))
9055 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009056 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009057 }
9058 if (!strcmp(name, "vkBindImageMemory2KHR"))
9059 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009060 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009061 }
9062#endif
9063#ifdef VK_KHR_maintenance3
9064 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
9065 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009066 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009067 }
9068#endif
9069#ifdef VK_KHR_draw_indirect_count
9070 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
9071 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009072 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009073 }
9074 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
9075 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009076 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009077 }
9078#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009079#ifdef VK_KHR_timeline_semaphore
9080 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
9081 {
9082 return nullptr;
9083 }
9084 if (!strcmp(name, "vkWaitSemaphoresKHR"))
9085 {
9086 return nullptr;
9087 }
9088 if (!strcmp(name, "vkSignalSemaphoreKHR"))
9089 {
9090 return nullptr;
9091 }
9092#endif
9093#ifdef VK_KHR_fragment_shading_rate
9094 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
9095 {
9096 return nullptr;
9097 }
9098 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
9099 {
9100 return nullptr;
9101 }
9102#endif
9103#ifdef VK_KHR_buffer_device_address
9104 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
9105 {
9106 return nullptr;
9107 }
9108 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
9109 {
9110 return nullptr;
9111 }
9112 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
9113 {
9114 return nullptr;
9115 }
9116#endif
9117#ifdef VK_KHR_deferred_host_operations
9118 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
9119 {
9120 return nullptr;
9121 }
9122 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
9123 {
9124 return nullptr;
9125 }
9126 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
9127 {
9128 return nullptr;
9129 }
9130 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
9131 {
9132 return nullptr;
9133 }
9134 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
9135 {
9136 return nullptr;
9137 }
9138#endif
9139#ifdef VK_KHR_pipeline_executable_properties
9140 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
9141 {
9142 return nullptr;
9143 }
9144 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
9145 {
9146 return nullptr;
9147 }
9148 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
9149 {
9150 return nullptr;
9151 }
9152#endif
9153#ifdef VK_KHR_copy_commands2
9154 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
9155 {
9156 return nullptr;
9157 }
9158 if (!strcmp(name, "vkCmdCopyImage2KHR"))
9159 {
9160 return nullptr;
9161 }
9162 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
9163 {
9164 return nullptr;
9165 }
9166 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
9167 {
9168 return nullptr;
9169 }
9170 if (!strcmp(name, "vkCmdBlitImage2KHR"))
9171 {
9172 return nullptr;
9173 }
9174 if (!strcmp(name, "vkCmdResolveImage2KHR"))
9175 {
9176 return nullptr;
9177 }
9178#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08009179#ifdef VK_ANDROID_native_buffer
9180 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
9181 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009182 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08009183 }
9184 if (!strcmp(name, "vkAcquireImageANDROID"))
9185 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009186 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08009187 }
9188 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
9189 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009190 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08009191 }
9192#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009193#ifdef VK_EXT_debug_report
9194 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
9195 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009196 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009197 }
9198 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
9199 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009200 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009201 }
9202 if (!strcmp(name, "vkDebugReportMessageEXT"))
9203 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009204 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009205 }
9206#endif
9207#ifdef VK_EXT_debug_marker
9208 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
9209 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009210 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009211 }
9212 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
9213 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009214 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009215 }
9216 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
9217 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009218 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009219 }
9220 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
9221 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009222 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009223 }
9224 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
9225 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009226 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009227 }
9228#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009229#ifdef VK_EXT_transform_feedback
9230 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
9231 {
9232 return nullptr;
9233 }
9234 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
9235 {
9236 return nullptr;
9237 }
9238 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
9239 {
9240 return nullptr;
9241 }
9242 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
9243 {
9244 return nullptr;
9245 }
9246 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
9247 {
9248 return nullptr;
9249 }
9250 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
9251 {
9252 return nullptr;
9253 }
9254#endif
9255#ifdef VK_NVX_image_view_handle
9256 if (!strcmp(name, "vkGetImageViewHandleNVX"))
9257 {
9258 return nullptr;
9259 }
9260 if (!strcmp(name, "vkGetImageViewAddressNVX"))
9261 {
9262 return nullptr;
9263 }
9264#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009265#ifdef VK_AMD_draw_indirect_count
9266 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
9267 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009268 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009269 }
9270 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
9271 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009272 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009273 }
9274#endif
9275#ifdef VK_AMD_shader_info
9276 if (!strcmp(name, "vkGetShaderInfoAMD"))
9277 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009278 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009279 }
9280#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009281#ifdef VK_GGP_stream_descriptor_surface
9282 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
9283 {
9284 return nullptr;
9285 }
9286#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009287#ifdef VK_NV_external_memory_capabilities
9288 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
9289 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009290 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009291 }
9292#endif
9293#ifdef VK_NV_external_memory_win32
9294 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
9295 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009296 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009297 }
9298#endif
9299#ifdef VK_NN_vi_surface
9300 if (!strcmp(name, "vkCreateViSurfaceNN"))
9301 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009302 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009303 }
9304#endif
9305#ifdef VK_EXT_conditional_rendering
9306 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
9307 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009308 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009309 }
9310 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
9311 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009312 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009313 }
9314#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009315#ifdef VK_NV_clip_space_w_scaling
9316 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
9317 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009318 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009319 }
9320#endif
9321#ifdef VK_EXT_direct_mode_display
9322 if (!strcmp(name, "vkReleaseDisplayEXT"))
9323 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009324 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009325 }
9326#endif
9327#ifdef VK_EXT_acquire_xlib_display
9328 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
9329 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009330 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009331 }
9332 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
9333 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009334 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009335 }
9336#endif
9337#ifdef VK_EXT_display_surface_counter
9338 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
9339 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009340 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009341 }
9342#endif
9343#ifdef VK_EXT_display_control
9344 if (!strcmp(name, "vkDisplayPowerControlEXT"))
9345 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009346 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009347 }
9348 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
9349 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009350 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009351 }
9352 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
9353 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009354 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009355 }
9356 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
9357 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009358 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009359 }
9360#endif
9361#ifdef VK_GOOGLE_display_timing
9362 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
9363 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009364 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009365 }
9366 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
9367 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009368 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009369 }
9370#endif
9371#ifdef VK_EXT_discard_rectangles
9372 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
9373 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009374 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009375 }
9376#endif
9377#ifdef VK_EXT_hdr_metadata
9378 if (!strcmp(name, "vkSetHdrMetadataEXT"))
9379 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009380 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009381 }
9382#endif
9383#ifdef VK_MVK_ios_surface
9384 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
9385 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009386 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009387 }
9388#endif
9389#ifdef VK_MVK_macos_surface
9390 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
9391 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009392 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009393 }
9394#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009395#ifdef VK_MVK_moltenvk
9396 if (!strcmp(name, "vkGetMTLDeviceMVK"))
9397 {
9398 return nullptr;
9399 }
9400 if (!strcmp(name, "vkSetMTLTextureMVK"))
9401 {
9402 return nullptr;
9403 }
9404 if (!strcmp(name, "vkGetMTLTextureMVK"))
9405 {
9406 return nullptr;
9407 }
9408 if (!strcmp(name, "vkGetMTLBufferMVK"))
9409 {
9410 return nullptr;
9411 }
9412 if (!strcmp(name, "vkUseIOSurfaceMVK"))
9413 {
9414 return nullptr;
9415 }
9416 if (!strcmp(name, "vkGetIOSurfaceMVK"))
9417 {
9418 return nullptr;
9419 }
9420#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009421#ifdef VK_EXT_debug_utils
9422 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
9423 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009424 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009425 }
9426 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
9427 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009428 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009429 }
9430 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
9431 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009432 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009433 }
9434 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
9435 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009436 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009437 }
9438 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
9439 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009440 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009441 }
9442 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
9443 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009444 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009445 }
9446 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
9447 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009448 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009449 }
9450 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
9451 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009452 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009453 }
9454 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
9455 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009456 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009457 }
9458 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
9459 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009460 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009461 }
9462 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
9463 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009464 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009465 }
9466#endif
9467#ifdef VK_ANDROID_external_memory_android_hardware_buffer
9468 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
9469 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009470 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009471 }
9472 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
9473 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009474 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009475 }
9476#endif
9477#ifdef VK_EXT_sample_locations
9478 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
9479 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009480 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009481 }
9482 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
9483 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009484 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009485 }
9486#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009487#ifdef VK_EXT_image_drm_format_modifier
9488 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
9489 {
9490 return nullptr;
9491 }
9492#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009493#ifdef VK_EXT_validation_cache
9494 if (!strcmp(name, "vkCreateValidationCacheEXT"))
9495 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009496 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009497 }
9498 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
9499 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009500 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009501 }
9502 if (!strcmp(name, "vkMergeValidationCachesEXT"))
9503 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009504 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009505 }
9506 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
9507 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009508 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009509 }
9510#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009511#ifdef VK_NV_shading_rate_image
9512 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
9513 {
9514 return nullptr;
9515 }
9516 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
9517 {
9518 return nullptr;
9519 }
9520 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
9521 {
9522 return nullptr;
9523 }
9524#endif
9525#ifdef VK_NV_ray_tracing
9526 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
9527 {
9528 return nullptr;
9529 }
9530 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
9531 {
9532 return nullptr;
9533 }
9534 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
9535 {
9536 return nullptr;
9537 }
9538 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
9539 {
9540 return nullptr;
9541 }
9542 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
9543 {
9544 return nullptr;
9545 }
9546 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
9547 {
9548 return nullptr;
9549 }
9550 if (!strcmp(name, "vkCmdTraceRaysNV"))
9551 {
9552 return nullptr;
9553 }
9554 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
9555 {
9556 return nullptr;
9557 }
9558 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
9559 {
9560 return nullptr;
9561 }
9562 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
9563 {
9564 return nullptr;
9565 }
9566 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
9567 {
9568 return nullptr;
9569 }
9570 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
9571 {
9572 return nullptr;
9573 }
9574 if (!strcmp(name, "vkCompileDeferredNV"))
9575 {
9576 return nullptr;
9577 }
9578#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009579#ifdef VK_EXT_external_memory_host
9580 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
9581 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009582 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009583 }
9584#endif
9585#ifdef VK_AMD_buffer_marker
9586 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
9587 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009588 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009589 }
9590#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009591#ifdef VK_EXT_calibrated_timestamps
9592 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
9593 {
9594 return nullptr;
9595 }
9596 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
9597 {
9598 return nullptr;
9599 }
9600#endif
9601#ifdef VK_NV_mesh_shader
9602 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
9603 {
9604 return nullptr;
9605 }
9606 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
9607 {
9608 return nullptr;
9609 }
9610 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
9611 {
9612 return nullptr;
9613 }
9614#endif
9615#ifdef VK_NV_scissor_exclusive
9616 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
9617 {
9618 return nullptr;
9619 }
9620#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009621#ifdef VK_NV_device_diagnostic_checkpoints
9622 if (!strcmp(name, "vkCmdSetCheckpointNV"))
9623 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009624 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009625 }
9626 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
9627 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009628 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009629 }
9630#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009631#ifdef VK_INTEL_performance_query
9632 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
9633 {
9634 return nullptr;
9635 }
9636 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
9637 {
9638 return nullptr;
9639 }
9640 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
9641 {
9642 return nullptr;
9643 }
9644 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
9645 {
9646 return nullptr;
9647 }
9648 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
9649 {
9650 return nullptr;
9651 }
9652 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
9653 {
9654 return nullptr;
9655 }
9656 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
9657 {
9658 return nullptr;
9659 }
9660 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
9661 {
9662 return nullptr;
9663 }
9664 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
9665 {
9666 return nullptr;
9667 }
9668#endif
9669#ifdef VK_AMD_display_native_hdr
9670 if (!strcmp(name, "vkSetLocalDimmingAMD"))
9671 {
9672 return nullptr;
9673 }
9674#endif
9675#ifdef VK_FUCHSIA_imagepipe_surface
9676 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
9677 {
9678 return nullptr;
9679 }
9680#endif
9681#ifdef VK_EXT_metal_surface
9682 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08009683 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009684 return nullptr;
9685 }
9686#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009687#ifdef VK_EXT_buffer_device_address
9688 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
9689 {
9690 return nullptr;
9691 }
9692#endif
9693#ifdef VK_EXT_tooling_info
9694 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
9695 {
9696 return nullptr;
9697 }
9698#endif
9699#ifdef VK_NV_cooperative_matrix
9700 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
9701 {
9702 return nullptr;
9703 }
9704#endif
9705#ifdef VK_NV_coverage_reduction_mode
9706 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
9707 {
9708 return nullptr;
9709 }
9710#endif
9711#ifdef VK_EXT_full_screen_exclusive
9712 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
9713 {
9714 return nullptr;
9715 }
9716 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
9717 {
9718 return nullptr;
9719 }
9720 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
9721 {
9722 return nullptr;
9723 }
9724 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
9725 {
9726 return nullptr;
9727 }
9728#endif
9729#ifdef VK_EXT_headless_surface
9730 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
9731 {
9732 return nullptr;
9733 }
9734#endif
9735#ifdef VK_EXT_line_rasterization
9736 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
9737 {
9738 return nullptr;
9739 }
9740#endif
9741#ifdef VK_EXT_host_query_reset
9742 if (!strcmp(name, "vkResetQueryPoolEXT"))
9743 {
9744 return nullptr;
9745 }
9746#endif
9747#ifdef VK_EXT_extended_dynamic_state
9748 if (!strcmp(name, "vkCmdSetCullModeEXT"))
9749 {
9750 return nullptr;
9751 }
9752 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
9753 {
9754 return nullptr;
9755 }
9756 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
9757 {
9758 return nullptr;
9759 }
9760 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
9761 {
9762 return nullptr;
9763 }
9764 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
9765 {
9766 return nullptr;
9767 }
9768 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
9769 {
9770 return nullptr;
9771 }
9772 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
9773 {
9774 return nullptr;
9775 }
9776 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
9777 {
9778 return nullptr;
9779 }
9780 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
9781 {
9782 return nullptr;
9783 }
9784 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
9785 {
9786 return nullptr;
9787 }
9788 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
9789 {
9790 return nullptr;
9791 }
9792 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
9793 {
9794 return nullptr;
9795 }
9796#endif
9797#ifdef VK_NV_device_generated_commands
9798 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
9799 {
9800 return nullptr;
9801 }
9802 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
9803 {
9804 return nullptr;
9805 }
9806 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
9807 {
9808 return nullptr;
9809 }
9810 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
9811 {
9812 return nullptr;
9813 }
9814 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
9815 {
9816 return nullptr;
9817 }
9818 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
9819 {
9820 return nullptr;
9821 }
9822#endif
9823#ifdef VK_EXT_private_data
9824 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
9825 {
9826 return nullptr;
9827 }
9828 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
9829 {
9830 return nullptr;
9831 }
9832 if (!strcmp(name, "vkSetPrivateDataEXT"))
9833 {
9834 return nullptr;
9835 }
9836 if (!strcmp(name, "vkGetPrivateDataEXT"))
9837 {
9838 return nullptr;
9839 }
9840#endif
9841#ifdef VK_NV_fragment_shading_rate_enums
9842 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
9843 {
9844 return nullptr;
9845 }
9846#endif
9847#ifdef VK_EXT_directfb_surface
9848 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
9849 {
9850 return nullptr;
9851 }
9852 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
9853 {
9854 return nullptr;
9855 }
9856#endif
Yilong Li71c43c52021-02-10 02:50:43 -08009857#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -07009858 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
9859 {
9860 return nullptr;
9861 }
9862 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
9863 {
9864 return nullptr;
9865 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009866 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
9867 {
9868 return nullptr;
9869 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07009870 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
9871 {
9872 return nullptr;
9873 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009874 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
9875 {
9876 return nullptr;
9877 }
9878 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
9879 {
9880 return nullptr;
9881 }
9882 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
9883 {
9884 return nullptr;
9885 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07009886 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
9887 {
9888 return nullptr;
9889 }
Lingfeng Yang87f11962019-06-27 16:28:53 +00009890 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
9891 {
9892 return nullptr;
9893 }
9894 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
9895 {
9896 return nullptr;
9897 }
Lingfeng Yang4c542412020-02-04 18:18:32 -08009898 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
9899 {
9900 return nullptr;
9901 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07009902 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
9903 {
9904 return nullptr;
9905 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07009906 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
9907 {
9908 return nullptr;
9909 }
9910 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
9911 {
9912 return nullptr;
9913 }
9914 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
9915 {
9916 return nullptr;
9917 }
9918 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
9919 {
9920 return nullptr;
9921 }
Yilong Lia48b0102020-09-15 15:08:28 -07009922 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
9923 {
9924 return nullptr;
9925 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009926 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
Lingfeng Yang2178dc72021-01-08 14:01:47 -08009927 {
9928 return nullptr;
9929 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08009930 if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
9931 {
9932 return nullptr;
9933 }
9934 if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
9935 {
9936 return nullptr;
9937 }
Lingfeng Yang5678e1e2021-07-15 12:28:05 -07009938 if (!strcmp(name, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE"))
9939 {
9940 return nullptr;
9941 }
Lingfeng Yang2178dc72021-01-08 14:01:47 -08009942#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009943#ifdef VK_KHR_acceleration_structure
9944 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
9945 {
9946 return nullptr;
9947 }
9948 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
9949 {
9950 return nullptr;
9951 }
9952 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
9953 {
9954 return nullptr;
9955 }
9956 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
9957 {
9958 return nullptr;
9959 }
9960 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
9961 {
9962 return nullptr;
9963 }
9964 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
9965 {
9966 return nullptr;
9967 }
9968 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
9969 {
9970 return nullptr;
9971 }
9972 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
9973 {
9974 return nullptr;
9975 }
9976 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
9977 {
9978 return nullptr;
9979 }
9980 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
9981 {
9982 return nullptr;
9983 }
9984 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
9985 {
9986 return nullptr;
9987 }
9988 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
9989 {
9990 return nullptr;
9991 }
9992 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
9993 {
9994 return nullptr;
9995 }
9996 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
9997 {
9998 return nullptr;
9999 }
10000 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
10001 {
10002 return nullptr;
10003 }
10004 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
10005 {
10006 return nullptr;
10007 }
10008#endif
10009#ifdef VK_KHR_ray_tracing_pipeline
10010 if (!strcmp(name, "vkCmdTraceRaysKHR"))
10011 {
10012 return nullptr;
10013 }
10014 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
10015 {
10016 return nullptr;
10017 }
10018 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
10019 {
10020 return nullptr;
10021 }
10022 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
10023 {
10024 return nullptr;
10025 }
10026 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
10027 {
10028 return nullptr;
10029 }
10030 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
Lingfeng Yangded34672021-01-22 23:17:47 -080010031 {
10032 return nullptr;
10033 }
10034#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010035 return nullptr;
10036}
10037void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
10038 auto resources = ResourceTracker::get();
10039 bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
10040#ifdef VK_VERSION_1_0
10041 if (!strcmp(name, "vkCreateInstance"))
10042 {
10043 return (void*)entry_vkCreateInstance;
10044 }
10045 if (!strcmp(name, "vkDestroyInstance"))
10046 {
10047 return (void*)entry_vkDestroyInstance;
10048 }
10049 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
10050 {
10051 return (void*)entry_vkEnumeratePhysicalDevices;
10052 }
10053 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
10054 {
10055 return (void*)entry_vkGetPhysicalDeviceFeatures;
10056 }
10057 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
10058 {
10059 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
10060 }
10061 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
10062 {
10063 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
10064 }
10065 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
10066 {
10067 return (void*)entry_vkGetPhysicalDeviceProperties;
10068 }
10069 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
10070 {
10071 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
10072 }
10073 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
10074 {
10075 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
10076 }
10077 if (!strcmp(name, "vkGetInstanceProcAddr"))
10078 {
10079 return (void*)entry_vkGetInstanceProcAddr;
10080 }
10081 if (!strcmp(name, "vkGetDeviceProcAddr"))
10082 {
10083 return (void*)entry_vkGetDeviceProcAddr;
10084 }
10085 if (!strcmp(name, "vkCreateDevice"))
10086 {
10087 return (void*)entry_vkCreateDevice;
10088 }
10089 if (!strcmp(name, "vkDestroyDevice"))
10090 {
10091 return (void*)entry_vkDestroyDevice;
10092 }
10093 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
10094 {
10095 return (void*)entry_vkEnumerateInstanceExtensionProperties;
10096 }
10097 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
10098 {
10099 return (void*)entry_vkEnumerateDeviceExtensionProperties;
10100 }
10101 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
10102 {
10103 return (void*)entry_vkEnumerateInstanceLayerProperties;
10104 }
10105 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
10106 {
10107 return (void*)entry_vkEnumerateDeviceLayerProperties;
10108 }
10109 if (!strcmp(name, "vkGetDeviceQueue"))
10110 {
10111 return (void*)entry_vkGetDeviceQueue;
10112 }
10113 if (!strcmp(name, "vkQueueSubmit"))
10114 {
10115 return (void*)entry_vkQueueSubmit;
10116 }
10117 if (!strcmp(name, "vkQueueWaitIdle"))
10118 {
10119 return (void*)entry_vkQueueWaitIdle;
10120 }
10121 if (!strcmp(name, "vkDeviceWaitIdle"))
10122 {
10123 return (void*)entry_vkDeviceWaitIdle;
10124 }
10125 if (!strcmp(name, "vkAllocateMemory"))
10126 {
10127 return (void*)entry_vkAllocateMemory;
10128 }
10129 if (!strcmp(name, "vkFreeMemory"))
10130 {
10131 return (void*)entry_vkFreeMemory;
10132 }
10133 if (!strcmp(name, "vkMapMemory"))
10134 {
10135 return (void*)entry_vkMapMemory;
10136 }
10137 if (!strcmp(name, "vkUnmapMemory"))
10138 {
10139 return (void*)entry_vkUnmapMemory;
10140 }
10141 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
10142 {
10143 return (void*)entry_vkFlushMappedMemoryRanges;
10144 }
10145 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
10146 {
10147 return (void*)entry_vkInvalidateMappedMemoryRanges;
10148 }
10149 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
10150 {
10151 return (void*)entry_vkGetDeviceMemoryCommitment;
10152 }
10153 if (!strcmp(name, "vkBindBufferMemory"))
10154 {
10155 return (void*)entry_vkBindBufferMemory;
10156 }
10157 if (!strcmp(name, "vkBindImageMemory"))
10158 {
10159 return (void*)entry_vkBindImageMemory;
10160 }
10161 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
10162 {
10163 return (void*)entry_vkGetBufferMemoryRequirements;
10164 }
10165 if (!strcmp(name, "vkGetImageMemoryRequirements"))
10166 {
10167 return (void*)entry_vkGetImageMemoryRequirements;
10168 }
10169 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
10170 {
10171 return (void*)entry_vkGetImageSparseMemoryRequirements;
10172 }
10173 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
10174 {
10175 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
10176 }
10177 if (!strcmp(name, "vkQueueBindSparse"))
10178 {
10179 return (void*)entry_vkQueueBindSparse;
10180 }
10181 if (!strcmp(name, "vkCreateFence"))
10182 {
10183 return (void*)entry_vkCreateFence;
10184 }
10185 if (!strcmp(name, "vkDestroyFence"))
10186 {
10187 return (void*)entry_vkDestroyFence;
10188 }
10189 if (!strcmp(name, "vkResetFences"))
10190 {
10191 return (void*)entry_vkResetFences;
10192 }
10193 if (!strcmp(name, "vkGetFenceStatus"))
10194 {
10195 return (void*)entry_vkGetFenceStatus;
10196 }
10197 if (!strcmp(name, "vkWaitForFences"))
10198 {
10199 return (void*)entry_vkWaitForFences;
10200 }
10201 if (!strcmp(name, "vkCreateSemaphore"))
10202 {
10203 return (void*)entry_vkCreateSemaphore;
10204 }
10205 if (!strcmp(name, "vkDestroySemaphore"))
10206 {
10207 return (void*)entry_vkDestroySemaphore;
10208 }
10209 if (!strcmp(name, "vkCreateEvent"))
10210 {
10211 return (void*)entry_vkCreateEvent;
10212 }
10213 if (!strcmp(name, "vkDestroyEvent"))
10214 {
10215 return (void*)entry_vkDestroyEvent;
10216 }
10217 if (!strcmp(name, "vkGetEventStatus"))
10218 {
10219 return (void*)entry_vkGetEventStatus;
10220 }
10221 if (!strcmp(name, "vkSetEvent"))
10222 {
10223 return (void*)entry_vkSetEvent;
10224 }
10225 if (!strcmp(name, "vkResetEvent"))
10226 {
10227 return (void*)entry_vkResetEvent;
10228 }
10229 if (!strcmp(name, "vkCreateQueryPool"))
10230 {
10231 return (void*)entry_vkCreateQueryPool;
10232 }
10233 if (!strcmp(name, "vkDestroyQueryPool"))
10234 {
10235 return (void*)entry_vkDestroyQueryPool;
10236 }
10237 if (!strcmp(name, "vkGetQueryPoolResults"))
10238 {
10239 return (void*)entry_vkGetQueryPoolResults;
10240 }
10241 if (!strcmp(name, "vkCreateBuffer"))
10242 {
10243 return (void*)entry_vkCreateBuffer;
10244 }
10245 if (!strcmp(name, "vkDestroyBuffer"))
10246 {
10247 return (void*)entry_vkDestroyBuffer;
10248 }
10249 if (!strcmp(name, "vkCreateBufferView"))
10250 {
10251 return (void*)entry_vkCreateBufferView;
10252 }
10253 if (!strcmp(name, "vkDestroyBufferView"))
10254 {
10255 return (void*)entry_vkDestroyBufferView;
10256 }
10257 if (!strcmp(name, "vkCreateImage"))
10258 {
10259 return (void*)entry_vkCreateImage;
10260 }
10261 if (!strcmp(name, "vkDestroyImage"))
10262 {
10263 return (void*)entry_vkDestroyImage;
10264 }
10265 if (!strcmp(name, "vkGetImageSubresourceLayout"))
10266 {
10267 return (void*)entry_vkGetImageSubresourceLayout;
10268 }
10269 if (!strcmp(name, "vkCreateImageView"))
10270 {
10271 return (void*)entry_vkCreateImageView;
10272 }
10273 if (!strcmp(name, "vkDestroyImageView"))
10274 {
10275 return (void*)entry_vkDestroyImageView;
10276 }
10277 if (!strcmp(name, "vkCreateShaderModule"))
10278 {
10279 return (void*)entry_vkCreateShaderModule;
10280 }
10281 if (!strcmp(name, "vkDestroyShaderModule"))
10282 {
10283 return (void*)entry_vkDestroyShaderModule;
10284 }
10285 if (!strcmp(name, "vkCreatePipelineCache"))
10286 {
10287 return (void*)entry_vkCreatePipelineCache;
10288 }
10289 if (!strcmp(name, "vkDestroyPipelineCache"))
10290 {
10291 return (void*)entry_vkDestroyPipelineCache;
10292 }
10293 if (!strcmp(name, "vkGetPipelineCacheData"))
10294 {
10295 return (void*)entry_vkGetPipelineCacheData;
10296 }
10297 if (!strcmp(name, "vkMergePipelineCaches"))
10298 {
10299 return (void*)entry_vkMergePipelineCaches;
10300 }
10301 if (!strcmp(name, "vkCreateGraphicsPipelines"))
10302 {
10303 return (void*)entry_vkCreateGraphicsPipelines;
10304 }
10305 if (!strcmp(name, "vkCreateComputePipelines"))
10306 {
10307 return (void*)entry_vkCreateComputePipelines;
10308 }
10309 if (!strcmp(name, "vkDestroyPipeline"))
10310 {
10311 return (void*)entry_vkDestroyPipeline;
10312 }
10313 if (!strcmp(name, "vkCreatePipelineLayout"))
10314 {
10315 return (void*)entry_vkCreatePipelineLayout;
10316 }
10317 if (!strcmp(name, "vkDestroyPipelineLayout"))
10318 {
10319 return (void*)entry_vkDestroyPipelineLayout;
10320 }
10321 if (!strcmp(name, "vkCreateSampler"))
10322 {
10323 return (void*)entry_vkCreateSampler;
10324 }
10325 if (!strcmp(name, "vkDestroySampler"))
10326 {
10327 return (void*)entry_vkDestroySampler;
10328 }
10329 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
10330 {
10331 return (void*)entry_vkCreateDescriptorSetLayout;
10332 }
10333 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
10334 {
10335 return (void*)entry_vkDestroyDescriptorSetLayout;
10336 }
10337 if (!strcmp(name, "vkCreateDescriptorPool"))
10338 {
10339 return (void*)entry_vkCreateDescriptorPool;
10340 }
10341 if (!strcmp(name, "vkDestroyDescriptorPool"))
10342 {
10343 return (void*)entry_vkDestroyDescriptorPool;
10344 }
10345 if (!strcmp(name, "vkResetDescriptorPool"))
10346 {
10347 return (void*)entry_vkResetDescriptorPool;
10348 }
10349 if (!strcmp(name, "vkAllocateDescriptorSets"))
10350 {
10351 return (void*)entry_vkAllocateDescriptorSets;
10352 }
10353 if (!strcmp(name, "vkFreeDescriptorSets"))
10354 {
10355 return (void*)entry_vkFreeDescriptorSets;
10356 }
10357 if (!strcmp(name, "vkUpdateDescriptorSets"))
10358 {
10359 return (void*)entry_vkUpdateDescriptorSets;
10360 }
10361 if (!strcmp(name, "vkCreateFramebuffer"))
10362 {
10363 return (void*)entry_vkCreateFramebuffer;
10364 }
10365 if (!strcmp(name, "vkDestroyFramebuffer"))
10366 {
10367 return (void*)entry_vkDestroyFramebuffer;
10368 }
10369 if (!strcmp(name, "vkCreateRenderPass"))
10370 {
10371 return (void*)entry_vkCreateRenderPass;
10372 }
10373 if (!strcmp(name, "vkDestroyRenderPass"))
10374 {
10375 return (void*)entry_vkDestroyRenderPass;
10376 }
10377 if (!strcmp(name, "vkGetRenderAreaGranularity"))
10378 {
10379 return (void*)entry_vkGetRenderAreaGranularity;
10380 }
10381 if (!strcmp(name, "vkCreateCommandPool"))
10382 {
10383 return (void*)entry_vkCreateCommandPool;
10384 }
10385 if (!strcmp(name, "vkDestroyCommandPool"))
10386 {
10387 return (void*)entry_vkDestroyCommandPool;
10388 }
10389 if (!strcmp(name, "vkResetCommandPool"))
10390 {
10391 return (void*)entry_vkResetCommandPool;
10392 }
10393 if (!strcmp(name, "vkAllocateCommandBuffers"))
10394 {
10395 return (void*)entry_vkAllocateCommandBuffers;
10396 }
10397 if (!strcmp(name, "vkFreeCommandBuffers"))
10398 {
10399 return (void*)entry_vkFreeCommandBuffers;
10400 }
10401 if (!strcmp(name, "vkBeginCommandBuffer"))
10402 {
10403 return (void*)entry_vkBeginCommandBuffer;
10404 }
10405 if (!strcmp(name, "vkEndCommandBuffer"))
10406 {
10407 return (void*)entry_vkEndCommandBuffer;
10408 }
10409 if (!strcmp(name, "vkResetCommandBuffer"))
10410 {
10411 return (void*)entry_vkResetCommandBuffer;
10412 }
10413 if (!strcmp(name, "vkCmdBindPipeline"))
10414 {
10415 return (void*)entry_vkCmdBindPipeline;
10416 }
10417 if (!strcmp(name, "vkCmdSetViewport"))
10418 {
10419 return (void*)entry_vkCmdSetViewport;
10420 }
10421 if (!strcmp(name, "vkCmdSetScissor"))
10422 {
10423 return (void*)entry_vkCmdSetScissor;
10424 }
10425 if (!strcmp(name, "vkCmdSetLineWidth"))
10426 {
10427 return (void*)entry_vkCmdSetLineWidth;
10428 }
10429 if (!strcmp(name, "vkCmdSetDepthBias"))
10430 {
10431 return (void*)entry_vkCmdSetDepthBias;
10432 }
10433 if (!strcmp(name, "vkCmdSetBlendConstants"))
10434 {
10435 return (void*)entry_vkCmdSetBlendConstants;
10436 }
10437 if (!strcmp(name, "vkCmdSetDepthBounds"))
10438 {
10439 return (void*)entry_vkCmdSetDepthBounds;
10440 }
10441 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
10442 {
10443 return (void*)entry_vkCmdSetStencilCompareMask;
10444 }
10445 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
10446 {
10447 return (void*)entry_vkCmdSetStencilWriteMask;
10448 }
10449 if (!strcmp(name, "vkCmdSetStencilReference"))
10450 {
10451 return (void*)entry_vkCmdSetStencilReference;
10452 }
10453 if (!strcmp(name, "vkCmdBindDescriptorSets"))
10454 {
10455 return (void*)entry_vkCmdBindDescriptorSets;
10456 }
10457 if (!strcmp(name, "vkCmdBindIndexBuffer"))
10458 {
10459 return (void*)entry_vkCmdBindIndexBuffer;
10460 }
10461 if (!strcmp(name, "vkCmdBindVertexBuffers"))
10462 {
10463 return (void*)entry_vkCmdBindVertexBuffers;
10464 }
10465 if (!strcmp(name, "vkCmdDraw"))
10466 {
10467 return (void*)entry_vkCmdDraw;
10468 }
10469 if (!strcmp(name, "vkCmdDrawIndexed"))
10470 {
10471 return (void*)entry_vkCmdDrawIndexed;
10472 }
10473 if (!strcmp(name, "vkCmdDrawIndirect"))
10474 {
10475 return (void*)entry_vkCmdDrawIndirect;
10476 }
10477 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
10478 {
10479 return (void*)entry_vkCmdDrawIndexedIndirect;
10480 }
10481 if (!strcmp(name, "vkCmdDispatch"))
10482 {
10483 return (void*)entry_vkCmdDispatch;
10484 }
10485 if (!strcmp(name, "vkCmdDispatchIndirect"))
10486 {
10487 return (void*)entry_vkCmdDispatchIndirect;
10488 }
10489 if (!strcmp(name, "vkCmdCopyBuffer"))
10490 {
10491 return (void*)entry_vkCmdCopyBuffer;
10492 }
10493 if (!strcmp(name, "vkCmdCopyImage"))
10494 {
10495 return (void*)entry_vkCmdCopyImage;
10496 }
10497 if (!strcmp(name, "vkCmdBlitImage"))
10498 {
10499 return (void*)entry_vkCmdBlitImage;
10500 }
10501 if (!strcmp(name, "vkCmdCopyBufferToImage"))
10502 {
10503 return (void*)entry_vkCmdCopyBufferToImage;
10504 }
10505 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
10506 {
10507 return (void*)entry_vkCmdCopyImageToBuffer;
10508 }
10509 if (!strcmp(name, "vkCmdUpdateBuffer"))
10510 {
10511 return (void*)entry_vkCmdUpdateBuffer;
10512 }
10513 if (!strcmp(name, "vkCmdFillBuffer"))
10514 {
10515 return (void*)entry_vkCmdFillBuffer;
10516 }
10517 if (!strcmp(name, "vkCmdClearColorImage"))
10518 {
10519 return (void*)entry_vkCmdClearColorImage;
10520 }
10521 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
10522 {
10523 return (void*)entry_vkCmdClearDepthStencilImage;
10524 }
10525 if (!strcmp(name, "vkCmdClearAttachments"))
10526 {
10527 return (void*)entry_vkCmdClearAttachments;
10528 }
10529 if (!strcmp(name, "vkCmdResolveImage"))
10530 {
10531 return (void*)entry_vkCmdResolveImage;
10532 }
10533 if (!strcmp(name, "vkCmdSetEvent"))
10534 {
10535 return (void*)entry_vkCmdSetEvent;
10536 }
10537 if (!strcmp(name, "vkCmdResetEvent"))
10538 {
10539 return (void*)entry_vkCmdResetEvent;
10540 }
10541 if (!strcmp(name, "vkCmdWaitEvents"))
10542 {
10543 return (void*)entry_vkCmdWaitEvents;
10544 }
10545 if (!strcmp(name, "vkCmdPipelineBarrier"))
10546 {
10547 return (void*)entry_vkCmdPipelineBarrier;
10548 }
10549 if (!strcmp(name, "vkCmdBeginQuery"))
10550 {
10551 return (void*)entry_vkCmdBeginQuery;
10552 }
10553 if (!strcmp(name, "vkCmdEndQuery"))
10554 {
10555 return (void*)entry_vkCmdEndQuery;
10556 }
10557 if (!strcmp(name, "vkCmdResetQueryPool"))
10558 {
10559 return (void*)entry_vkCmdResetQueryPool;
10560 }
10561 if (!strcmp(name, "vkCmdWriteTimestamp"))
10562 {
10563 return (void*)entry_vkCmdWriteTimestamp;
10564 }
10565 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
10566 {
10567 return (void*)entry_vkCmdCopyQueryPoolResults;
10568 }
10569 if (!strcmp(name, "vkCmdPushConstants"))
10570 {
10571 return (void*)entry_vkCmdPushConstants;
10572 }
10573 if (!strcmp(name, "vkCmdBeginRenderPass"))
10574 {
10575 return (void*)entry_vkCmdBeginRenderPass;
10576 }
10577 if (!strcmp(name, "vkCmdNextSubpass"))
10578 {
10579 return (void*)entry_vkCmdNextSubpass;
10580 }
10581 if (!strcmp(name, "vkCmdEndRenderPass"))
10582 {
10583 return (void*)entry_vkCmdEndRenderPass;
10584 }
10585 if (!strcmp(name, "vkCmdExecuteCommands"))
10586 {
10587 return (void*)entry_vkCmdExecuteCommands;
10588 }
10589#endif
10590#ifdef VK_VERSION_1_1
10591 if (!strcmp(name, "vkEnumerateInstanceVersion"))
10592 {
10593 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
10594 }
10595 if (!strcmp(name, "vkBindBufferMemory2"))
10596 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010597 return (void*)dynCheck_entry_vkBindBufferMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010598 }
10599 if (!strcmp(name, "vkBindImageMemory2"))
10600 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010601 return (void*)dynCheck_entry_vkBindImageMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010602 }
10603 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
10604 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010605 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010606 }
10607 if (!strcmp(name, "vkCmdSetDeviceMask"))
10608 {
10609 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
10610 }
10611 if (!strcmp(name, "vkCmdDispatchBase"))
10612 {
10613 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
10614 }
10615 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
10616 {
10617 return nullptr;
10618 }
10619 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
10620 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010621 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010622 }
10623 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
10624 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010625 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010626 }
10627 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
10628 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010629 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010630 }
10631 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
10632 {
10633 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
10634 }
10635 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
10636 {
10637 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
10638 }
10639 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
10640 {
10641 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
10642 }
10643 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
10644 {
10645 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
10646 }
10647 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
10648 {
10649 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
10650 }
10651 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
10652 {
10653 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
10654 }
10655 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
10656 {
10657 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
10658 }
10659 if (!strcmp(name, "vkTrimCommandPool"))
10660 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010661 return (void*)dynCheck_entry_vkTrimCommandPool;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010662 }
10663 if (!strcmp(name, "vkGetDeviceQueue2"))
10664 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010665 return (void*)dynCheck_entry_vkGetDeviceQueue2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010666 }
10667 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
10668 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010669 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010670 }
10671 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
10672 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010673 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010674 }
10675 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
10676 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010677 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010678 }
10679 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
10680 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010681 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010682 }
10683 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
10684 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010685 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010686 }
10687 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
10688 {
10689 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
10690 }
10691 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
10692 {
10693 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
10694 }
10695 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
10696 {
10697 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
10698 }
10699 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
10700 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010701 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010702 }
10703#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010704#ifdef VK_VERSION_1_2
10705 if (!strcmp(name, "vkCmdDrawIndirectCount"))
10706 {
10707 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10708 return hasExt ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
10709 }
10710 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
10711 {
10712 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10713 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
10714 }
10715 if (!strcmp(name, "vkCreateRenderPass2"))
10716 {
10717 return (void*)dynCheck_entry_vkCreateRenderPass2;
10718 }
10719 if (!strcmp(name, "vkCmdBeginRenderPass2"))
10720 {
10721 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10722 return hasExt ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
10723 }
10724 if (!strcmp(name, "vkCmdNextSubpass2"))
10725 {
10726 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10727 return hasExt ? (void*)entry_vkCmdNextSubpass2 : nullptr;
10728 }
10729 if (!strcmp(name, "vkCmdEndRenderPass2"))
10730 {
10731 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10732 return hasExt ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
10733 }
10734 if (!strcmp(name, "vkResetQueryPool"))
10735 {
10736 return (void*)dynCheck_entry_vkResetQueryPool;
10737 }
10738 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
10739 {
10740 return (void*)dynCheck_entry_vkGetSemaphoreCounterValue;
10741 }
10742 if (!strcmp(name, "vkWaitSemaphores"))
10743 {
10744 return (void*)dynCheck_entry_vkWaitSemaphores;
10745 }
10746 if (!strcmp(name, "vkSignalSemaphore"))
10747 {
10748 return (void*)dynCheck_entry_vkSignalSemaphore;
10749 }
10750 if (!strcmp(name, "vkGetBufferDeviceAddress"))
10751 {
10752 return (void*)dynCheck_entry_vkGetBufferDeviceAddress;
10753 }
10754 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
10755 {
10756 return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddress;
10757 }
10758 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
10759 {
10760 return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress;
10761 }
10762#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010763#ifdef VK_KHR_surface
10764 if (!strcmp(name, "vkDestroySurfaceKHR"))
10765 {
10766 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10767 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
10768 }
10769 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
10770 {
10771 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10772 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
10773 }
10774 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
10775 {
10776 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10777 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
10778 }
10779 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
10780 {
10781 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10782 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
10783 }
10784 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
10785 {
10786 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10787 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
10788 }
10789#endif
10790#ifdef VK_KHR_swapchain
10791 if (!strcmp(name, "vkCreateSwapchainKHR"))
10792 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010793 return (void*)dynCheck_entry_vkCreateSwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010794 }
10795 if (!strcmp(name, "vkDestroySwapchainKHR"))
10796 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010797 return (void*)dynCheck_entry_vkDestroySwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010798 }
10799 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
10800 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010801 return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010802 }
10803 if (!strcmp(name, "vkAcquireNextImageKHR"))
10804 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010805 return (void*)dynCheck_entry_vkAcquireNextImageKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010806 }
10807 if (!strcmp(name, "vkQueuePresentKHR"))
10808 {
10809 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
10810 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
10811 }
10812 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
10813 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010814 return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010815 }
10816 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
10817 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010818 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010819 }
10820 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
10821 {
10822 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
10823 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
10824 }
10825 if (!strcmp(name, "vkAcquireNextImage2KHR"))
10826 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010827 return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010828 }
10829#endif
10830#ifdef VK_KHR_display
10831 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
10832 {
10833 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10834 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
10835 }
10836 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
10837 {
10838 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10839 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
10840 }
10841 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
10842 {
10843 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10844 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
10845 }
10846 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
10847 {
10848 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10849 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
10850 }
10851 if (!strcmp(name, "vkCreateDisplayModeKHR"))
10852 {
10853 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10854 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
10855 }
10856 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
10857 {
10858 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10859 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
10860 }
10861 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
10862 {
10863 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10864 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
10865 }
10866#endif
10867#ifdef VK_KHR_display_swapchain
10868 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
10869 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010870 return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010871 }
10872#endif
10873#ifdef VK_KHR_xlib_surface
10874 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
10875 {
10876 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
10877 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
10878 }
10879 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
10880 {
10881 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
10882 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
10883 }
10884#endif
10885#ifdef VK_KHR_xcb_surface
10886 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
10887 {
10888 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
10889 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
10890 }
10891 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
10892 {
10893 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
10894 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
10895 }
10896#endif
10897#ifdef VK_KHR_wayland_surface
10898 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
10899 {
10900 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
10901 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
10902 }
10903 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
10904 {
10905 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
10906 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
10907 }
10908#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010909#ifdef VK_KHR_android_surface
10910 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
10911 {
10912 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
10913 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
10914 }
10915#endif
10916#ifdef VK_KHR_win32_surface
10917 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
10918 {
10919 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
10920 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
10921 }
10922 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
10923 {
10924 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
10925 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
10926 }
10927#endif
10928#ifdef VK_KHR_get_physical_device_properties2
10929 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
10930 {
10931 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10932 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
10933 }
10934 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
10935 {
10936 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10937 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
10938 }
10939 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
10940 {
10941 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10942 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
10943 }
10944 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
10945 {
10946 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10947 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
10948 }
10949 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
10950 {
10951 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10952 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
10953 }
10954 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
10955 {
10956 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10957 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
10958 }
10959 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
10960 {
10961 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10962 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
10963 }
10964#endif
10965#ifdef VK_KHR_device_group
10966 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
10967 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010968 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010969 }
10970 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
10971 {
10972 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
10973 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
10974 }
10975 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
10976 {
10977 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
10978 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
10979 }
10980#endif
10981#ifdef VK_KHR_maintenance1
10982 if (!strcmp(name, "vkTrimCommandPoolKHR"))
10983 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010984 return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010985 }
10986#endif
10987#ifdef VK_KHR_device_group_creation
10988 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
10989 {
10990 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
10991 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
10992 }
10993#endif
10994#ifdef VK_KHR_external_memory_capabilities
10995 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
10996 {
10997 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
10998 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
10999 }
11000#endif
11001#ifdef VK_KHR_external_memory_win32
11002 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
11003 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011004 return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011005 }
11006 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
11007 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011008 return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011009 }
11010#endif
11011#ifdef VK_KHR_external_memory_fd
11012 if (!strcmp(name, "vkGetMemoryFdKHR"))
11013 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011014 return (void*)dynCheck_entry_vkGetMemoryFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011015 }
11016 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
11017 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011018 return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011019 }
11020#endif
11021#ifdef VK_KHR_external_semaphore_capabilities
11022 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
11023 {
11024 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
11025 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
11026 }
11027#endif
11028#ifdef VK_KHR_external_semaphore_win32
11029 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
11030 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011031 return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011032 }
11033 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
11034 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011035 return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011036 }
11037#endif
11038#ifdef VK_KHR_external_semaphore_fd
11039 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
11040 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011041 return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011042 }
11043 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
11044 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011045 return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011046 }
11047#endif
11048#ifdef VK_KHR_push_descriptor
11049 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
11050 {
11051 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
11052 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
11053 }
11054 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
11055 {
11056 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
11057 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
11058 }
11059#endif
11060#ifdef VK_KHR_descriptor_update_template
11061 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
11062 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011063 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011064 }
11065 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
11066 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011067 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011068 }
11069 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
11070 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011071 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011072 }
11073#endif
11074#ifdef VK_KHR_create_renderpass2
11075 if (!strcmp(name, "vkCreateRenderPass2KHR"))
11076 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011077 return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011078 }
11079 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
11080 {
11081 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
11082 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
11083 }
11084 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
11085 {
11086 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
11087 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
11088 }
11089 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
11090 {
11091 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
11092 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
11093 }
11094#endif
11095#ifdef VK_KHR_shared_presentable_image
11096 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
11097 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011098 return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011099 }
11100#endif
11101#ifdef VK_KHR_external_fence_capabilities
11102 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
11103 {
11104 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
11105 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
11106 }
11107#endif
11108#ifdef VK_KHR_external_fence_win32
11109 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
11110 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011111 return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011112 }
11113 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
11114 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011115 return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011116 }
11117#endif
11118#ifdef VK_KHR_external_fence_fd
11119 if (!strcmp(name, "vkImportFenceFdKHR"))
11120 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011121 return (void*)dynCheck_entry_vkImportFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011122 }
11123 if (!strcmp(name, "vkGetFenceFdKHR"))
11124 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011125 return (void*)dynCheck_entry_vkGetFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011126 }
11127#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011128#ifdef VK_KHR_performance_query
11129 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
11130 {
11131 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
11132 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
11133 }
11134 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
11135 {
11136 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
11137 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
11138 }
11139 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
11140 {
11141 return (void*)dynCheck_entry_vkAcquireProfilingLockKHR;
11142 }
11143 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
11144 {
11145 return (void*)dynCheck_entry_vkReleaseProfilingLockKHR;
11146 }
11147#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011148#ifdef VK_KHR_get_surface_capabilities2
11149 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
11150 {
11151 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
11152 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
11153 }
11154 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
11155 {
11156 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
11157 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
11158 }
11159#endif
11160#ifdef VK_KHR_get_display_properties2
11161 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
11162 {
11163 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11164 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
11165 }
11166 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
11167 {
11168 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11169 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
11170 }
11171 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
11172 {
11173 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11174 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
11175 }
11176 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
11177 {
11178 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11179 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
11180 }
11181#endif
11182#ifdef VK_KHR_get_memory_requirements2
11183 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
11184 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011185 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011186 }
11187 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
11188 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011189 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011190 }
11191 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
11192 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011193 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011194 }
11195#endif
11196#ifdef VK_KHR_sampler_ycbcr_conversion
11197 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
11198 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011199 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011200 }
11201 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
11202 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011203 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011204 }
11205#endif
11206#ifdef VK_KHR_bind_memory2
11207 if (!strcmp(name, "vkBindBufferMemory2KHR"))
11208 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011209 return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011210 }
11211 if (!strcmp(name, "vkBindImageMemory2KHR"))
11212 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011213 return (void*)dynCheck_entry_vkBindImageMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011214 }
11215#endif
11216#ifdef VK_KHR_maintenance3
11217 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
11218 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011219 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011220 }
11221#endif
11222#ifdef VK_KHR_draw_indirect_count
11223 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
11224 {
11225 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
11226 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
11227 }
11228 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
11229 {
11230 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
11231 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
11232 }
11233#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011234#ifdef VK_KHR_timeline_semaphore
11235 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
11236 {
11237 return (void*)dynCheck_entry_vkGetSemaphoreCounterValueKHR;
11238 }
11239 if (!strcmp(name, "vkWaitSemaphoresKHR"))
11240 {
11241 return (void*)dynCheck_entry_vkWaitSemaphoresKHR;
11242 }
11243 if (!strcmp(name, "vkSignalSemaphoreKHR"))
11244 {
11245 return (void*)dynCheck_entry_vkSignalSemaphoreKHR;
11246 }
11247#endif
11248#ifdef VK_KHR_fragment_shading_rate
11249 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
11250 {
11251 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_fragment_shading_rate");
11252 return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
11253 }
11254 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
11255 {
11256 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_fragment_shading_rate");
11257 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateKHR : nullptr;
11258 }
11259#endif
11260#ifdef VK_KHR_buffer_device_address
11261 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
11262 {
11263 return (void*)dynCheck_entry_vkGetBufferDeviceAddressKHR;
11264 }
11265 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
11266 {
11267 return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR;
11268 }
11269 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
11270 {
11271 return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR;
11272 }
11273#endif
11274#ifdef VK_KHR_deferred_host_operations
11275 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
11276 {
11277 return (void*)dynCheck_entry_vkCreateDeferredOperationKHR;
11278 }
11279 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
11280 {
11281 return (void*)dynCheck_entry_vkDestroyDeferredOperationKHR;
11282 }
11283 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
11284 {
11285 return (void*)dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR;
11286 }
11287 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
11288 {
11289 return (void*)dynCheck_entry_vkGetDeferredOperationResultKHR;
11290 }
11291 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
11292 {
11293 return (void*)dynCheck_entry_vkDeferredOperationJoinKHR;
11294 }
11295#endif
11296#ifdef VK_KHR_pipeline_executable_properties
11297 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
11298 {
11299 return (void*)dynCheck_entry_vkGetPipelineExecutablePropertiesKHR;
11300 }
11301 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
11302 {
11303 return (void*)dynCheck_entry_vkGetPipelineExecutableStatisticsKHR;
11304 }
11305 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
11306 {
11307 return (void*)dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR;
11308 }
11309#endif
11310#ifdef VK_KHR_copy_commands2
11311 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
11312 {
11313 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11314 return hasExt ? (void*)entry_vkCmdCopyBuffer2KHR : nullptr;
11315 }
11316 if (!strcmp(name, "vkCmdCopyImage2KHR"))
11317 {
11318 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11319 return hasExt ? (void*)entry_vkCmdCopyImage2KHR : nullptr;
11320 }
11321 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
11322 {
11323 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11324 return hasExt ? (void*)entry_vkCmdCopyBufferToImage2KHR : nullptr;
11325 }
11326 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
11327 {
11328 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11329 return hasExt ? (void*)entry_vkCmdCopyImageToBuffer2KHR : nullptr;
11330 }
11331 if (!strcmp(name, "vkCmdBlitImage2KHR"))
11332 {
11333 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11334 return hasExt ? (void*)entry_vkCmdBlitImage2KHR : nullptr;
11335 }
11336 if (!strcmp(name, "vkCmdResolveImage2KHR"))
11337 {
11338 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11339 return hasExt ? (void*)entry_vkCmdResolveImage2KHR : nullptr;
11340 }
11341#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011342#ifdef VK_ANDROID_native_buffer
11343 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
11344 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011345 return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011346 }
11347 if (!strcmp(name, "vkAcquireImageANDROID"))
11348 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011349 return (void*)dynCheck_entry_vkAcquireImageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011350 }
11351 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
11352 {
11353 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
11354 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
11355 }
11356#endif
11357#ifdef VK_EXT_debug_report
11358 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
11359 {
11360 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
11361 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
11362 }
11363 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
11364 {
11365 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
11366 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
11367 }
11368 if (!strcmp(name, "vkDebugReportMessageEXT"))
11369 {
11370 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
11371 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
11372 }
11373#endif
11374#ifdef VK_EXT_debug_marker
11375 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
11376 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011377 return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011378 }
11379 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
11380 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011381 return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011382 }
11383 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
11384 {
11385 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
11386 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
11387 }
11388 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
11389 {
11390 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
11391 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
11392 }
11393 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
11394 {
11395 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
11396 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
11397 }
11398#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011399#ifdef VK_EXT_transform_feedback
11400 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
11401 {
11402 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11403 return hasExt ? (void*)entry_vkCmdBindTransformFeedbackBuffersEXT : nullptr;
11404 }
11405 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
11406 {
11407 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11408 return hasExt ? (void*)entry_vkCmdBeginTransformFeedbackEXT : nullptr;
11409 }
11410 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
11411 {
11412 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11413 return hasExt ? (void*)entry_vkCmdEndTransformFeedbackEXT : nullptr;
11414 }
11415 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
11416 {
11417 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11418 return hasExt ? (void*)entry_vkCmdBeginQueryIndexedEXT : nullptr;
11419 }
11420 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
11421 {
11422 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11423 return hasExt ? (void*)entry_vkCmdEndQueryIndexedEXT : nullptr;
11424 }
11425 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
11426 {
11427 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11428 return hasExt ? (void*)entry_vkCmdDrawIndirectByteCountEXT : nullptr;
11429 }
11430#endif
11431#ifdef VK_NVX_image_view_handle
11432 if (!strcmp(name, "vkGetImageViewHandleNVX"))
11433 {
11434 return (void*)dynCheck_entry_vkGetImageViewHandleNVX;
11435 }
11436 if (!strcmp(name, "vkGetImageViewAddressNVX"))
11437 {
11438 return (void*)dynCheck_entry_vkGetImageViewAddressNVX;
11439 }
11440#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011441#ifdef VK_AMD_draw_indirect_count
11442 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
11443 {
11444 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
11445 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
11446 }
11447 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
11448 {
11449 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
11450 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
11451 }
11452#endif
11453#ifdef VK_AMD_shader_info
11454 if (!strcmp(name, "vkGetShaderInfoAMD"))
11455 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011456 return (void*)dynCheck_entry_vkGetShaderInfoAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011457 }
11458#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011459#ifdef VK_GGP_stream_descriptor_surface
11460 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
11461 {
11462 bool hasExt = resources->hasInstanceExtension(instance, "VK_GGP_stream_descriptor_surface");
11463 return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
11464 }
11465#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011466#ifdef VK_NV_external_memory_capabilities
11467 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
11468 {
11469 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
11470 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
11471 }
11472#endif
11473#ifdef VK_NV_external_memory_win32
11474 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
11475 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011476 return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011477 }
11478#endif
11479#ifdef VK_NN_vi_surface
11480 if (!strcmp(name, "vkCreateViSurfaceNN"))
11481 {
11482 bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
11483 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
11484 }
11485#endif
11486#ifdef VK_EXT_conditional_rendering
11487 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
11488 {
11489 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
11490 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
11491 }
11492 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
11493 {
11494 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
11495 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
11496 }
11497#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011498#ifdef VK_NV_clip_space_w_scaling
11499 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
11500 {
11501 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling");
11502 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
11503 }
11504#endif
11505#ifdef VK_EXT_direct_mode_display
11506 if (!strcmp(name, "vkReleaseDisplayEXT"))
11507 {
11508 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
11509 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
11510 }
11511#endif
11512#ifdef VK_EXT_acquire_xlib_display
11513 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
11514 {
11515 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
11516 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
11517 }
11518 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
11519 {
11520 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
11521 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
11522 }
11523#endif
11524#ifdef VK_EXT_display_surface_counter
11525 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
11526 {
11527 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
11528 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
11529 }
11530#endif
11531#ifdef VK_EXT_display_control
11532 if (!strcmp(name, "vkDisplayPowerControlEXT"))
11533 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011534 return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011535 }
11536 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
11537 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011538 return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011539 }
11540 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
11541 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011542 return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011543 }
11544 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
11545 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011546 return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011547 }
11548#endif
11549#ifdef VK_GOOGLE_display_timing
11550 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
11551 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011552 return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011553 }
11554 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
11555 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011556 return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011557 }
11558#endif
11559#ifdef VK_EXT_discard_rectangles
11560 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
11561 {
11562 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles");
11563 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
11564 }
11565#endif
11566#ifdef VK_EXT_hdr_metadata
11567 if (!strcmp(name, "vkSetHdrMetadataEXT"))
11568 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011569 return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011570 }
11571#endif
11572#ifdef VK_MVK_ios_surface
11573 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
11574 {
11575 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
11576 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
11577 }
11578#endif
11579#ifdef VK_MVK_macos_surface
11580 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
11581 {
11582 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
11583 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
11584 }
11585#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011586#ifdef VK_MVK_moltenvk
11587 if (!strcmp(name, "vkGetMTLDeviceMVK"))
11588 {
11589 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11590 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
11591 }
11592 if (!strcmp(name, "vkSetMTLTextureMVK"))
11593 {
11594 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11595 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
11596 }
11597 if (!strcmp(name, "vkGetMTLTextureMVK"))
11598 {
11599 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11600 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
11601 }
11602 if (!strcmp(name, "vkGetMTLBufferMVK"))
11603 {
11604 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11605 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
11606 }
11607 if (!strcmp(name, "vkUseIOSurfaceMVK"))
11608 {
11609 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11610 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
11611 }
11612 if (!strcmp(name, "vkGetIOSurfaceMVK"))
11613 {
11614 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11615 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
11616 }
11617#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011618#ifdef VK_EXT_debug_utils
11619 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
11620 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011621 return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011622 }
11623 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
11624 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011625 return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011626 }
11627 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
11628 {
11629 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11630 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
11631 }
11632 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
11633 {
11634 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11635 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
11636 }
11637 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
11638 {
11639 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11640 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
11641 }
11642 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
11643 {
11644 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11645 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
11646 }
11647 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
11648 {
11649 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11650 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
11651 }
11652 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
11653 {
11654 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11655 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
11656 }
11657 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
11658 {
11659 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11660 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
11661 }
11662 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
11663 {
11664 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11665 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
11666 }
11667 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
11668 {
11669 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11670 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
11671 }
11672#endif
11673#ifdef VK_ANDROID_external_memory_android_hardware_buffer
11674 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
11675 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011676 return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011677 }
11678 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
11679 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011680 return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011681 }
11682#endif
11683#ifdef VK_EXT_sample_locations
11684 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
11685 {
11686 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
11687 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
11688 }
11689 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
11690 {
11691 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
11692 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
11693 }
11694#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011695#ifdef VK_EXT_image_drm_format_modifier
11696 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
11697 {
11698 return (void*)dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT;
11699 }
11700#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011701#ifdef VK_EXT_validation_cache
11702 if (!strcmp(name, "vkCreateValidationCacheEXT"))
11703 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011704 return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011705 }
11706 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
11707 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011708 return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011709 }
11710 if (!strcmp(name, "vkMergeValidationCachesEXT"))
11711 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011712 return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011713 }
11714 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
11715 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011716 return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011717 }
11718#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011719#ifdef VK_NV_shading_rate_image
11720 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
11721 {
11722 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
11723 return hasExt ? (void*)entry_vkCmdBindShadingRateImageNV : nullptr;
11724 }
11725 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
11726 {
11727 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
11728 return hasExt ? (void*)entry_vkCmdSetViewportShadingRatePaletteNV : nullptr;
11729 }
11730 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
11731 {
11732 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
11733 return hasExt ? (void*)entry_vkCmdSetCoarseSampleOrderNV : nullptr;
11734 }
11735#endif
11736#ifdef VK_NV_ray_tracing
11737 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
11738 {
11739 return (void*)dynCheck_entry_vkCreateAccelerationStructureNV;
11740 }
11741 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
11742 {
11743 return (void*)dynCheck_entry_vkDestroyAccelerationStructureNV;
11744 }
11745 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
11746 {
11747 return (void*)dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV;
11748 }
11749 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
11750 {
11751 return (void*)dynCheck_entry_vkBindAccelerationStructureMemoryNV;
11752 }
11753 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
11754 {
11755 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11756 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructureNV : nullptr;
11757 }
11758 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
11759 {
11760 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11761 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureNV : nullptr;
11762 }
11763 if (!strcmp(name, "vkCmdTraceRaysNV"))
11764 {
11765 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11766 return hasExt ? (void*)entry_vkCmdTraceRaysNV : nullptr;
11767 }
11768 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
11769 {
11770 return (void*)dynCheck_entry_vkCreateRayTracingPipelinesNV;
11771 }
11772 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
11773 {
11774 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR;
11775 }
11776 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
11777 {
11778 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV;
11779 }
11780 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
11781 {
11782 return (void*)dynCheck_entry_vkGetAccelerationStructureHandleNV;
11783 }
11784 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
11785 {
11786 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11787 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesNV : nullptr;
11788 }
11789 if (!strcmp(name, "vkCompileDeferredNV"))
11790 {
11791 return (void*)dynCheck_entry_vkCompileDeferredNV;
11792 }
11793#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011794#ifdef VK_EXT_external_memory_host
11795 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
11796 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011797 return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011798 }
11799#endif
11800#ifdef VK_AMD_buffer_marker
11801 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
11802 {
11803 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker");
11804 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
11805 }
11806#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011807#ifdef VK_EXT_calibrated_timestamps
11808 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
11809 {
11810 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_calibrated_timestamps");
11811 return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
11812 }
11813 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
11814 {
11815 return (void*)dynCheck_entry_vkGetCalibratedTimestampsEXT;
11816 }
11817#endif
11818#ifdef VK_NV_mesh_shader
11819 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
11820 {
11821 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
11822 return hasExt ? (void*)entry_vkCmdDrawMeshTasksNV : nullptr;
11823 }
11824 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
11825 {
11826 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
11827 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectNV : nullptr;
11828 }
11829 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
11830 {
11831 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
11832 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountNV : nullptr;
11833 }
11834#endif
11835#ifdef VK_NV_scissor_exclusive
11836 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
11837 {
11838 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_scissor_exclusive");
11839 return hasExt ? (void*)entry_vkCmdSetExclusiveScissorNV : nullptr;
11840 }
11841#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011842#ifdef VK_NV_device_diagnostic_checkpoints
11843 if (!strcmp(name, "vkCmdSetCheckpointNV"))
11844 {
11845 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
11846 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
11847 }
11848 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
11849 {
11850 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
11851 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
11852 }
11853#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011854#ifdef VK_INTEL_performance_query
11855 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011856 {
Yilong Lia8d45f12021-02-07 02:30:21 -080011857 return (void*)dynCheck_entry_vkInitializePerformanceApiINTEL;
11858 }
11859 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
11860 {
11861 return (void*)dynCheck_entry_vkUninitializePerformanceApiINTEL;
11862 }
11863 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
11864 {
11865 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11866 return hasExt ? (void*)entry_vkCmdSetPerformanceMarkerINTEL : nullptr;
11867 }
11868 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
11869 {
11870 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11871 return hasExt ? (void*)entry_vkCmdSetPerformanceStreamMarkerINTEL : nullptr;
11872 }
11873 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
11874 {
11875 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11876 return hasExt ? (void*)entry_vkCmdSetPerformanceOverrideINTEL : nullptr;
11877 }
11878 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
11879 {
11880 return (void*)dynCheck_entry_vkAcquirePerformanceConfigurationINTEL;
11881 }
11882 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
11883 {
11884 return (void*)dynCheck_entry_vkReleasePerformanceConfigurationINTEL;
11885 }
11886 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
11887 {
11888 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11889 return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
11890 }
11891 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
11892 {
11893 return (void*)dynCheck_entry_vkGetPerformanceParameterINTEL;
11894 }
11895#endif
11896#ifdef VK_AMD_display_native_hdr
11897 if (!strcmp(name, "vkSetLocalDimmingAMD"))
11898 {
11899 return (void*)dynCheck_entry_vkSetLocalDimmingAMD;
11900 }
11901#endif
11902#ifdef VK_FUCHSIA_imagepipe_surface
11903 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
11904 {
11905 bool hasExt = resources->hasInstanceExtension(instance, "VK_FUCHSIA_imagepipe_surface");
11906 return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
11907 }
11908#endif
11909#ifdef VK_EXT_metal_surface
11910 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
11911 {
11912 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_metal_surface");
11913 return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011914 }
11915#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011916#ifdef VK_EXT_buffer_device_address
11917 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
11918 {
11919 return (void*)dynCheck_entry_vkGetBufferDeviceAddressEXT;
11920 }
11921#endif
11922#ifdef VK_EXT_tooling_info
11923 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
11924 {
11925 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_tooling_info");
11926 return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
11927 }
11928#endif
11929#ifdef VK_NV_cooperative_matrix
11930 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
11931 {
11932 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_cooperative_matrix");
11933 return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
11934 }
11935#endif
11936#ifdef VK_NV_coverage_reduction_mode
11937 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
11938 {
11939 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_coverage_reduction_mode");
11940 return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
11941 }
11942#endif
11943#ifdef VK_EXT_full_screen_exclusive
11944 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
11945 {
11946 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_full_screen_exclusive");
11947 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
11948 }
11949 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
11950 {
11951 return (void*)dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT;
11952 }
11953 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
11954 {
11955 return (void*)dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT;
11956 }
11957 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
11958 {
11959 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT;
11960 }
11961#endif
11962#ifdef VK_EXT_headless_surface
11963 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
11964 {
11965 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_headless_surface");
11966 return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
11967 }
11968#endif
11969#ifdef VK_EXT_line_rasterization
11970 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
11971 {
11972 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_line_rasterization");
11973 return hasExt ? (void*)entry_vkCmdSetLineStippleEXT : nullptr;
11974 }
11975#endif
11976#ifdef VK_EXT_host_query_reset
11977 if (!strcmp(name, "vkResetQueryPoolEXT"))
11978 {
11979 return (void*)dynCheck_entry_vkResetQueryPoolEXT;
11980 }
11981#endif
11982#ifdef VK_EXT_extended_dynamic_state
11983 if (!strcmp(name, "vkCmdSetCullModeEXT"))
11984 {
11985 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11986 return hasExt ? (void*)entry_vkCmdSetCullModeEXT : nullptr;
11987 }
11988 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
11989 {
11990 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11991 return hasExt ? (void*)entry_vkCmdSetFrontFaceEXT : nullptr;
11992 }
11993 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
11994 {
11995 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11996 return hasExt ? (void*)entry_vkCmdSetPrimitiveTopologyEXT : nullptr;
11997 }
11998 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
11999 {
12000 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12001 return hasExt ? (void*)entry_vkCmdSetViewportWithCountEXT : nullptr;
12002 }
12003 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
12004 {
12005 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12006 return hasExt ? (void*)entry_vkCmdSetScissorWithCountEXT : nullptr;
12007 }
12008 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
12009 {
12010 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12011 return hasExt ? (void*)entry_vkCmdBindVertexBuffers2EXT : nullptr;
12012 }
12013 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
12014 {
12015 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12016 return hasExt ? (void*)entry_vkCmdSetDepthTestEnableEXT : nullptr;
12017 }
12018 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
12019 {
12020 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12021 return hasExt ? (void*)entry_vkCmdSetDepthWriteEnableEXT : nullptr;
12022 }
12023 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
12024 {
12025 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12026 return hasExt ? (void*)entry_vkCmdSetDepthCompareOpEXT : nullptr;
12027 }
12028 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
12029 {
12030 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12031 return hasExt ? (void*)entry_vkCmdSetDepthBoundsTestEnableEXT : nullptr;
12032 }
12033 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
12034 {
12035 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12036 return hasExt ? (void*)entry_vkCmdSetStencilTestEnableEXT : nullptr;
12037 }
12038 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
12039 {
12040 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12041 return hasExt ? (void*)entry_vkCmdSetStencilOpEXT : nullptr;
12042 }
12043#endif
12044#ifdef VK_NV_device_generated_commands
12045 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
12046 {
12047 return (void*)dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV;
12048 }
12049 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
12050 {
12051 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
12052 return hasExt ? (void*)entry_vkCmdPreprocessGeneratedCommandsNV : nullptr;
12053 }
12054 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
12055 {
12056 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
12057 return hasExt ? (void*)entry_vkCmdExecuteGeneratedCommandsNV : nullptr;
12058 }
12059 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
12060 {
12061 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
12062 return hasExt ? (void*)entry_vkCmdBindPipelineShaderGroupNV : nullptr;
12063 }
12064 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
12065 {
12066 return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNV;
12067 }
12068 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
12069 {
12070 return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNV;
12071 }
12072#endif
12073#ifdef VK_EXT_private_data
12074 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
12075 {
12076 return (void*)dynCheck_entry_vkCreatePrivateDataSlotEXT;
12077 }
12078 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
12079 {
12080 return (void*)dynCheck_entry_vkDestroyPrivateDataSlotEXT;
12081 }
12082 if (!strcmp(name, "vkSetPrivateDataEXT"))
12083 {
12084 return (void*)dynCheck_entry_vkSetPrivateDataEXT;
12085 }
12086 if (!strcmp(name, "vkGetPrivateDataEXT"))
12087 {
12088 return (void*)dynCheck_entry_vkGetPrivateDataEXT;
12089 }
12090#endif
12091#ifdef VK_NV_fragment_shading_rate_enums
12092 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
12093 {
12094 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_fragment_shading_rate_enums");
12095 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateEnumNV : nullptr;
12096 }
12097#endif
12098#ifdef VK_EXT_directfb_surface
12099 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
12100 {
12101 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
12102 return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
12103 }
12104 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
12105 {
12106 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
12107 return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
12108 }
12109#endif
Yilong Li71c43c52021-02-10 02:50:43 -080012110#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -070012111 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
12112 {
12113 return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
12114 }
12115 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
12116 {
12117 return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
12118 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012119 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
12120 {
12121 return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
12122 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070012123 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
12124 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012125 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070012126 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012127 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
12128 {
Yilong Li71c43c52021-02-10 02:50:43 -080012129 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012130 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
12131 }
12132 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
12133 {
Yilong Li71c43c52021-02-10 02:50:43 -080012134 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012135 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
12136 }
12137 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
12138 {
Yilong Li71c43c52021-02-10 02:50:43 -080012139 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012140 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
12141 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070012142 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
12143 {
Yilong Li71c43c52021-02-10 02:50:43 -080012144 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yang39a276e2019-06-17 13:27:22 -070012145 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
12146 }
Lingfeng Yang87f11962019-06-27 16:28:53 +000012147 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
12148 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012149 return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +000012150 }
12151 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
12152 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012153 return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +000012154 }
Lingfeng Yang4c542412020-02-04 18:18:32 -080012155 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
12156 {
12157 return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE;
12158 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070012159 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
12160 {
12161 return (void*)dynCheck_entry_vkFreeMemorySyncGOOGLE;
12162 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012163 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
12164 {
Yilong Li71c43c52021-02-10 02:50:43 -080012165 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012166 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
12167 }
12168 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
12169 {
Yilong Li71c43c52021-02-10 02:50:43 -080012170 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012171 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
12172 }
12173 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
12174 {
Yilong Li71c43c52021-02-10 02:50:43 -080012175 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012176 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
12177 }
12178 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
12179 {
Yilong Li71c43c52021-02-10 02:50:43 -080012180 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012181 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
12182 }
Yilong Lia48b0102020-09-15 15:08:28 -070012183 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
12184 {
12185 return (void*)dynCheck_entry_vkGetLinearImageLayoutGOOGLE;
12186 }
Lingfeng Yangded34672021-01-22 23:17:47 -080012187 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
12188 {
Yilong Li71c43c52021-02-10 02:50:43 -080012189 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangded34672021-01-22 23:17:47 -080012190 return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
12191 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080012192 if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
12193 {
12194 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
12195 return hasExt ? (void*)entry_vkQueueCommitDescriptorSetUpdatesGOOGLE : nullptr;
12196 }
12197 if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
12198 {
12199 return (void*)dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE;
12200 }
Lingfeng Yang5678e1e2021-07-15 12:28:05 -070012201 if (!strcmp(name, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE"))
12202 {
12203 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
12204 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE : nullptr;
12205 }
Lingfeng Yangded34672021-01-22 23:17:47 -080012206#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012207#ifdef VK_KHR_acceleration_structure
12208 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
12209 {
12210 return (void*)dynCheck_entry_vkCreateAccelerationStructureKHR;
12211 }
12212 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
12213 {
12214 return (void*)dynCheck_entry_vkDestroyAccelerationStructureKHR;
12215 }
12216 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
12217 {
12218 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12219 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresKHR : nullptr;
12220 }
12221 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
12222 {
12223 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12224 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresIndirectKHR : nullptr;
12225 }
12226 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
12227 {
12228 return (void*)dynCheck_entry_vkBuildAccelerationStructuresKHR;
12229 }
12230 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
12231 {
12232 return (void*)dynCheck_entry_vkCopyAccelerationStructureKHR;
12233 }
12234 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
12235 {
12236 return (void*)dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR;
12237 }
12238 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
12239 {
12240 return (void*)dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR;
12241 }
12242 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
12243 {
12244 return (void*)dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR;
12245 }
12246 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
12247 {
12248 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12249 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureKHR : nullptr;
12250 }
12251 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
12252 {
12253 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12254 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureToMemoryKHR : nullptr;
12255 }
12256 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
12257 {
12258 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12259 return hasExt ? (void*)entry_vkCmdCopyMemoryToAccelerationStructureKHR : nullptr;
12260 }
12261 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
12262 {
12263 return (void*)dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR;
12264 }
12265 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
12266 {
12267 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12268 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesKHR : nullptr;
12269 }
12270 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
12271 {
12272 return (void*)dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR;
12273 }
12274 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
12275 {
12276 return (void*)dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR;
12277 }
12278#endif
12279#ifdef VK_KHR_ray_tracing_pipeline
12280 if (!strcmp(name, "vkCmdTraceRaysKHR"))
12281 {
12282 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
12283 return hasExt ? (void*)entry_vkCmdTraceRaysKHR : nullptr;
12284 }
12285 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
12286 {
12287 return (void*)dynCheck_entry_vkCreateRayTracingPipelinesKHR;
12288 }
12289 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
12290 {
12291 return (void*)dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR;
12292 }
12293 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
12294 {
12295 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
12296 return hasExt ? (void*)entry_vkCmdTraceRaysIndirectKHR : nullptr;
12297 }
12298 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
12299 {
12300 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR;
12301 }
12302 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
12303 {
12304 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
12305 return hasExt ? (void*)entry_vkCmdSetRayTracingPipelineStackSizeKHR : nullptr;
12306 }
12307#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012308 return nullptr;
12309}
12310void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
12311 auto resources = ResourceTracker::get();
12312 bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
12313#ifdef VK_VERSION_1_0
12314 if (!strcmp(name, "vkCreateInstance"))
12315 {
12316 return (void*)entry_vkCreateInstance;
12317 }
12318 if (!strcmp(name, "vkDestroyInstance"))
12319 {
12320 return (void*)entry_vkDestroyInstance;
12321 }
12322 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
12323 {
12324 return (void*)entry_vkEnumeratePhysicalDevices;
12325 }
12326 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
12327 {
12328 return (void*)entry_vkGetPhysicalDeviceFeatures;
12329 }
12330 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
12331 {
12332 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
12333 }
12334 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
12335 {
12336 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
12337 }
12338 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
12339 {
12340 return (void*)entry_vkGetPhysicalDeviceProperties;
12341 }
12342 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
12343 {
12344 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
12345 }
12346 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
12347 {
12348 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
12349 }
12350 if (!strcmp(name, "vkGetInstanceProcAddr"))
12351 {
12352 return (void*)entry_vkGetInstanceProcAddr;
12353 }
12354 if (!strcmp(name, "vkGetDeviceProcAddr"))
12355 {
12356 return (void*)entry_vkGetDeviceProcAddr;
12357 }
12358 if (!strcmp(name, "vkCreateDevice"))
12359 {
12360 return (void*)entry_vkCreateDevice;
12361 }
12362 if (!strcmp(name, "vkDestroyDevice"))
12363 {
12364 return (void*)entry_vkDestroyDevice;
12365 }
12366 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
12367 {
12368 return (void*)entry_vkEnumerateInstanceExtensionProperties;
12369 }
12370 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
12371 {
12372 return (void*)entry_vkEnumerateDeviceExtensionProperties;
12373 }
12374 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
12375 {
12376 return (void*)entry_vkEnumerateInstanceLayerProperties;
12377 }
12378 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
12379 {
12380 return (void*)entry_vkEnumerateDeviceLayerProperties;
12381 }
12382 if (!strcmp(name, "vkGetDeviceQueue"))
12383 {
12384 return (void*)entry_vkGetDeviceQueue;
12385 }
12386 if (!strcmp(name, "vkQueueSubmit"))
12387 {
12388 return (void*)entry_vkQueueSubmit;
12389 }
12390 if (!strcmp(name, "vkQueueWaitIdle"))
12391 {
12392 return (void*)entry_vkQueueWaitIdle;
12393 }
12394 if (!strcmp(name, "vkDeviceWaitIdle"))
12395 {
12396 return (void*)entry_vkDeviceWaitIdle;
12397 }
12398 if (!strcmp(name, "vkAllocateMemory"))
12399 {
12400 return (void*)entry_vkAllocateMemory;
12401 }
12402 if (!strcmp(name, "vkFreeMemory"))
12403 {
12404 return (void*)entry_vkFreeMemory;
12405 }
12406 if (!strcmp(name, "vkMapMemory"))
12407 {
12408 return (void*)entry_vkMapMemory;
12409 }
12410 if (!strcmp(name, "vkUnmapMemory"))
12411 {
12412 return (void*)entry_vkUnmapMemory;
12413 }
12414 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
12415 {
12416 return (void*)entry_vkFlushMappedMemoryRanges;
12417 }
12418 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
12419 {
12420 return (void*)entry_vkInvalidateMappedMemoryRanges;
12421 }
12422 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
12423 {
12424 return (void*)entry_vkGetDeviceMemoryCommitment;
12425 }
12426 if (!strcmp(name, "vkBindBufferMemory"))
12427 {
12428 return (void*)entry_vkBindBufferMemory;
12429 }
12430 if (!strcmp(name, "vkBindImageMemory"))
12431 {
12432 return (void*)entry_vkBindImageMemory;
12433 }
12434 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
12435 {
12436 return (void*)entry_vkGetBufferMemoryRequirements;
12437 }
12438 if (!strcmp(name, "vkGetImageMemoryRequirements"))
12439 {
12440 return (void*)entry_vkGetImageMemoryRequirements;
12441 }
12442 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
12443 {
12444 return (void*)entry_vkGetImageSparseMemoryRequirements;
12445 }
12446 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
12447 {
12448 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
12449 }
12450 if (!strcmp(name, "vkQueueBindSparse"))
12451 {
12452 return (void*)entry_vkQueueBindSparse;
12453 }
12454 if (!strcmp(name, "vkCreateFence"))
12455 {
12456 return (void*)entry_vkCreateFence;
12457 }
12458 if (!strcmp(name, "vkDestroyFence"))
12459 {
12460 return (void*)entry_vkDestroyFence;
12461 }
12462 if (!strcmp(name, "vkResetFences"))
12463 {
12464 return (void*)entry_vkResetFences;
12465 }
12466 if (!strcmp(name, "vkGetFenceStatus"))
12467 {
12468 return (void*)entry_vkGetFenceStatus;
12469 }
12470 if (!strcmp(name, "vkWaitForFences"))
12471 {
12472 return (void*)entry_vkWaitForFences;
12473 }
12474 if (!strcmp(name, "vkCreateSemaphore"))
12475 {
12476 return (void*)entry_vkCreateSemaphore;
12477 }
12478 if (!strcmp(name, "vkDestroySemaphore"))
12479 {
12480 return (void*)entry_vkDestroySemaphore;
12481 }
12482 if (!strcmp(name, "vkCreateEvent"))
12483 {
12484 return (void*)entry_vkCreateEvent;
12485 }
12486 if (!strcmp(name, "vkDestroyEvent"))
12487 {
12488 return (void*)entry_vkDestroyEvent;
12489 }
12490 if (!strcmp(name, "vkGetEventStatus"))
12491 {
12492 return (void*)entry_vkGetEventStatus;
12493 }
12494 if (!strcmp(name, "vkSetEvent"))
12495 {
12496 return (void*)entry_vkSetEvent;
12497 }
12498 if (!strcmp(name, "vkResetEvent"))
12499 {
12500 return (void*)entry_vkResetEvent;
12501 }
12502 if (!strcmp(name, "vkCreateQueryPool"))
12503 {
12504 return (void*)entry_vkCreateQueryPool;
12505 }
12506 if (!strcmp(name, "vkDestroyQueryPool"))
12507 {
12508 return (void*)entry_vkDestroyQueryPool;
12509 }
12510 if (!strcmp(name, "vkGetQueryPoolResults"))
12511 {
12512 return (void*)entry_vkGetQueryPoolResults;
12513 }
12514 if (!strcmp(name, "vkCreateBuffer"))
12515 {
12516 return (void*)entry_vkCreateBuffer;
12517 }
12518 if (!strcmp(name, "vkDestroyBuffer"))
12519 {
12520 return (void*)entry_vkDestroyBuffer;
12521 }
12522 if (!strcmp(name, "vkCreateBufferView"))
12523 {
12524 return (void*)entry_vkCreateBufferView;
12525 }
12526 if (!strcmp(name, "vkDestroyBufferView"))
12527 {
12528 return (void*)entry_vkDestroyBufferView;
12529 }
12530 if (!strcmp(name, "vkCreateImage"))
12531 {
12532 return (void*)entry_vkCreateImage;
12533 }
12534 if (!strcmp(name, "vkDestroyImage"))
12535 {
12536 return (void*)entry_vkDestroyImage;
12537 }
12538 if (!strcmp(name, "vkGetImageSubresourceLayout"))
12539 {
12540 return (void*)entry_vkGetImageSubresourceLayout;
12541 }
12542 if (!strcmp(name, "vkCreateImageView"))
12543 {
12544 return (void*)entry_vkCreateImageView;
12545 }
12546 if (!strcmp(name, "vkDestroyImageView"))
12547 {
12548 return (void*)entry_vkDestroyImageView;
12549 }
12550 if (!strcmp(name, "vkCreateShaderModule"))
12551 {
12552 return (void*)entry_vkCreateShaderModule;
12553 }
12554 if (!strcmp(name, "vkDestroyShaderModule"))
12555 {
12556 return (void*)entry_vkDestroyShaderModule;
12557 }
12558 if (!strcmp(name, "vkCreatePipelineCache"))
12559 {
12560 return (void*)entry_vkCreatePipelineCache;
12561 }
12562 if (!strcmp(name, "vkDestroyPipelineCache"))
12563 {
12564 return (void*)entry_vkDestroyPipelineCache;
12565 }
12566 if (!strcmp(name, "vkGetPipelineCacheData"))
12567 {
12568 return (void*)entry_vkGetPipelineCacheData;
12569 }
12570 if (!strcmp(name, "vkMergePipelineCaches"))
12571 {
12572 return (void*)entry_vkMergePipelineCaches;
12573 }
12574 if (!strcmp(name, "vkCreateGraphicsPipelines"))
12575 {
12576 return (void*)entry_vkCreateGraphicsPipelines;
12577 }
12578 if (!strcmp(name, "vkCreateComputePipelines"))
12579 {
12580 return (void*)entry_vkCreateComputePipelines;
12581 }
12582 if (!strcmp(name, "vkDestroyPipeline"))
12583 {
12584 return (void*)entry_vkDestroyPipeline;
12585 }
12586 if (!strcmp(name, "vkCreatePipelineLayout"))
12587 {
12588 return (void*)entry_vkCreatePipelineLayout;
12589 }
12590 if (!strcmp(name, "vkDestroyPipelineLayout"))
12591 {
12592 return (void*)entry_vkDestroyPipelineLayout;
12593 }
12594 if (!strcmp(name, "vkCreateSampler"))
12595 {
12596 return (void*)entry_vkCreateSampler;
12597 }
12598 if (!strcmp(name, "vkDestroySampler"))
12599 {
12600 return (void*)entry_vkDestroySampler;
12601 }
12602 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
12603 {
12604 return (void*)entry_vkCreateDescriptorSetLayout;
12605 }
12606 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
12607 {
12608 return (void*)entry_vkDestroyDescriptorSetLayout;
12609 }
12610 if (!strcmp(name, "vkCreateDescriptorPool"))
12611 {
12612 return (void*)entry_vkCreateDescriptorPool;
12613 }
12614 if (!strcmp(name, "vkDestroyDescriptorPool"))
12615 {
12616 return (void*)entry_vkDestroyDescriptorPool;
12617 }
12618 if (!strcmp(name, "vkResetDescriptorPool"))
12619 {
12620 return (void*)entry_vkResetDescriptorPool;
12621 }
12622 if (!strcmp(name, "vkAllocateDescriptorSets"))
12623 {
12624 return (void*)entry_vkAllocateDescriptorSets;
12625 }
12626 if (!strcmp(name, "vkFreeDescriptorSets"))
12627 {
12628 return (void*)entry_vkFreeDescriptorSets;
12629 }
12630 if (!strcmp(name, "vkUpdateDescriptorSets"))
12631 {
12632 return (void*)entry_vkUpdateDescriptorSets;
12633 }
12634 if (!strcmp(name, "vkCreateFramebuffer"))
12635 {
12636 return (void*)entry_vkCreateFramebuffer;
12637 }
12638 if (!strcmp(name, "vkDestroyFramebuffer"))
12639 {
12640 return (void*)entry_vkDestroyFramebuffer;
12641 }
12642 if (!strcmp(name, "vkCreateRenderPass"))
12643 {
12644 return (void*)entry_vkCreateRenderPass;
12645 }
12646 if (!strcmp(name, "vkDestroyRenderPass"))
12647 {
12648 return (void*)entry_vkDestroyRenderPass;
12649 }
12650 if (!strcmp(name, "vkGetRenderAreaGranularity"))
12651 {
12652 return (void*)entry_vkGetRenderAreaGranularity;
12653 }
12654 if (!strcmp(name, "vkCreateCommandPool"))
12655 {
12656 return (void*)entry_vkCreateCommandPool;
12657 }
12658 if (!strcmp(name, "vkDestroyCommandPool"))
12659 {
12660 return (void*)entry_vkDestroyCommandPool;
12661 }
12662 if (!strcmp(name, "vkResetCommandPool"))
12663 {
12664 return (void*)entry_vkResetCommandPool;
12665 }
12666 if (!strcmp(name, "vkAllocateCommandBuffers"))
12667 {
12668 return (void*)entry_vkAllocateCommandBuffers;
12669 }
12670 if (!strcmp(name, "vkFreeCommandBuffers"))
12671 {
12672 return (void*)entry_vkFreeCommandBuffers;
12673 }
12674 if (!strcmp(name, "vkBeginCommandBuffer"))
12675 {
12676 return (void*)entry_vkBeginCommandBuffer;
12677 }
12678 if (!strcmp(name, "vkEndCommandBuffer"))
12679 {
12680 return (void*)entry_vkEndCommandBuffer;
12681 }
12682 if (!strcmp(name, "vkResetCommandBuffer"))
12683 {
12684 return (void*)entry_vkResetCommandBuffer;
12685 }
12686 if (!strcmp(name, "vkCmdBindPipeline"))
12687 {
12688 return (void*)entry_vkCmdBindPipeline;
12689 }
12690 if (!strcmp(name, "vkCmdSetViewport"))
12691 {
12692 return (void*)entry_vkCmdSetViewport;
12693 }
12694 if (!strcmp(name, "vkCmdSetScissor"))
12695 {
12696 return (void*)entry_vkCmdSetScissor;
12697 }
12698 if (!strcmp(name, "vkCmdSetLineWidth"))
12699 {
12700 return (void*)entry_vkCmdSetLineWidth;
12701 }
12702 if (!strcmp(name, "vkCmdSetDepthBias"))
12703 {
12704 return (void*)entry_vkCmdSetDepthBias;
12705 }
12706 if (!strcmp(name, "vkCmdSetBlendConstants"))
12707 {
12708 return (void*)entry_vkCmdSetBlendConstants;
12709 }
12710 if (!strcmp(name, "vkCmdSetDepthBounds"))
12711 {
12712 return (void*)entry_vkCmdSetDepthBounds;
12713 }
12714 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
12715 {
12716 return (void*)entry_vkCmdSetStencilCompareMask;
12717 }
12718 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
12719 {
12720 return (void*)entry_vkCmdSetStencilWriteMask;
12721 }
12722 if (!strcmp(name, "vkCmdSetStencilReference"))
12723 {
12724 return (void*)entry_vkCmdSetStencilReference;
12725 }
12726 if (!strcmp(name, "vkCmdBindDescriptorSets"))
12727 {
12728 return (void*)entry_vkCmdBindDescriptorSets;
12729 }
12730 if (!strcmp(name, "vkCmdBindIndexBuffer"))
12731 {
12732 return (void*)entry_vkCmdBindIndexBuffer;
12733 }
12734 if (!strcmp(name, "vkCmdBindVertexBuffers"))
12735 {
12736 return (void*)entry_vkCmdBindVertexBuffers;
12737 }
12738 if (!strcmp(name, "vkCmdDraw"))
12739 {
12740 return (void*)entry_vkCmdDraw;
12741 }
12742 if (!strcmp(name, "vkCmdDrawIndexed"))
12743 {
12744 return (void*)entry_vkCmdDrawIndexed;
12745 }
12746 if (!strcmp(name, "vkCmdDrawIndirect"))
12747 {
12748 return (void*)entry_vkCmdDrawIndirect;
12749 }
12750 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
12751 {
12752 return (void*)entry_vkCmdDrawIndexedIndirect;
12753 }
12754 if (!strcmp(name, "vkCmdDispatch"))
12755 {
12756 return (void*)entry_vkCmdDispatch;
12757 }
12758 if (!strcmp(name, "vkCmdDispatchIndirect"))
12759 {
12760 return (void*)entry_vkCmdDispatchIndirect;
12761 }
12762 if (!strcmp(name, "vkCmdCopyBuffer"))
12763 {
12764 return (void*)entry_vkCmdCopyBuffer;
12765 }
12766 if (!strcmp(name, "vkCmdCopyImage"))
12767 {
12768 return (void*)entry_vkCmdCopyImage;
12769 }
12770 if (!strcmp(name, "vkCmdBlitImage"))
12771 {
12772 return (void*)entry_vkCmdBlitImage;
12773 }
12774 if (!strcmp(name, "vkCmdCopyBufferToImage"))
12775 {
12776 return (void*)entry_vkCmdCopyBufferToImage;
12777 }
12778 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
12779 {
12780 return (void*)entry_vkCmdCopyImageToBuffer;
12781 }
12782 if (!strcmp(name, "vkCmdUpdateBuffer"))
12783 {
12784 return (void*)entry_vkCmdUpdateBuffer;
12785 }
12786 if (!strcmp(name, "vkCmdFillBuffer"))
12787 {
12788 return (void*)entry_vkCmdFillBuffer;
12789 }
12790 if (!strcmp(name, "vkCmdClearColorImage"))
12791 {
12792 return (void*)entry_vkCmdClearColorImage;
12793 }
12794 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
12795 {
12796 return (void*)entry_vkCmdClearDepthStencilImage;
12797 }
12798 if (!strcmp(name, "vkCmdClearAttachments"))
12799 {
12800 return (void*)entry_vkCmdClearAttachments;
12801 }
12802 if (!strcmp(name, "vkCmdResolveImage"))
12803 {
12804 return (void*)entry_vkCmdResolveImage;
12805 }
12806 if (!strcmp(name, "vkCmdSetEvent"))
12807 {
12808 return (void*)entry_vkCmdSetEvent;
12809 }
12810 if (!strcmp(name, "vkCmdResetEvent"))
12811 {
12812 return (void*)entry_vkCmdResetEvent;
12813 }
12814 if (!strcmp(name, "vkCmdWaitEvents"))
12815 {
12816 return (void*)entry_vkCmdWaitEvents;
12817 }
12818 if (!strcmp(name, "vkCmdPipelineBarrier"))
12819 {
12820 return (void*)entry_vkCmdPipelineBarrier;
12821 }
12822 if (!strcmp(name, "vkCmdBeginQuery"))
12823 {
12824 return (void*)entry_vkCmdBeginQuery;
12825 }
12826 if (!strcmp(name, "vkCmdEndQuery"))
12827 {
12828 return (void*)entry_vkCmdEndQuery;
12829 }
12830 if (!strcmp(name, "vkCmdResetQueryPool"))
12831 {
12832 return (void*)entry_vkCmdResetQueryPool;
12833 }
12834 if (!strcmp(name, "vkCmdWriteTimestamp"))
12835 {
12836 return (void*)entry_vkCmdWriteTimestamp;
12837 }
12838 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
12839 {
12840 return (void*)entry_vkCmdCopyQueryPoolResults;
12841 }
12842 if (!strcmp(name, "vkCmdPushConstants"))
12843 {
12844 return (void*)entry_vkCmdPushConstants;
12845 }
12846 if (!strcmp(name, "vkCmdBeginRenderPass"))
12847 {
12848 return (void*)entry_vkCmdBeginRenderPass;
12849 }
12850 if (!strcmp(name, "vkCmdNextSubpass"))
12851 {
12852 return (void*)entry_vkCmdNextSubpass;
12853 }
12854 if (!strcmp(name, "vkCmdEndRenderPass"))
12855 {
12856 return (void*)entry_vkCmdEndRenderPass;
12857 }
12858 if (!strcmp(name, "vkCmdExecuteCommands"))
12859 {
12860 return (void*)entry_vkCmdExecuteCommands;
12861 }
12862#endif
12863#ifdef VK_VERSION_1_1
12864 if (!strcmp(name, "vkEnumerateInstanceVersion"))
12865 {
12866 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
12867 }
12868 if (!strcmp(name, "vkBindBufferMemory2"))
12869 {
12870 return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
12871 }
12872 if (!strcmp(name, "vkBindImageMemory2"))
12873 {
12874 return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
12875 }
12876 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
12877 {
12878 return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
12879 }
12880 if (!strcmp(name, "vkCmdSetDeviceMask"))
12881 {
12882 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
12883 }
12884 if (!strcmp(name, "vkCmdDispatchBase"))
12885 {
12886 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
12887 }
12888 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
12889 {
12890 return nullptr;
12891 }
12892 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
12893 {
12894 return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
12895 }
12896 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
12897 {
12898 return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
12899 }
12900 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
12901 {
12902 return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
12903 }
12904 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
12905 {
12906 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
12907 }
12908 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
12909 {
12910 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
12911 }
12912 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
12913 {
12914 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
12915 }
12916 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
12917 {
12918 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
12919 }
12920 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
12921 {
12922 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
12923 }
12924 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
12925 {
12926 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
12927 }
12928 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
12929 {
12930 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
12931 }
12932 if (!strcmp(name, "vkTrimCommandPool"))
12933 {
12934 return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
12935 }
12936 if (!strcmp(name, "vkGetDeviceQueue2"))
12937 {
12938 return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
12939 }
12940 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
12941 {
12942 return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
12943 }
12944 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
12945 {
12946 return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
12947 }
12948 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
12949 {
12950 return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
12951 }
12952 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
12953 {
12954 return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
12955 }
12956 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
12957 {
12958 return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
12959 }
12960 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
12961 {
12962 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
12963 }
12964 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
12965 {
12966 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
12967 }
12968 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
12969 {
12970 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
12971 }
12972 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
12973 {
12974 return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
12975 }
12976#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012977#ifdef VK_VERSION_1_2
12978 if (!strcmp(name, "vkCmdDrawIndirectCount"))
12979 {
12980 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12981 return hasExt ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
12982 }
12983 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
12984 {
12985 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12986 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
12987 }
12988 if (!strcmp(name, "vkCreateRenderPass2"))
12989 {
12990 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12991 return hasExt ? (void*)entry_vkCreateRenderPass2 : nullptr;
12992 }
12993 if (!strcmp(name, "vkCmdBeginRenderPass2"))
12994 {
12995 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12996 return hasExt ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
12997 }
12998 if (!strcmp(name, "vkCmdNextSubpass2"))
12999 {
13000 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13001 return hasExt ? (void*)entry_vkCmdNextSubpass2 : nullptr;
13002 }
13003 if (!strcmp(name, "vkCmdEndRenderPass2"))
13004 {
13005 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13006 return hasExt ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
13007 }
13008 if (!strcmp(name, "vkResetQueryPool"))
13009 {
13010 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13011 return hasExt ? (void*)entry_vkResetQueryPool : nullptr;
13012 }
13013 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
13014 {
13015 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13016 return hasExt ? (void*)entry_vkGetSemaphoreCounterValue : nullptr;
13017 }
13018 if (!strcmp(name, "vkWaitSemaphores"))
13019 {
13020 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13021 return hasExt ? (void*)entry_vkWaitSemaphores : nullptr;
13022 }
13023 if (!strcmp(name, "vkSignalSemaphore"))
13024 {
13025 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13026 return hasExt ? (void*)entry_vkSignalSemaphore : nullptr;
13027 }
13028 if (!strcmp(name, "vkGetBufferDeviceAddress"))
13029 {
13030 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13031 return hasExt ? (void*)entry_vkGetBufferDeviceAddress : nullptr;
13032 }
13033 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
13034 {
13035 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13036 return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddress : nullptr;
13037 }
13038 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
13039 {
13040 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13041 return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddress : nullptr;
13042 }
13043#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013044#ifdef VK_KHR_surface
13045 if (!strcmp(name, "vkDestroySurfaceKHR"))
13046 {
13047 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13048 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
13049 }
13050 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
13051 {
13052 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13053 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
13054 }
13055 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
13056 {
13057 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13058 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
13059 }
13060 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
13061 {
13062 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13063 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
13064 }
13065 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
13066 {
13067 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13068 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
13069 }
13070#endif
13071#ifdef VK_KHR_swapchain
13072 if (!strcmp(name, "vkCreateSwapchainKHR"))
13073 {
13074 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13075 return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
13076 }
13077 if (!strcmp(name, "vkDestroySwapchainKHR"))
13078 {
13079 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13080 return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
13081 }
13082 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
13083 {
13084 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13085 return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
13086 }
13087 if (!strcmp(name, "vkAcquireNextImageKHR"))
13088 {
13089 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13090 return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
13091 }
13092 if (!strcmp(name, "vkQueuePresentKHR"))
13093 {
13094 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13095 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
13096 }
13097 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
13098 {
13099 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13100 return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
13101 }
13102 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
13103 {
13104 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13105 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
13106 }
13107 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
13108 {
13109 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13110 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
13111 }
13112 if (!strcmp(name, "vkAcquireNextImage2KHR"))
13113 {
13114 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13115 return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
13116 }
13117#endif
13118#ifdef VK_KHR_display
13119 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
13120 {
13121 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13122 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
13123 }
13124 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
13125 {
13126 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13127 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
13128 }
13129 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
13130 {
13131 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13132 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
13133 }
13134 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
13135 {
13136 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13137 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
13138 }
13139 if (!strcmp(name, "vkCreateDisplayModeKHR"))
13140 {
13141 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13142 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
13143 }
13144 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
13145 {
13146 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13147 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
13148 }
13149 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
13150 {
13151 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13152 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
13153 }
13154#endif
13155#ifdef VK_KHR_display_swapchain
13156 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
13157 {
13158 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
13159 return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
13160 }
13161#endif
13162#ifdef VK_KHR_xlib_surface
13163 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
13164 {
13165 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
13166 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
13167 }
13168 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
13169 {
13170 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
13171 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
13172 }
13173#endif
13174#ifdef VK_KHR_xcb_surface
13175 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
13176 {
13177 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
13178 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
13179 }
13180 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
13181 {
13182 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
13183 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
13184 }
13185#endif
13186#ifdef VK_KHR_wayland_surface
13187 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
13188 {
13189 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
13190 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
13191 }
13192 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
13193 {
13194 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
13195 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
13196 }
13197#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013198#ifdef VK_KHR_android_surface
13199 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
13200 {
13201 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
13202 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
13203 }
13204#endif
13205#ifdef VK_KHR_win32_surface
13206 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
13207 {
13208 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
13209 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
13210 }
13211 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
13212 {
13213 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
13214 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
13215 }
13216#endif
13217#ifdef VK_KHR_get_physical_device_properties2
13218 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
13219 {
13220 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13221 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
13222 }
13223 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
13224 {
13225 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13226 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
13227 }
13228 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
13229 {
13230 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13231 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
13232 }
13233 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
13234 {
13235 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13236 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
13237 }
13238 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
13239 {
13240 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13241 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
13242 }
13243 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
13244 {
13245 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13246 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
13247 }
13248 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
13249 {
13250 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13251 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
13252 }
13253#endif
13254#ifdef VK_KHR_device_group
13255 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
13256 {
13257 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
13258 return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
13259 }
13260 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
13261 {
13262 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
13263 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
13264 }
13265 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
13266 {
13267 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
13268 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
13269 }
13270#endif
13271#ifdef VK_KHR_maintenance1
13272 if (!strcmp(name, "vkTrimCommandPoolKHR"))
13273 {
13274 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
13275 return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
13276 }
13277#endif
13278#ifdef VK_KHR_device_group_creation
13279 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
13280 {
13281 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
13282 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
13283 }
13284#endif
13285#ifdef VK_KHR_external_memory_capabilities
13286 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
13287 {
13288 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
13289 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
13290 }
13291#endif
13292#ifdef VK_KHR_external_memory_win32
13293 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
13294 {
13295 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
13296 return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
13297 }
13298 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
13299 {
13300 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
13301 return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
13302 }
13303#endif
13304#ifdef VK_KHR_external_memory_fd
13305 if (!strcmp(name, "vkGetMemoryFdKHR"))
13306 {
13307 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
13308 return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
13309 }
13310 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
13311 {
13312 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
13313 return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
13314 }
13315#endif
13316#ifdef VK_KHR_external_semaphore_capabilities
13317 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
13318 {
13319 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
13320 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
13321 }
13322#endif
13323#ifdef VK_KHR_external_semaphore_win32
13324 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
13325 {
13326 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
13327 return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
13328 }
13329 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
13330 {
13331 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
13332 return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
13333 }
13334#endif
13335#ifdef VK_KHR_external_semaphore_fd
13336 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
13337 {
13338 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
13339 return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
13340 }
13341 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
13342 {
13343 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
13344 return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
13345 }
13346#endif
13347#ifdef VK_KHR_push_descriptor
13348 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
13349 {
13350 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
13351 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
13352 }
13353 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
13354 {
13355 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
13356 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
13357 }
13358#endif
13359#ifdef VK_KHR_descriptor_update_template
13360 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
13361 {
13362 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
13363 return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
13364 }
13365 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
13366 {
13367 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
13368 return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
13369 }
13370 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
13371 {
13372 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
13373 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
13374 }
13375#endif
13376#ifdef VK_KHR_create_renderpass2
13377 if (!strcmp(name, "vkCreateRenderPass2KHR"))
13378 {
13379 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13380 return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
13381 }
13382 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
13383 {
13384 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13385 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
13386 }
13387 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
13388 {
13389 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13390 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
13391 }
13392 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
13393 {
13394 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13395 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
13396 }
13397#endif
13398#ifdef VK_KHR_shared_presentable_image
13399 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
13400 {
13401 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
13402 return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
13403 }
13404#endif
13405#ifdef VK_KHR_external_fence_capabilities
13406 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
13407 {
13408 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
13409 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
13410 }
13411#endif
13412#ifdef VK_KHR_external_fence_win32
13413 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
13414 {
13415 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
13416 return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
13417 }
13418 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
13419 {
13420 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
13421 return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
13422 }
13423#endif
13424#ifdef VK_KHR_external_fence_fd
13425 if (!strcmp(name, "vkImportFenceFdKHR"))
13426 {
13427 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
13428 return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
13429 }
13430 if (!strcmp(name, "vkGetFenceFdKHR"))
13431 {
13432 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
13433 return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
13434 }
13435#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013436#ifdef VK_KHR_performance_query
13437 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
13438 {
13439 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13440 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
13441 }
13442 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
13443 {
13444 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13445 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
13446 }
13447 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
13448 {
13449 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13450 return hasExt ? (void*)entry_vkAcquireProfilingLockKHR : nullptr;
13451 }
13452 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
13453 {
13454 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13455 return hasExt ? (void*)entry_vkReleaseProfilingLockKHR : nullptr;
13456 }
13457#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013458#ifdef VK_KHR_get_surface_capabilities2
13459 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
13460 {
13461 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
13462 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
13463 }
13464 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
13465 {
13466 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
13467 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
13468 }
13469#endif
13470#ifdef VK_KHR_get_display_properties2
13471 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
13472 {
13473 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13474 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
13475 }
13476 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
13477 {
13478 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13479 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
13480 }
13481 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
13482 {
13483 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13484 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
13485 }
13486 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
13487 {
13488 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13489 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
13490 }
13491#endif
13492#ifdef VK_KHR_get_memory_requirements2
13493 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
13494 {
13495 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
13496 return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
13497 }
13498 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
13499 {
13500 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
13501 return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
13502 }
13503 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
13504 {
13505 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
13506 return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
13507 }
13508#endif
13509#ifdef VK_KHR_sampler_ycbcr_conversion
13510 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
13511 {
13512 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
13513 return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
13514 }
13515 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
13516 {
13517 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
13518 return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
13519 }
13520#endif
13521#ifdef VK_KHR_bind_memory2
13522 if (!strcmp(name, "vkBindBufferMemory2KHR"))
13523 {
13524 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
13525 return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
13526 }
13527 if (!strcmp(name, "vkBindImageMemory2KHR"))
13528 {
13529 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
13530 return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
13531 }
13532#endif
13533#ifdef VK_KHR_maintenance3
13534 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
13535 {
13536 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
13537 return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
13538 }
13539#endif
13540#ifdef VK_KHR_draw_indirect_count
13541 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
13542 {
13543 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
13544 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
13545 }
13546 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
13547 {
13548 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
13549 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
13550 }
13551#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013552#ifdef VK_KHR_timeline_semaphore
13553 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
13554 {
13555 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
13556 return hasExt ? (void*)entry_vkGetSemaphoreCounterValueKHR : nullptr;
13557 }
13558 if (!strcmp(name, "vkWaitSemaphoresKHR"))
13559 {
13560 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
13561 return hasExt ? (void*)entry_vkWaitSemaphoresKHR : nullptr;
13562 }
13563 if (!strcmp(name, "vkSignalSemaphoreKHR"))
13564 {
13565 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
13566 return hasExt ? (void*)entry_vkSignalSemaphoreKHR : nullptr;
13567 }
13568#endif
13569#ifdef VK_KHR_fragment_shading_rate
13570 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
13571 {
13572 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
13573 return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
13574 }
13575 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
13576 {
13577 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
13578 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateKHR : nullptr;
13579 }
13580#endif
13581#ifdef VK_KHR_buffer_device_address
13582 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
13583 {
13584 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
13585 return hasExt ? (void*)entry_vkGetBufferDeviceAddressKHR : nullptr;
13586 }
13587 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
13588 {
13589 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
13590 return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddressKHR : nullptr;
13591 }
13592 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
13593 {
13594 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
13595 return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR : nullptr;
13596 }
13597#endif
13598#ifdef VK_KHR_deferred_host_operations
13599 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
13600 {
13601 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13602 return hasExt ? (void*)entry_vkCreateDeferredOperationKHR : nullptr;
13603 }
13604 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
13605 {
13606 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13607 return hasExt ? (void*)entry_vkDestroyDeferredOperationKHR : nullptr;
13608 }
13609 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
13610 {
13611 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13612 return hasExt ? (void*)entry_vkGetDeferredOperationMaxConcurrencyKHR : nullptr;
13613 }
13614 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
13615 {
13616 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13617 return hasExt ? (void*)entry_vkGetDeferredOperationResultKHR : nullptr;
13618 }
13619 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
13620 {
13621 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13622 return hasExt ? (void*)entry_vkDeferredOperationJoinKHR : nullptr;
13623 }
13624#endif
13625#ifdef VK_KHR_pipeline_executable_properties
13626 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
13627 {
13628 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
13629 return hasExt ? (void*)entry_vkGetPipelineExecutablePropertiesKHR : nullptr;
13630 }
13631 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
13632 {
13633 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
13634 return hasExt ? (void*)entry_vkGetPipelineExecutableStatisticsKHR : nullptr;
13635 }
13636 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
13637 {
13638 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
13639 return hasExt ? (void*)entry_vkGetPipelineExecutableInternalRepresentationsKHR : nullptr;
13640 }
13641#endif
13642#ifdef VK_KHR_copy_commands2
13643 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
13644 {
13645 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13646 return hasExt ? (void*)entry_vkCmdCopyBuffer2KHR : nullptr;
13647 }
13648 if (!strcmp(name, "vkCmdCopyImage2KHR"))
13649 {
13650 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13651 return hasExt ? (void*)entry_vkCmdCopyImage2KHR : nullptr;
13652 }
13653 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
13654 {
13655 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13656 return hasExt ? (void*)entry_vkCmdCopyBufferToImage2KHR : nullptr;
13657 }
13658 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
13659 {
13660 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13661 return hasExt ? (void*)entry_vkCmdCopyImageToBuffer2KHR : nullptr;
13662 }
13663 if (!strcmp(name, "vkCmdBlitImage2KHR"))
13664 {
13665 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13666 return hasExt ? (void*)entry_vkCmdBlitImage2KHR : nullptr;
13667 }
13668 if (!strcmp(name, "vkCmdResolveImage2KHR"))
13669 {
13670 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13671 return hasExt ? (void*)entry_vkCmdResolveImage2KHR : nullptr;
13672 }
13673#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013674#ifdef VK_ANDROID_native_buffer
13675 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
13676 {
13677 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
13678 return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
13679 }
13680 if (!strcmp(name, "vkAcquireImageANDROID"))
13681 {
13682 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
13683 return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
13684 }
13685 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
13686 {
13687 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
13688 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
13689 }
13690#endif
13691#ifdef VK_EXT_debug_report
13692 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
13693 {
13694 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
13695 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
13696 }
13697 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
13698 {
13699 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
13700 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
13701 }
13702 if (!strcmp(name, "vkDebugReportMessageEXT"))
13703 {
13704 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
13705 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
13706 }
13707#endif
13708#ifdef VK_EXT_debug_marker
13709 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
13710 {
13711 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13712 return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
13713 }
13714 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
13715 {
13716 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13717 return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
13718 }
13719 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
13720 {
13721 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13722 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
13723 }
13724 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
13725 {
13726 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13727 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
13728 }
13729 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
13730 {
13731 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13732 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
13733 }
13734#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013735#ifdef VK_EXT_transform_feedback
13736 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
13737 {
13738 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13739 return hasExt ? (void*)entry_vkCmdBindTransformFeedbackBuffersEXT : nullptr;
13740 }
13741 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
13742 {
13743 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13744 return hasExt ? (void*)entry_vkCmdBeginTransformFeedbackEXT : nullptr;
13745 }
13746 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
13747 {
13748 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13749 return hasExt ? (void*)entry_vkCmdEndTransformFeedbackEXT : nullptr;
13750 }
13751 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
13752 {
13753 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13754 return hasExt ? (void*)entry_vkCmdBeginQueryIndexedEXT : nullptr;
13755 }
13756 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
13757 {
13758 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13759 return hasExt ? (void*)entry_vkCmdEndQueryIndexedEXT : nullptr;
13760 }
13761 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
13762 {
13763 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13764 return hasExt ? (void*)entry_vkCmdDrawIndirectByteCountEXT : nullptr;
13765 }
13766#endif
13767#ifdef VK_NVX_image_view_handle
13768 if (!strcmp(name, "vkGetImageViewHandleNVX"))
13769 {
13770 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
13771 return hasExt ? (void*)entry_vkGetImageViewHandleNVX : nullptr;
13772 }
13773 if (!strcmp(name, "vkGetImageViewAddressNVX"))
13774 {
13775 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
13776 return hasExt ? (void*)entry_vkGetImageViewAddressNVX : nullptr;
13777 }
13778#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013779#ifdef VK_AMD_draw_indirect_count
13780 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
13781 {
13782 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
13783 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
13784 }
13785 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
13786 {
13787 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
13788 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
13789 }
13790#endif
13791#ifdef VK_AMD_shader_info
13792 if (!strcmp(name, "vkGetShaderInfoAMD"))
13793 {
13794 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
13795 return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
13796 }
13797#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013798#ifdef VK_GGP_stream_descriptor_surface
13799 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
13800 {
13801 bool hasExt = resources->hasDeviceExtension(device, "VK_GGP_stream_descriptor_surface");
13802 return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
13803 }
13804#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013805#ifdef VK_NV_external_memory_capabilities
13806 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
13807 {
13808 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
13809 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
13810 }
13811#endif
13812#ifdef VK_NV_external_memory_win32
13813 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
13814 {
13815 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
13816 return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
13817 }
13818#endif
13819#ifdef VK_NN_vi_surface
13820 if (!strcmp(name, "vkCreateViSurfaceNN"))
13821 {
13822 bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
13823 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
13824 }
13825#endif
13826#ifdef VK_EXT_conditional_rendering
13827 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
13828 {
13829 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
13830 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
13831 }
13832 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
13833 {
13834 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
13835 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
13836 }
13837#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013838#ifdef VK_NV_clip_space_w_scaling
13839 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
13840 {
13841 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
13842 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
13843 }
13844#endif
13845#ifdef VK_EXT_direct_mode_display
13846 if (!strcmp(name, "vkReleaseDisplayEXT"))
13847 {
13848 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
13849 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
13850 }
13851#endif
13852#ifdef VK_EXT_acquire_xlib_display
13853 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
13854 {
13855 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
13856 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
13857 }
13858 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
13859 {
13860 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
13861 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
13862 }
13863#endif
13864#ifdef VK_EXT_display_surface_counter
13865 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
13866 {
13867 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
13868 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
13869 }
13870#endif
13871#ifdef VK_EXT_display_control
13872 if (!strcmp(name, "vkDisplayPowerControlEXT"))
13873 {
13874 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13875 return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
13876 }
13877 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
13878 {
13879 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13880 return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
13881 }
13882 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
13883 {
13884 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13885 return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
13886 }
13887 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
13888 {
13889 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13890 return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
13891 }
13892#endif
13893#ifdef VK_GOOGLE_display_timing
13894 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
13895 {
13896 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
13897 return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
13898 }
13899 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
13900 {
13901 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
13902 return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
13903 }
13904#endif
13905#ifdef VK_EXT_discard_rectangles
13906 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
13907 {
13908 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
13909 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
13910 }
13911#endif
13912#ifdef VK_EXT_hdr_metadata
13913 if (!strcmp(name, "vkSetHdrMetadataEXT"))
13914 {
13915 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
13916 return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
13917 }
13918#endif
13919#ifdef VK_MVK_ios_surface
13920 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
13921 {
13922 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
13923 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
13924 }
13925#endif
13926#ifdef VK_MVK_macos_surface
13927 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
13928 {
13929 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
13930 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
13931 }
13932#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013933#ifdef VK_MVK_moltenvk
13934 if (!strcmp(name, "vkGetMTLDeviceMVK"))
13935 {
13936 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13937 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
13938 }
13939 if (!strcmp(name, "vkSetMTLTextureMVK"))
13940 {
13941 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13942 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
13943 }
13944 if (!strcmp(name, "vkGetMTLTextureMVK"))
13945 {
13946 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13947 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
13948 }
13949 if (!strcmp(name, "vkGetMTLBufferMVK"))
13950 {
13951 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13952 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
13953 }
13954 if (!strcmp(name, "vkUseIOSurfaceMVK"))
13955 {
13956 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13957 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
13958 }
13959 if (!strcmp(name, "vkGetIOSurfaceMVK"))
13960 {
13961 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13962 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
13963 }
13964#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013965#ifdef VK_EXT_debug_utils
13966 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
13967 {
13968 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13969 return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
13970 }
13971 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
13972 {
13973 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13974 return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
13975 }
13976 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
13977 {
13978 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13979 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
13980 }
13981 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
13982 {
13983 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13984 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
13985 }
13986 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
13987 {
13988 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13989 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
13990 }
13991 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
13992 {
13993 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13994 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
13995 }
13996 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
13997 {
13998 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13999 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
14000 }
14001 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
14002 {
14003 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
14004 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
14005 }
14006 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
14007 {
14008 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
14009 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
14010 }
14011 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
14012 {
14013 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
14014 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
14015 }
14016 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
14017 {
14018 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
14019 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
14020 }
14021#endif
14022#ifdef VK_ANDROID_external_memory_android_hardware_buffer
14023 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
14024 {
14025 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
14026 return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
14027 }
14028 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
14029 {
14030 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
14031 return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
14032 }
14033#endif
14034#ifdef VK_EXT_sample_locations
14035 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
14036 {
14037 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
14038 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
14039 }
14040 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
14041 {
14042 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
14043 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
14044 }
14045#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014046#ifdef VK_EXT_image_drm_format_modifier
14047 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
14048 {
14049 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier");
14050 return hasExt ? (void*)entry_vkGetImageDrmFormatModifierPropertiesEXT : nullptr;
14051 }
14052#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014053#ifdef VK_EXT_validation_cache
14054 if (!strcmp(name, "vkCreateValidationCacheEXT"))
14055 {
14056 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14057 return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
14058 }
14059 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
14060 {
14061 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14062 return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
14063 }
14064 if (!strcmp(name, "vkMergeValidationCachesEXT"))
14065 {
14066 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14067 return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
14068 }
14069 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
14070 {
14071 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14072 return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
14073 }
14074#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014075#ifdef VK_NV_shading_rate_image
14076 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
14077 {
14078 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
14079 return hasExt ? (void*)entry_vkCmdBindShadingRateImageNV : nullptr;
14080 }
14081 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
14082 {
14083 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
14084 return hasExt ? (void*)entry_vkCmdSetViewportShadingRatePaletteNV : nullptr;
14085 }
14086 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
14087 {
14088 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
14089 return hasExt ? (void*)entry_vkCmdSetCoarseSampleOrderNV : nullptr;
14090 }
14091#endif
14092#ifdef VK_NV_ray_tracing
14093 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
14094 {
14095 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14096 return hasExt ? (void*)entry_vkCreateAccelerationStructureNV : nullptr;
14097 }
14098 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
14099 {
14100 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14101 return hasExt ? (void*)entry_vkDestroyAccelerationStructureNV : nullptr;
14102 }
14103 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
14104 {
14105 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14106 return hasExt ? (void*)entry_vkGetAccelerationStructureMemoryRequirementsNV : nullptr;
14107 }
14108 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
14109 {
14110 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14111 return hasExt ? (void*)entry_vkBindAccelerationStructureMemoryNV : nullptr;
14112 }
14113 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
14114 {
14115 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14116 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructureNV : nullptr;
14117 }
14118 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
14119 {
14120 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14121 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureNV : nullptr;
14122 }
14123 if (!strcmp(name, "vkCmdTraceRaysNV"))
14124 {
14125 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14126 return hasExt ? (void*)entry_vkCmdTraceRaysNV : nullptr;
14127 }
14128 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
14129 {
14130 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14131 return hasExt ? (void*)entry_vkCreateRayTracingPipelinesNV : nullptr;
14132 }
14133 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
14134 {
14135 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14136 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesKHR : nullptr;
14137 }
14138 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
14139 {
14140 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14141 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesNV : nullptr;
14142 }
14143 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
14144 {
14145 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14146 return hasExt ? (void*)entry_vkGetAccelerationStructureHandleNV : nullptr;
14147 }
14148 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
14149 {
14150 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14151 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesNV : nullptr;
14152 }
14153 if (!strcmp(name, "vkCompileDeferredNV"))
14154 {
14155 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14156 return hasExt ? (void*)entry_vkCompileDeferredNV : nullptr;
14157 }
14158#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014159#ifdef VK_EXT_external_memory_host
14160 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
14161 {
14162 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
14163 return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
14164 }
14165#endif
14166#ifdef VK_AMD_buffer_marker
14167 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
14168 {
14169 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
14170 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
14171 }
14172#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014173#ifdef VK_EXT_calibrated_timestamps
14174 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
14175 {
14176 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
14177 return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
14178 }
14179 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
14180 {
14181 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
14182 return hasExt ? (void*)entry_vkGetCalibratedTimestampsEXT : nullptr;
14183 }
14184#endif
14185#ifdef VK_NV_mesh_shader
14186 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
14187 {
14188 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
14189 return hasExt ? (void*)entry_vkCmdDrawMeshTasksNV : nullptr;
14190 }
14191 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
14192 {
14193 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
14194 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectNV : nullptr;
14195 }
14196 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
14197 {
14198 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
14199 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountNV : nullptr;
14200 }
14201#endif
14202#ifdef VK_NV_scissor_exclusive
14203 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
14204 {
14205 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_scissor_exclusive");
14206 return hasExt ? (void*)entry_vkCmdSetExclusiveScissorNV : nullptr;
14207 }
14208#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014209#ifdef VK_NV_device_diagnostic_checkpoints
14210 if (!strcmp(name, "vkCmdSetCheckpointNV"))
14211 {
14212 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
14213 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
14214 }
14215 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
14216 {
14217 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
14218 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
14219 }
14220#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014221#ifdef VK_INTEL_performance_query
14222 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014223 {
Yilong Lia8d45f12021-02-07 02:30:21 -080014224 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14225 return hasExt ? (void*)entry_vkInitializePerformanceApiINTEL : nullptr;
14226 }
14227 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
14228 {
14229 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14230 return hasExt ? (void*)entry_vkUninitializePerformanceApiINTEL : nullptr;
14231 }
14232 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
14233 {
14234 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14235 return hasExt ? (void*)entry_vkCmdSetPerformanceMarkerINTEL : nullptr;
14236 }
14237 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
14238 {
14239 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14240 return hasExt ? (void*)entry_vkCmdSetPerformanceStreamMarkerINTEL : nullptr;
14241 }
14242 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
14243 {
14244 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14245 return hasExt ? (void*)entry_vkCmdSetPerformanceOverrideINTEL : nullptr;
14246 }
14247 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
14248 {
14249 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14250 return hasExt ? (void*)entry_vkAcquirePerformanceConfigurationINTEL : nullptr;
14251 }
14252 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
14253 {
14254 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14255 return hasExt ? (void*)entry_vkReleasePerformanceConfigurationINTEL : nullptr;
14256 }
14257 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
14258 {
14259 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14260 return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
14261 }
14262 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
14263 {
14264 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14265 return hasExt ? (void*)entry_vkGetPerformanceParameterINTEL : nullptr;
14266 }
14267#endif
14268#ifdef VK_AMD_display_native_hdr
14269 if (!strcmp(name, "vkSetLocalDimmingAMD"))
14270 {
14271 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr");
14272 return hasExt ? (void*)entry_vkSetLocalDimmingAMD : nullptr;
14273 }
14274#endif
14275#ifdef VK_FUCHSIA_imagepipe_surface
14276 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
14277 {
14278 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_imagepipe_surface");
14279 return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
14280 }
14281#endif
14282#ifdef VK_EXT_metal_surface
14283 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
14284 {
14285 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_metal_surface");
14286 return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080014287 }
14288#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014289#ifdef VK_EXT_buffer_device_address
14290 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
14291 {
14292 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address");
14293 return hasExt ? (void*)entry_vkGetBufferDeviceAddressEXT : nullptr;
14294 }
14295#endif
14296#ifdef VK_EXT_tooling_info
14297 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
14298 {
14299 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_tooling_info");
14300 return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
14301 }
14302#endif
14303#ifdef VK_NV_cooperative_matrix
14304 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
14305 {
14306 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_cooperative_matrix");
14307 return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
14308 }
14309#endif
14310#ifdef VK_NV_coverage_reduction_mode
14311 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
14312 {
14313 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_coverage_reduction_mode");
14314 return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
14315 }
14316#endif
14317#ifdef VK_EXT_full_screen_exclusive
14318 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
14319 {
14320 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14321 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
14322 }
14323 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
14324 {
14325 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14326 return hasExt ? (void*)entry_vkAcquireFullScreenExclusiveModeEXT : nullptr;
14327 }
14328 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
14329 {
14330 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14331 return hasExt ? (void*)entry_vkReleaseFullScreenExclusiveModeEXT : nullptr;
14332 }
14333 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
14334 {
14335 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14336 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModes2EXT : nullptr;
14337 }
14338#endif
14339#ifdef VK_EXT_headless_surface
14340 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
14341 {
14342 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_headless_surface");
14343 return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
14344 }
14345#endif
14346#ifdef VK_EXT_line_rasterization
14347 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
14348 {
14349 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_line_rasterization");
14350 return hasExt ? (void*)entry_vkCmdSetLineStippleEXT : nullptr;
14351 }
14352#endif
14353#ifdef VK_EXT_host_query_reset
14354 if (!strcmp(name, "vkResetQueryPoolEXT"))
14355 {
14356 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_host_query_reset");
14357 return hasExt ? (void*)entry_vkResetQueryPoolEXT : nullptr;
14358 }
14359#endif
14360#ifdef VK_EXT_extended_dynamic_state
14361 if (!strcmp(name, "vkCmdSetCullModeEXT"))
14362 {
14363 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14364 return hasExt ? (void*)entry_vkCmdSetCullModeEXT : nullptr;
14365 }
14366 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
14367 {
14368 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14369 return hasExt ? (void*)entry_vkCmdSetFrontFaceEXT : nullptr;
14370 }
14371 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
14372 {
14373 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14374 return hasExt ? (void*)entry_vkCmdSetPrimitiveTopologyEXT : nullptr;
14375 }
14376 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
14377 {
14378 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14379 return hasExt ? (void*)entry_vkCmdSetViewportWithCountEXT : nullptr;
14380 }
14381 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
14382 {
14383 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14384 return hasExt ? (void*)entry_vkCmdSetScissorWithCountEXT : nullptr;
14385 }
14386 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
14387 {
14388 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14389 return hasExt ? (void*)entry_vkCmdBindVertexBuffers2EXT : nullptr;
14390 }
14391 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
14392 {
14393 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14394 return hasExt ? (void*)entry_vkCmdSetDepthTestEnableEXT : nullptr;
14395 }
14396 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
14397 {
14398 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14399 return hasExt ? (void*)entry_vkCmdSetDepthWriteEnableEXT : nullptr;
14400 }
14401 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
14402 {
14403 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14404 return hasExt ? (void*)entry_vkCmdSetDepthCompareOpEXT : nullptr;
14405 }
14406 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
14407 {
14408 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14409 return hasExt ? (void*)entry_vkCmdSetDepthBoundsTestEnableEXT : nullptr;
14410 }
14411 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
14412 {
14413 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14414 return hasExt ? (void*)entry_vkCmdSetStencilTestEnableEXT : nullptr;
14415 }
14416 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
14417 {
14418 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14419 return hasExt ? (void*)entry_vkCmdSetStencilOpEXT : nullptr;
14420 }
14421#endif
14422#ifdef VK_NV_device_generated_commands
14423 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
14424 {
14425 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14426 return hasExt ? (void*)entry_vkGetGeneratedCommandsMemoryRequirementsNV : nullptr;
14427 }
14428 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
14429 {
14430 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14431 return hasExt ? (void*)entry_vkCmdPreprocessGeneratedCommandsNV : nullptr;
14432 }
14433 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
14434 {
14435 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14436 return hasExt ? (void*)entry_vkCmdExecuteGeneratedCommandsNV : nullptr;
14437 }
14438 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
14439 {
14440 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14441 return hasExt ? (void*)entry_vkCmdBindPipelineShaderGroupNV : nullptr;
14442 }
14443 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
14444 {
14445 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14446 return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNV : nullptr;
14447 }
14448 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
14449 {
14450 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14451 return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNV : nullptr;
14452 }
14453#endif
14454#ifdef VK_EXT_private_data
14455 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
14456 {
14457 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14458 return hasExt ? (void*)entry_vkCreatePrivateDataSlotEXT : nullptr;
14459 }
14460 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
14461 {
14462 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14463 return hasExt ? (void*)entry_vkDestroyPrivateDataSlotEXT : nullptr;
14464 }
14465 if (!strcmp(name, "vkSetPrivateDataEXT"))
14466 {
14467 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14468 return hasExt ? (void*)entry_vkSetPrivateDataEXT : nullptr;
14469 }
14470 if (!strcmp(name, "vkGetPrivateDataEXT"))
14471 {
14472 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14473 return hasExt ? (void*)entry_vkGetPrivateDataEXT : nullptr;
14474 }
14475#endif
14476#ifdef VK_NV_fragment_shading_rate_enums
14477 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
14478 {
14479 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_fragment_shading_rate_enums");
14480 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateEnumNV : nullptr;
14481 }
14482#endif
14483#ifdef VK_EXT_directfb_surface
14484 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
14485 {
14486 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
14487 return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
14488 }
14489 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
14490 {
14491 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
14492 return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
14493 }
14494#endif
Yilong Li71c43c52021-02-10 02:50:43 -080014495#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -070014496 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
14497 {
14498 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14499 return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
14500 }
14501 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
14502 {
14503 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14504 return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
14505 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014506 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
14507 {
Yilong Li71c43c52021-02-10 02:50:43 -080014508 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Yilong Lia8d45f12021-02-07 02:30:21 -080014509 return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
14510 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070014511 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
14512 {
Yilong Li71c43c52021-02-10 02:50:43 -080014513 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070014514 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
14515 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014516 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
14517 {
Yilong Li71c43c52021-02-10 02:50:43 -080014518 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014519 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
14520 }
14521 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
14522 {
Yilong Li71c43c52021-02-10 02:50:43 -080014523 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014524 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
14525 }
14526 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
14527 {
Yilong Li71c43c52021-02-10 02:50:43 -080014528 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014529 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
14530 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070014531 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
14532 {
Yilong Li71c43c52021-02-10 02:50:43 -080014533 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang39a276e2019-06-17 13:27:22 -070014534 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
14535 }
Lingfeng Yang87f11962019-06-27 16:28:53 +000014536 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
14537 {
Yilong Li71c43c52021-02-10 02:50:43 -080014538 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang87f11962019-06-27 16:28:53 +000014539 return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
14540 }
14541 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
14542 {
Yilong Li71c43c52021-02-10 02:50:43 -080014543 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang87f11962019-06-27 16:28:53 +000014544 return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
14545 }
Lingfeng Yang4c542412020-02-04 18:18:32 -080014546 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
14547 {
Yilong Li71c43c52021-02-10 02:50:43 -080014548 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang4c542412020-02-04 18:18:32 -080014549 return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
14550 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070014551 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
14552 {
Yilong Li71c43c52021-02-10 02:50:43 -080014553 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070014554 return hasExt ? (void*)entry_vkFreeMemorySyncGOOGLE : nullptr;
14555 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014556 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
14557 {
Yilong Li71c43c52021-02-10 02:50:43 -080014558 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014559 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
14560 }
14561 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
14562 {
Yilong Li71c43c52021-02-10 02:50:43 -080014563 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014564 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
14565 }
14566 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
14567 {
Yilong Li71c43c52021-02-10 02:50:43 -080014568 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014569 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
14570 }
14571 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
14572 {
Yilong Li71c43c52021-02-10 02:50:43 -080014573 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014574 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
14575 }
Yilong Lia48b0102020-09-15 15:08:28 -070014576 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
14577 {
Yilong Li71c43c52021-02-10 02:50:43 -080014578 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Yilong Lia48b0102020-09-15 15:08:28 -070014579 return hasExt ? (void*)entry_vkGetLinearImageLayoutGOOGLE : nullptr;
14580 }
Lingfeng Yangded34672021-01-22 23:17:47 -080014581 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
14582 {
Yilong Li71c43c52021-02-10 02:50:43 -080014583 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangded34672021-01-22 23:17:47 -080014584 return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
14585 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080014586 if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
14587 {
14588 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14589 return hasExt ? (void*)entry_vkQueueCommitDescriptorSetUpdatesGOOGLE : nullptr;
14590 }
14591 if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
14592 {
14593 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14594 return hasExt ? (void*)entry_vkCollectDescriptorPoolIdsGOOGLE : nullptr;
14595 }
Lingfeng Yang5678e1e2021-07-15 12:28:05 -070014596 if (!strcmp(name, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE"))
14597 {
14598 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14599 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE : nullptr;
14600 }
Lingfeng Yangded34672021-01-22 23:17:47 -080014601#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014602#ifdef VK_KHR_acceleration_structure
14603 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
14604 {
14605 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14606 return hasExt ? (void*)entry_vkCreateAccelerationStructureKHR : nullptr;
14607 }
14608 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
14609 {
14610 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14611 return hasExt ? (void*)entry_vkDestroyAccelerationStructureKHR : nullptr;
14612 }
14613 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
14614 {
14615 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14616 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresKHR : nullptr;
14617 }
14618 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
14619 {
14620 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14621 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresIndirectKHR : nullptr;
14622 }
14623 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
14624 {
14625 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14626 return hasExt ? (void*)entry_vkBuildAccelerationStructuresKHR : nullptr;
14627 }
14628 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
14629 {
14630 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14631 return hasExt ? (void*)entry_vkCopyAccelerationStructureKHR : nullptr;
14632 }
14633 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
14634 {
14635 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14636 return hasExt ? (void*)entry_vkCopyAccelerationStructureToMemoryKHR : nullptr;
14637 }
14638 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
14639 {
14640 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14641 return hasExt ? (void*)entry_vkCopyMemoryToAccelerationStructureKHR : nullptr;
14642 }
14643 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
14644 {
14645 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14646 return hasExt ? (void*)entry_vkWriteAccelerationStructuresPropertiesKHR : nullptr;
14647 }
14648 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
14649 {
14650 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14651 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureKHR : nullptr;
14652 }
14653 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
14654 {
14655 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14656 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureToMemoryKHR : nullptr;
14657 }
14658 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
14659 {
14660 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14661 return hasExt ? (void*)entry_vkCmdCopyMemoryToAccelerationStructureKHR : nullptr;
14662 }
14663 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
14664 {
14665 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14666 return hasExt ? (void*)entry_vkGetAccelerationStructureDeviceAddressKHR : nullptr;
14667 }
14668 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
14669 {
14670 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14671 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesKHR : nullptr;
14672 }
14673 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
14674 {
14675 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14676 return hasExt ? (void*)entry_vkGetDeviceAccelerationStructureCompatibilityKHR : nullptr;
14677 }
14678 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
14679 {
14680 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14681 return hasExt ? (void*)entry_vkGetAccelerationStructureBuildSizesKHR : nullptr;
14682 }
14683#endif
14684#ifdef VK_KHR_ray_tracing_pipeline
14685 if (!strcmp(name, "vkCmdTraceRaysKHR"))
14686 {
14687 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14688 return hasExt ? (void*)entry_vkCmdTraceRaysKHR : nullptr;
14689 }
14690 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
14691 {
14692 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14693 return hasExt ? (void*)entry_vkCreateRayTracingPipelinesKHR : nullptr;
14694 }
14695 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
14696 {
14697 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14698 return hasExt ? (void*)entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR : nullptr;
14699 }
14700 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
14701 {
14702 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14703 return hasExt ? (void*)entry_vkCmdTraceRaysIndirectKHR : nullptr;
14704 }
14705 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
14706 {
14707 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14708 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupStackSizeKHR : nullptr;
14709 }
14710 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
14711 {
14712 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14713 return hasExt ? (void*)entry_vkCmdSetRayTracingPipelineStackSizeKHR : nullptr;
14714 }
14715#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080014716 return nullptr;
14717}
14718
14719} // namespace goldfish_vk