blob: cde7e0b3a95ba1a209a1ba56a15acb5f5ad03005 [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>
Gurchetan Singha1292d92021-10-22 16:02:25 -070035#include <cstring>
Lingfeng Yang2f51a332019-10-30 09:25:25 -070036
Lingfeng Yang0b81df22018-11-05 21:40:30 -080037// Stuff we are not going to use but if included,
38// will cause compile errors. These are Android Vulkan
39// required extensions, but the approach will be to
40// implement them completely on the guest side.
41#undef VK_KHR_android_surface
Lingfeng Yang0b81df22018-11-05 21:40:30 -080042
43
44namespace goldfish_vk {
45
Lingfeng Yang2f51a332019-10-30 09:25:25 -070046static void sOnInvalidDynamicallyCheckedCall(const char* apiname, const char* neededFeature)
47{
48 ALOGE("invalid call to %s: %s not supported", apiname, neededFeature);
49 abort();
50}
Lingfeng Yang0b81df22018-11-05 21:40:30 -080051#ifdef VK_VERSION_1_0
52static VkResult entry_vkCreateInstance(
53 const VkInstanceCreateInfo* pCreateInfo,
54 const VkAllocationCallbacks* pAllocator,
55 VkInstance* pInstance)
56{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080057 AEMU_SCOPED_TRACE("vkCreateInstance");
Lingfeng Yang4f539502021-01-22 23:01:57 -080058 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -080059 VkResult vkCreateInstance_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080060 vkCreateInstance_VkResult_return = vkEnc->vkCreateInstance(pCreateInfo, pAllocator, pInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080061 return vkCreateInstance_VkResult_return;
62}
63static void entry_vkDestroyInstance(
64 VkInstance instance,
65 const VkAllocationCallbacks* pAllocator)
66{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080067 AEMU_SCOPED_TRACE("vkDestroyInstance");
Lingfeng Yang4f539502021-01-22 23:01:57 -080068 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080069 vkEnc->vkDestroyInstance(instance, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080070}
71static VkResult entry_vkEnumeratePhysicalDevices(
72 VkInstance instance,
73 uint32_t* pPhysicalDeviceCount,
74 VkPhysicalDevice* pPhysicalDevices)
75{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080076 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices");
Lingfeng Yang4f539502021-01-22 23:01:57 -080077 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -080078 VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
Lingfeng Yangb64ca452019-02-14 22:04:28 -080079 auto resources = ResourceTracker::get();
80 vkEnumeratePhysicalDevices_VkResult_return = resources->on_vkEnumeratePhysicalDevices(vkEnc, VK_SUCCESS, instance, pPhysicalDeviceCount, pPhysicalDevices);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080081 return vkEnumeratePhysicalDevices_VkResult_return;
82}
83static void entry_vkGetPhysicalDeviceFeatures(
84 VkPhysicalDevice physicalDevice,
85 VkPhysicalDeviceFeatures* pFeatures)
86{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080087 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -080088 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080089 vkEnc->vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080090}
91static void entry_vkGetPhysicalDeviceFormatProperties(
92 VkPhysicalDevice physicalDevice,
93 VkFormat format,
94 VkFormatProperties* pFormatProperties)
95{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080096 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -080097 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080098 vkEnc->vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080099}
100static VkResult entry_vkGetPhysicalDeviceImageFormatProperties(
101 VkPhysicalDevice physicalDevice,
102 VkFormat format,
103 VkImageType type,
104 VkImageTiling tiling,
105 VkImageUsageFlags usage,
106 VkImageCreateFlags flags,
107 VkImageFormatProperties* pImageFormatProperties)
108{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800109 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800110 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800111 VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800112 vkGetPhysicalDeviceImageFormatProperties_VkResult_return = vkEnc->vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800113 return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
114}
115static void entry_vkGetPhysicalDeviceProperties(
116 VkPhysicalDevice physicalDevice,
117 VkPhysicalDeviceProperties* pProperties)
118{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800119 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800120 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800121 vkEnc->vkGetPhysicalDeviceProperties(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800122}
123static void entry_vkGetPhysicalDeviceQueueFamilyProperties(
124 VkPhysicalDevice physicalDevice,
125 uint32_t* pQueueFamilyPropertyCount,
126 VkQueueFamilyProperties* pQueueFamilyProperties)
127{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800128 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800129 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800130 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800131}
132static void entry_vkGetPhysicalDeviceMemoryProperties(
133 VkPhysicalDevice physicalDevice,
134 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
135{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800136 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800137 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800138 vkEnc->vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800139}
140static PFN_vkVoidFunction entry_vkGetInstanceProcAddr(
141 VkInstance instance,
142 const char* pName)
143{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800144 AEMU_SCOPED_TRACE("vkGetInstanceProcAddr");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800145 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800146 PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800147 vkGetInstanceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetInstanceProcAddr(instance, pName, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800148 return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
149}
150static PFN_vkVoidFunction entry_vkGetDeviceProcAddr(
151 VkDevice device,
152 const char* pName)
153{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800154 AEMU_SCOPED_TRACE("vkGetDeviceProcAddr");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800155 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800156 PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800157 vkGetDeviceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetDeviceProcAddr(device, pName, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800158 return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
159}
160static VkResult entry_vkCreateDevice(
161 VkPhysicalDevice physicalDevice,
162 const VkDeviceCreateInfo* pCreateInfo,
163 const VkAllocationCallbacks* pAllocator,
164 VkDevice* pDevice)
165{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800166 AEMU_SCOPED_TRACE("vkCreateDevice");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800167 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800168 VkResult vkCreateDevice_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800169 vkCreateDevice_VkResult_return = vkEnc->vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800170 return vkCreateDevice_VkResult_return;
171}
172static void entry_vkDestroyDevice(
173 VkDevice device,
174 const VkAllocationCallbacks* pAllocator)
175{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800176 AEMU_SCOPED_TRACE("vkDestroyDevice");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800177 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800178 vkEnc->vkDestroyDevice(device, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800179}
180static VkResult entry_vkEnumerateInstanceExtensionProperties(
181 const char* pLayerName,
182 uint32_t* pPropertyCount,
183 VkExtensionProperties* pProperties)
184{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800185 AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800186 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800187 VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -0800188 auto resources = ResourceTracker::get();
189 vkEnumerateInstanceExtensionProperties_VkResult_return = resources->on_vkEnumerateInstanceExtensionProperties(vkEnc, VK_SUCCESS, pLayerName, pPropertyCount, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800190 return vkEnumerateInstanceExtensionProperties_VkResult_return;
191}
192static VkResult entry_vkEnumerateDeviceExtensionProperties(
193 VkPhysicalDevice physicalDevice,
194 const char* pLayerName,
195 uint32_t* pPropertyCount,
196 VkExtensionProperties* pProperties)
197{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800198 AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800199 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800200 VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -0800201 auto resources = ResourceTracker::get();
202 vkEnumerateDeviceExtensionProperties_VkResult_return = resources->on_vkEnumerateDeviceExtensionProperties(vkEnc, VK_SUCCESS, physicalDevice, pLayerName, pPropertyCount, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800203 return vkEnumerateDeviceExtensionProperties_VkResult_return;
204}
205static VkResult entry_vkEnumerateInstanceLayerProperties(
206 uint32_t* pPropertyCount,
207 VkLayerProperties* pProperties)
208{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800209 AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800210 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800211 VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800212 vkEnumerateInstanceLayerProperties_VkResult_return = vkEnc->vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800213 return vkEnumerateInstanceLayerProperties_VkResult_return;
214}
215static VkResult entry_vkEnumerateDeviceLayerProperties(
216 VkPhysicalDevice physicalDevice,
217 uint32_t* pPropertyCount,
218 VkLayerProperties* pProperties)
219{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800220 AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800221 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800222 VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800223 vkEnumerateDeviceLayerProperties_VkResult_return = vkEnc->vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800224 return vkEnumerateDeviceLayerProperties_VkResult_return;
225}
226static void entry_vkGetDeviceQueue(
227 VkDevice device,
228 uint32_t queueFamilyIndex,
229 uint32_t queueIndex,
230 VkQueue* pQueue)
231{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800232 AEMU_SCOPED_TRACE("vkGetDeviceQueue");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800233 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800234 vkEnc->vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800235}
236static VkResult entry_vkQueueSubmit(
237 VkQueue queue,
238 uint32_t submitCount,
239 const VkSubmitInfo* pSubmits,
240 VkFence fence)
241{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800242 AEMU_SCOPED_TRACE("vkQueueSubmit");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800243 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800244 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
David Reveman24710222019-02-25 02:21:42 -0500245 auto resources = ResourceTracker::get();
246 vkQueueSubmit_VkResult_return = resources->on_vkQueueSubmit(vkEnc, VK_SUCCESS, queue, submitCount, pSubmits, fence);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800247 return vkQueueSubmit_VkResult_return;
248}
249static VkResult entry_vkQueueWaitIdle(
250 VkQueue queue)
251{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800252 AEMU_SCOPED_TRACE("vkQueueWaitIdle");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800253 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800254 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700255 auto resources = ResourceTracker::get();
256 vkQueueWaitIdle_VkResult_return = resources->on_vkQueueWaitIdle(vkEnc, VK_SUCCESS, queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800257 return vkQueueWaitIdle_VkResult_return;
258}
259static VkResult entry_vkDeviceWaitIdle(
260 VkDevice device)
261{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800262 AEMU_SCOPED_TRACE("vkDeviceWaitIdle");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800263 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800264 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800265 vkDeviceWaitIdle_VkResult_return = vkEnc->vkDeviceWaitIdle(device, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800266 return vkDeviceWaitIdle_VkResult_return;
267}
268static VkResult entry_vkAllocateMemory(
269 VkDevice device,
270 const VkMemoryAllocateInfo* pAllocateInfo,
271 const VkAllocationCallbacks* pAllocator,
272 VkDeviceMemory* pMemory)
273{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800274 AEMU_SCOPED_TRACE("vkAllocateMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800275 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800276 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
Lingfeng Yange9979522018-12-25 14:44:52 -0800277 auto resources = ResourceTracker::get();
278 vkAllocateMemory_VkResult_return = resources->on_vkAllocateMemory(vkEnc, VK_SUCCESS, device, pAllocateInfo, pAllocator, pMemory);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800279 return vkAllocateMemory_VkResult_return;
280}
281static void entry_vkFreeMemory(
282 VkDevice device,
283 VkDeviceMemory memory,
284 const VkAllocationCallbacks* pAllocator)
285{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800286 AEMU_SCOPED_TRACE("vkFreeMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800287 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yange9979522018-12-25 14:44:52 -0800288 auto resources = ResourceTracker::get();
289 resources->on_vkFreeMemory(vkEnc, device, memory, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800290}
291static VkResult entry_vkMapMemory(
292 VkDevice device,
293 VkDeviceMemory memory,
294 VkDeviceSize offset,
295 VkDeviceSize size,
296 VkMemoryMapFlags flags,
297 void** ppData)
298{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800299 AEMU_SCOPED_TRACE("vkMapMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800300 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800301 VkResult vkMapMemory_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800302 vkMapMemory_VkResult_return = vkEnc->vkMapMemory(device, memory, offset, size, flags, ppData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800303 return vkMapMemory_VkResult_return;
304}
305static void entry_vkUnmapMemory(
306 VkDevice device,
307 VkDeviceMemory memory)
308{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800309 AEMU_SCOPED_TRACE("vkUnmapMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800310 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800311 vkEnc->vkUnmapMemory(device, memory, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800312}
313static VkResult entry_vkFlushMappedMemoryRanges(
314 VkDevice device,
315 uint32_t memoryRangeCount,
316 const VkMappedMemoryRange* pMemoryRanges)
317{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800318 AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800319 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800320 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800321 vkFlushMappedMemoryRanges_VkResult_return = vkEnc->vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800322 return vkFlushMappedMemoryRanges_VkResult_return;
323}
324static VkResult entry_vkInvalidateMappedMemoryRanges(
325 VkDevice device,
326 uint32_t memoryRangeCount,
327 const VkMappedMemoryRange* pMemoryRanges)
328{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800329 AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800330 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800331 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800332 vkInvalidateMappedMemoryRanges_VkResult_return = vkEnc->vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800333 return vkInvalidateMappedMemoryRanges_VkResult_return;
334}
335static void entry_vkGetDeviceMemoryCommitment(
336 VkDevice device,
337 VkDeviceMemory memory,
338 VkDeviceSize* pCommittedMemoryInBytes)
339{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800340 AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800341 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800342 vkEnc->vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800343}
344static VkResult entry_vkBindBufferMemory(
345 VkDevice device,
346 VkBuffer buffer,
347 VkDeviceMemory memory,
348 VkDeviceSize memoryOffset)
349{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800350 AEMU_SCOPED_TRACE("vkBindBufferMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800351 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800352 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800353 auto resources = ResourceTracker::get();
354 vkBindBufferMemory_VkResult_return = resources->on_vkBindBufferMemory(vkEnc, VK_SUCCESS, device, buffer, memory, memoryOffset);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800355 return vkBindBufferMemory_VkResult_return;
356}
357static VkResult entry_vkBindImageMemory(
358 VkDevice device,
359 VkImage image,
360 VkDeviceMemory memory,
361 VkDeviceSize memoryOffset)
362{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800363 AEMU_SCOPED_TRACE("vkBindImageMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800364 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800365 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800366 auto resources = ResourceTracker::get();
367 vkBindImageMemory_VkResult_return = resources->on_vkBindImageMemory(vkEnc, VK_SUCCESS, device, image, memory, memoryOffset);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800368 return vkBindImageMemory_VkResult_return;
369}
370static void entry_vkGetBufferMemoryRequirements(
371 VkDevice device,
372 VkBuffer buffer,
373 VkMemoryRequirements* pMemoryRequirements)
374{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800375 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800376 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800377 auto resources = ResourceTracker::get();
378 resources->on_vkGetBufferMemoryRequirements(vkEnc, device, buffer, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800379}
380static void entry_vkGetImageMemoryRequirements(
381 VkDevice device,
382 VkImage image,
383 VkMemoryRequirements* pMemoryRequirements)
384{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800385 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800386 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800387 auto resources = ResourceTracker::get();
388 resources->on_vkGetImageMemoryRequirements(vkEnc, device, image, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800389}
390static void entry_vkGetImageSparseMemoryRequirements(
391 VkDevice device,
392 VkImage image,
393 uint32_t* pSparseMemoryRequirementCount,
394 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
395{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800396 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800397 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800398 vkEnc->vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800399}
400static void entry_vkGetPhysicalDeviceSparseImageFormatProperties(
401 VkPhysicalDevice physicalDevice,
402 VkFormat format,
403 VkImageType type,
404 VkSampleCountFlagBits samples,
405 VkImageUsageFlags usage,
406 VkImageTiling tiling,
407 uint32_t* pPropertyCount,
408 VkSparseImageFormatProperties* pProperties)
409{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800410 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800411 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800412 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800413}
414static VkResult entry_vkQueueBindSparse(
415 VkQueue queue,
416 uint32_t bindInfoCount,
417 const VkBindSparseInfo* pBindInfo,
418 VkFence fence)
419{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800420 AEMU_SCOPED_TRACE("vkQueueBindSparse");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800421 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800422 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800423 vkQueueBindSparse_VkResult_return = vkEnc->vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800424 return vkQueueBindSparse_VkResult_return;
425}
426static VkResult entry_vkCreateFence(
427 VkDevice device,
428 const VkFenceCreateInfo* pCreateInfo,
429 const VkAllocationCallbacks* pAllocator,
430 VkFence* pFence)
431{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800432 AEMU_SCOPED_TRACE("vkCreateFence");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800433 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800434 VkResult vkCreateFence_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700435 auto resources = ResourceTracker::get();
436 vkCreateFence_VkResult_return = resources->on_vkCreateFence(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pFence);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800437 return vkCreateFence_VkResult_return;
438}
439static void entry_vkDestroyFence(
440 VkDevice device,
441 VkFence fence,
442 const VkAllocationCallbacks* pAllocator)
443{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800444 AEMU_SCOPED_TRACE("vkDestroyFence");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800445 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800446 vkEnc->vkDestroyFence(device, fence, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800447}
448static VkResult entry_vkResetFences(
449 VkDevice device,
450 uint32_t fenceCount,
451 const VkFence* pFences)
452{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800453 AEMU_SCOPED_TRACE("vkResetFences");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800454 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800455 VkResult vkResetFences_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700456 auto resources = ResourceTracker::get();
457 vkResetFences_VkResult_return = resources->on_vkResetFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800458 return vkResetFences_VkResult_return;
459}
460static VkResult entry_vkGetFenceStatus(
461 VkDevice device,
462 VkFence fence)
463{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800464 AEMU_SCOPED_TRACE("vkGetFenceStatus");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800465 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800466 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800467 vkGetFenceStatus_VkResult_return = vkEnc->vkGetFenceStatus(device, fence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800468 return vkGetFenceStatus_VkResult_return;
469}
470static VkResult entry_vkWaitForFences(
471 VkDevice device,
472 uint32_t fenceCount,
473 const VkFence* pFences,
474 VkBool32 waitAll,
475 uint64_t timeout)
476{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800477 AEMU_SCOPED_TRACE("vkWaitForFences");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800478 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800479 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700480 auto resources = ResourceTracker::get();
481 vkWaitForFences_VkResult_return = resources->on_vkWaitForFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences, waitAll, timeout);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800482 return vkWaitForFences_VkResult_return;
483}
484static VkResult entry_vkCreateSemaphore(
485 VkDevice device,
486 const VkSemaphoreCreateInfo* pCreateInfo,
487 const VkAllocationCallbacks* pAllocator,
488 VkSemaphore* pSemaphore)
489{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800490 AEMU_SCOPED_TRACE("vkCreateSemaphore");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800491 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800492 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
David Reveman32b110e2019-02-21 13:20:54 -0500493 auto resources = ResourceTracker::get();
494 vkCreateSemaphore_VkResult_return = resources->on_vkCreateSemaphore(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSemaphore);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800495 return vkCreateSemaphore_VkResult_return;
496}
497static void entry_vkDestroySemaphore(
498 VkDevice device,
499 VkSemaphore semaphore,
500 const VkAllocationCallbacks* pAllocator)
501{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800502 AEMU_SCOPED_TRACE("vkDestroySemaphore");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800503 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
David Reveman32b110e2019-02-21 13:20:54 -0500504 auto resources = ResourceTracker::get();
505 resources->on_vkDestroySemaphore(vkEnc, device, semaphore, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800506}
507static VkResult entry_vkCreateEvent(
508 VkDevice device,
509 const VkEventCreateInfo* pCreateInfo,
510 const VkAllocationCallbacks* pAllocator,
511 VkEvent* pEvent)
512{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800513 AEMU_SCOPED_TRACE("vkCreateEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800514 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800515 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800516 vkCreateEvent_VkResult_return = vkEnc->vkCreateEvent(device, pCreateInfo, pAllocator, pEvent, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800517 return vkCreateEvent_VkResult_return;
518}
519static void entry_vkDestroyEvent(
520 VkDevice device,
521 VkEvent event,
522 const VkAllocationCallbacks* pAllocator)
523{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800524 AEMU_SCOPED_TRACE("vkDestroyEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800525 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800526 vkEnc->vkDestroyEvent(device, event, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800527}
528static VkResult entry_vkGetEventStatus(
529 VkDevice device,
530 VkEvent event)
531{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800532 AEMU_SCOPED_TRACE("vkGetEventStatus");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800533 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800534 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800535 vkGetEventStatus_VkResult_return = vkEnc->vkGetEventStatus(device, event, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800536 return vkGetEventStatus_VkResult_return;
537}
538static VkResult entry_vkSetEvent(
539 VkDevice device,
540 VkEvent event)
541{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800542 AEMU_SCOPED_TRACE("vkSetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800543 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800544 VkResult vkSetEvent_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800545 vkSetEvent_VkResult_return = vkEnc->vkSetEvent(device, event, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800546 return vkSetEvent_VkResult_return;
547}
548static VkResult entry_vkResetEvent(
549 VkDevice device,
550 VkEvent event)
551{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800552 AEMU_SCOPED_TRACE("vkResetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800553 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800554 VkResult vkResetEvent_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800555 vkResetEvent_VkResult_return = vkEnc->vkResetEvent(device, event, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800556 return vkResetEvent_VkResult_return;
557}
558static VkResult entry_vkCreateQueryPool(
559 VkDevice device,
560 const VkQueryPoolCreateInfo* pCreateInfo,
561 const VkAllocationCallbacks* pAllocator,
562 VkQueryPool* pQueryPool)
563{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800564 AEMU_SCOPED_TRACE("vkCreateQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800565 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800566 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800567 vkCreateQueryPool_VkResult_return = vkEnc->vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800568 return vkCreateQueryPool_VkResult_return;
569}
570static void entry_vkDestroyQueryPool(
571 VkDevice device,
572 VkQueryPool queryPool,
573 const VkAllocationCallbacks* pAllocator)
574{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800575 AEMU_SCOPED_TRACE("vkDestroyQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800576 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800577 vkEnc->vkDestroyQueryPool(device, queryPool, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800578}
579static VkResult entry_vkGetQueryPoolResults(
580 VkDevice device,
581 VkQueryPool queryPool,
582 uint32_t firstQuery,
583 uint32_t queryCount,
584 size_t dataSize,
585 void* pData,
586 VkDeviceSize stride,
587 VkQueryResultFlags flags)
588{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800589 AEMU_SCOPED_TRACE("vkGetQueryPoolResults");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800590 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800591 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800592 vkGetQueryPoolResults_VkResult_return = vkEnc->vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800593 return vkGetQueryPoolResults_VkResult_return;
594}
595static VkResult entry_vkCreateBuffer(
596 VkDevice device,
597 const VkBufferCreateInfo* pCreateInfo,
598 const VkAllocationCallbacks* pAllocator,
599 VkBuffer* pBuffer)
600{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800601 AEMU_SCOPED_TRACE("vkCreateBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800602 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800603 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800604 auto resources = ResourceTracker::get();
605 vkCreateBuffer_VkResult_return = resources->on_vkCreateBuffer(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800606 return vkCreateBuffer_VkResult_return;
607}
608static void entry_vkDestroyBuffer(
609 VkDevice device,
610 VkBuffer buffer,
611 const VkAllocationCallbacks* pAllocator)
612{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800613 AEMU_SCOPED_TRACE("vkDestroyBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800614 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800615 auto resources = ResourceTracker::get();
616 resources->on_vkDestroyBuffer(vkEnc, device, buffer, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800617}
618static VkResult entry_vkCreateBufferView(
619 VkDevice device,
620 const VkBufferViewCreateInfo* pCreateInfo,
621 const VkAllocationCallbacks* pAllocator,
622 VkBufferView* pView)
623{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800624 AEMU_SCOPED_TRACE("vkCreateBufferView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800625 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800626 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800627 vkCreateBufferView_VkResult_return = vkEnc->vkCreateBufferView(device, pCreateInfo, pAllocator, pView, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800628 return vkCreateBufferView_VkResult_return;
629}
630static void entry_vkDestroyBufferView(
631 VkDevice device,
632 VkBufferView bufferView,
633 const VkAllocationCallbacks* pAllocator)
634{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800635 AEMU_SCOPED_TRACE("vkDestroyBufferView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800636 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800637 vkEnc->vkDestroyBufferView(device, bufferView, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800638}
639static VkResult entry_vkCreateImage(
640 VkDevice device,
641 const VkImageCreateInfo* pCreateInfo,
642 const VkAllocationCallbacks* pAllocator,
643 VkImage* pImage)
644{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800645 AEMU_SCOPED_TRACE("vkCreateImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800646 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800647 VkResult vkCreateImage_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800648 auto resources = ResourceTracker::get();
649 vkCreateImage_VkResult_return = resources->on_vkCreateImage(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pImage);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800650 return vkCreateImage_VkResult_return;
651}
652static void entry_vkDestroyImage(
653 VkDevice device,
654 VkImage image,
655 const VkAllocationCallbacks* pAllocator)
656{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800657 AEMU_SCOPED_TRACE("vkDestroyImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800658 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800659 auto resources = ResourceTracker::get();
660 resources->on_vkDestroyImage(vkEnc, device, image, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800661}
662static void entry_vkGetImageSubresourceLayout(
663 VkDevice device,
664 VkImage image,
665 const VkImageSubresource* pSubresource,
666 VkSubresourceLayout* pLayout)
667{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800668 AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800669 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800670 vkEnc->vkGetImageSubresourceLayout(device, image, pSubresource, pLayout, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800671}
672static VkResult entry_vkCreateImageView(
673 VkDevice device,
674 const VkImageViewCreateInfo* pCreateInfo,
675 const VkAllocationCallbacks* pAllocator,
676 VkImageView* pView)
677{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800678 AEMU_SCOPED_TRACE("vkCreateImageView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800679 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800680 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
Roman Kiryanov6db11e52019-04-26 14:18:14 -0700681 auto resources = ResourceTracker::get();
682 vkCreateImageView_VkResult_return = resources->on_vkCreateImageView(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pView);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800683 return vkCreateImageView_VkResult_return;
684}
685static void entry_vkDestroyImageView(
686 VkDevice device,
687 VkImageView imageView,
688 const VkAllocationCallbacks* pAllocator)
689{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800690 AEMU_SCOPED_TRACE("vkDestroyImageView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800691 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800692 vkEnc->vkDestroyImageView(device, imageView, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800693}
694static VkResult entry_vkCreateShaderModule(
695 VkDevice device,
696 const VkShaderModuleCreateInfo* pCreateInfo,
697 const VkAllocationCallbacks* pAllocator,
698 VkShaderModule* pShaderModule)
699{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800700 AEMU_SCOPED_TRACE("vkCreateShaderModule");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800701 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800702 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800703 vkCreateShaderModule_VkResult_return = vkEnc->vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800704 return vkCreateShaderModule_VkResult_return;
705}
706static void entry_vkDestroyShaderModule(
707 VkDevice device,
708 VkShaderModule shaderModule,
709 const VkAllocationCallbacks* pAllocator)
710{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800711 AEMU_SCOPED_TRACE("vkDestroyShaderModule");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800712 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800713 vkEnc->vkDestroyShaderModule(device, shaderModule, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800714}
715static VkResult entry_vkCreatePipelineCache(
716 VkDevice device,
717 const VkPipelineCacheCreateInfo* pCreateInfo,
718 const VkAllocationCallbacks* pAllocator,
719 VkPipelineCache* pPipelineCache)
720{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800721 AEMU_SCOPED_TRACE("vkCreatePipelineCache");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800722 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800723 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800724 vkCreatePipelineCache_VkResult_return = vkEnc->vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800725 return vkCreatePipelineCache_VkResult_return;
726}
727static void entry_vkDestroyPipelineCache(
728 VkDevice device,
729 VkPipelineCache pipelineCache,
730 const VkAllocationCallbacks* pAllocator)
731{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800732 AEMU_SCOPED_TRACE("vkDestroyPipelineCache");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800733 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800734 vkEnc->vkDestroyPipelineCache(device, pipelineCache, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800735}
736static VkResult entry_vkGetPipelineCacheData(
737 VkDevice device,
738 VkPipelineCache pipelineCache,
739 size_t* pDataSize,
740 void* pData)
741{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800742 AEMU_SCOPED_TRACE("vkGetPipelineCacheData");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800743 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800744 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800745 vkGetPipelineCacheData_VkResult_return = vkEnc->vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800746 return vkGetPipelineCacheData_VkResult_return;
747}
748static VkResult entry_vkMergePipelineCaches(
749 VkDevice device,
750 VkPipelineCache dstCache,
751 uint32_t srcCacheCount,
752 const VkPipelineCache* pSrcCaches)
753{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800754 AEMU_SCOPED_TRACE("vkMergePipelineCaches");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800755 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800756 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800757 vkMergePipelineCaches_VkResult_return = vkEnc->vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800758 return vkMergePipelineCaches_VkResult_return;
759}
760static VkResult entry_vkCreateGraphicsPipelines(
761 VkDevice device,
762 VkPipelineCache pipelineCache,
763 uint32_t createInfoCount,
764 const VkGraphicsPipelineCreateInfo* pCreateInfos,
765 const VkAllocationCallbacks* pAllocator,
766 VkPipeline* pPipelines)
767{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800768 AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800769 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800770 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800771 vkCreateGraphicsPipelines_VkResult_return = vkEnc->vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800772 return vkCreateGraphicsPipelines_VkResult_return;
773}
774static VkResult entry_vkCreateComputePipelines(
775 VkDevice device,
776 VkPipelineCache pipelineCache,
777 uint32_t createInfoCount,
778 const VkComputePipelineCreateInfo* pCreateInfos,
779 const VkAllocationCallbacks* pAllocator,
780 VkPipeline* pPipelines)
781{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800782 AEMU_SCOPED_TRACE("vkCreateComputePipelines");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800783 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800784 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800785 vkCreateComputePipelines_VkResult_return = vkEnc->vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800786 return vkCreateComputePipelines_VkResult_return;
787}
788static void entry_vkDestroyPipeline(
789 VkDevice device,
790 VkPipeline pipeline,
791 const VkAllocationCallbacks* pAllocator)
792{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800793 AEMU_SCOPED_TRACE("vkDestroyPipeline");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800794 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800795 vkEnc->vkDestroyPipeline(device, pipeline, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800796}
797static VkResult entry_vkCreatePipelineLayout(
798 VkDevice device,
799 const VkPipelineLayoutCreateInfo* pCreateInfo,
800 const VkAllocationCallbacks* pAllocator,
801 VkPipelineLayout* pPipelineLayout)
802{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800803 AEMU_SCOPED_TRACE("vkCreatePipelineLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800804 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800805 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800806 vkCreatePipelineLayout_VkResult_return = vkEnc->vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800807 return vkCreatePipelineLayout_VkResult_return;
808}
809static void entry_vkDestroyPipelineLayout(
810 VkDevice device,
811 VkPipelineLayout pipelineLayout,
812 const VkAllocationCallbacks* pAllocator)
813{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800814 AEMU_SCOPED_TRACE("vkDestroyPipelineLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800815 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800816 vkEnc->vkDestroyPipelineLayout(device, pipelineLayout, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800817}
818static VkResult entry_vkCreateSampler(
819 VkDevice device,
820 const VkSamplerCreateInfo* pCreateInfo,
821 const VkAllocationCallbacks* pAllocator,
822 VkSampler* pSampler)
823{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800824 AEMU_SCOPED_TRACE("vkCreateSampler");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800825 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800826 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
Roman Kiryanov004f48c2019-06-28 14:59:32 -0700827 auto resources = ResourceTracker::get();
828 vkCreateSampler_VkResult_return = resources->on_vkCreateSampler(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSampler);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800829 return vkCreateSampler_VkResult_return;
830}
831static void entry_vkDestroySampler(
832 VkDevice device,
833 VkSampler sampler,
834 const VkAllocationCallbacks* pAllocator)
835{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800836 AEMU_SCOPED_TRACE("vkDestroySampler");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800837 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800838 vkEnc->vkDestroySampler(device, sampler, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800839}
840static VkResult entry_vkCreateDescriptorSetLayout(
841 VkDevice device,
842 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
843 const VkAllocationCallbacks* pAllocator,
844 VkDescriptorSetLayout* pSetLayout)
845{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800846 AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800847 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800848 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
Lingfeng Yang03354c72020-03-26 13:00:51 -0700849 auto resources = ResourceTracker::get();
850 vkCreateDescriptorSetLayout_VkResult_return = resources->on_vkCreateDescriptorSetLayout(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSetLayout);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800851 return vkCreateDescriptorSetLayout_VkResult_return;
852}
853static void entry_vkDestroyDescriptorSetLayout(
854 VkDevice device,
855 VkDescriptorSetLayout descriptorSetLayout,
856 const VkAllocationCallbacks* pAllocator)
857{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800858 AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800859 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang55676e02021-02-08 08:39:45 -0800860 auto resources = ResourceTracker::get();
861 resources->on_vkDestroyDescriptorSetLayout(vkEnc, device, descriptorSetLayout, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800862}
863static VkResult entry_vkCreateDescriptorPool(
864 VkDevice device,
865 const VkDescriptorPoolCreateInfo* pCreateInfo,
866 const VkAllocationCallbacks* pAllocator,
867 VkDescriptorPool* pDescriptorPool)
868{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800869 AEMU_SCOPED_TRACE("vkCreateDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800870 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800871 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700872 auto resources = ResourceTracker::get();
873 vkCreateDescriptorPool_VkResult_return = resources->on_vkCreateDescriptorPool(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pDescriptorPool);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800874 return vkCreateDescriptorPool_VkResult_return;
875}
876static void entry_vkDestroyDescriptorPool(
877 VkDevice device,
878 VkDescriptorPool descriptorPool,
879 const VkAllocationCallbacks* pAllocator)
880{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800881 AEMU_SCOPED_TRACE("vkDestroyDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800882 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700883 auto resources = ResourceTracker::get();
884 resources->on_vkDestroyDescriptorPool(vkEnc, device, descriptorPool, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800885}
886static VkResult entry_vkResetDescriptorPool(
887 VkDevice device,
888 VkDescriptorPool descriptorPool,
889 VkDescriptorPoolResetFlags flags)
890{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800891 AEMU_SCOPED_TRACE("vkResetDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800892 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800893 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700894 auto resources = ResourceTracker::get();
895 vkResetDescriptorPool_VkResult_return = resources->on_vkResetDescriptorPool(vkEnc, VK_SUCCESS, device, descriptorPool, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800896 return vkResetDescriptorPool_VkResult_return;
897}
898static VkResult entry_vkAllocateDescriptorSets(
899 VkDevice device,
900 const VkDescriptorSetAllocateInfo* pAllocateInfo,
901 VkDescriptorSet* pDescriptorSets)
902{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800903 AEMU_SCOPED_TRACE("vkAllocateDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800904 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800905 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700906 auto resources = ResourceTracker::get();
907 vkAllocateDescriptorSets_VkResult_return = resources->on_vkAllocateDescriptorSets(vkEnc, VK_SUCCESS, device, pAllocateInfo, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800908 return vkAllocateDescriptorSets_VkResult_return;
909}
910static VkResult entry_vkFreeDescriptorSets(
911 VkDevice device,
912 VkDescriptorPool descriptorPool,
913 uint32_t descriptorSetCount,
914 const VkDescriptorSet* pDescriptorSets)
915{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800916 AEMU_SCOPED_TRACE("vkFreeDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800917 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800918 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700919 auto resources = ResourceTracker::get();
920 vkFreeDescriptorSets_VkResult_return = resources->on_vkFreeDescriptorSets(vkEnc, VK_SUCCESS, device, descriptorPool, descriptorSetCount, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800921 return vkFreeDescriptorSets_VkResult_return;
922}
923static void entry_vkUpdateDescriptorSets(
924 VkDevice device,
925 uint32_t descriptorWriteCount,
926 const VkWriteDescriptorSet* pDescriptorWrites,
927 uint32_t descriptorCopyCount,
928 const VkCopyDescriptorSet* pDescriptorCopies)
929{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800930 AEMU_SCOPED_TRACE("vkUpdateDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800931 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang03354c72020-03-26 13:00:51 -0700932 auto resources = ResourceTracker::get();
933 resources->on_vkUpdateDescriptorSets(vkEnc, device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800934}
935static VkResult entry_vkCreateFramebuffer(
936 VkDevice device,
937 const VkFramebufferCreateInfo* pCreateInfo,
938 const VkAllocationCallbacks* pAllocator,
939 VkFramebuffer* pFramebuffer)
940{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800941 AEMU_SCOPED_TRACE("vkCreateFramebuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800942 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800943 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800944 vkCreateFramebuffer_VkResult_return = vkEnc->vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800945 return vkCreateFramebuffer_VkResult_return;
946}
947static void entry_vkDestroyFramebuffer(
948 VkDevice device,
949 VkFramebuffer framebuffer,
950 const VkAllocationCallbacks* pAllocator)
951{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800952 AEMU_SCOPED_TRACE("vkDestroyFramebuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800953 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800954 vkEnc->vkDestroyFramebuffer(device, framebuffer, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800955}
956static VkResult entry_vkCreateRenderPass(
957 VkDevice device,
958 const VkRenderPassCreateInfo* pCreateInfo,
959 const VkAllocationCallbacks* pAllocator,
960 VkRenderPass* pRenderPass)
961{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800962 AEMU_SCOPED_TRACE("vkCreateRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800963 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800964 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800965 vkCreateRenderPass_VkResult_return = vkEnc->vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800966 return vkCreateRenderPass_VkResult_return;
967}
968static void entry_vkDestroyRenderPass(
969 VkDevice device,
970 VkRenderPass renderPass,
971 const VkAllocationCallbacks* pAllocator)
972{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800973 AEMU_SCOPED_TRACE("vkDestroyRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800974 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800975 vkEnc->vkDestroyRenderPass(device, renderPass, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800976}
977static void entry_vkGetRenderAreaGranularity(
978 VkDevice device,
979 VkRenderPass renderPass,
980 VkExtent2D* pGranularity)
981{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800982 AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800983 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800984 vkEnc->vkGetRenderAreaGranularity(device, renderPass, pGranularity, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800985}
986static VkResult entry_vkCreateCommandPool(
987 VkDevice device,
988 const VkCommandPoolCreateInfo* pCreateInfo,
989 const VkAllocationCallbacks* pAllocator,
990 VkCommandPool* pCommandPool)
991{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800992 AEMU_SCOPED_TRACE("vkCreateCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800993 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800994 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800995 vkCreateCommandPool_VkResult_return = vkEnc->vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800996 return vkCreateCommandPool_VkResult_return;
997}
998static void entry_vkDestroyCommandPool(
999 VkDevice device,
1000 VkCommandPool commandPool,
1001 const VkAllocationCallbacks* pAllocator)
1002{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001003 AEMU_SCOPED_TRACE("vkDestroyCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001004 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001005 vkEnc->vkDestroyCommandPool(device, commandPool, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001006}
1007static VkResult entry_vkResetCommandPool(
1008 VkDevice device,
1009 VkCommandPool commandPool,
1010 VkCommandPoolResetFlags flags)
1011{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001012 AEMU_SCOPED_TRACE("vkResetCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001013 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001014 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001015 vkResetCommandPool_VkResult_return = vkEnc->vkResetCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang4f539502021-01-22 23:01:57 -08001016 if (vkResetCommandPool_VkResult_return == VK_SUCCESS) {
1017 ResourceTracker::get()->resetCommandPoolStagingInfo(commandPool);
1018 }
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001019 return vkResetCommandPool_VkResult_return;
1020}
1021static VkResult entry_vkAllocateCommandBuffers(
1022 VkDevice device,
1023 const VkCommandBufferAllocateInfo* pAllocateInfo,
1024 VkCommandBuffer* pCommandBuffers)
1025{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001026 AEMU_SCOPED_TRACE("vkAllocateCommandBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001027 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001028 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
Lingfeng Yang97f51af2021-04-22 12:24:11 -07001029 auto resources = ResourceTracker::get();
1030 vkAllocateCommandBuffers_VkResult_return = resources->on_vkAllocateCommandBuffers(vkEnc, VK_SUCCESS, device, pAllocateInfo, pCommandBuffers);
Lingfeng Yang4f539502021-01-22 23:01:57 -08001031 if (vkAllocateCommandBuffers_VkResult_return == VK_SUCCESS) {
1032 ResourceTracker::get()->addToCommandPool(pAllocateInfo->commandPool, pAllocateInfo->commandBufferCount, pCommandBuffers);
1033 }
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001034 return vkAllocateCommandBuffers_VkResult_return;
1035}
1036static void entry_vkFreeCommandBuffers(
1037 VkDevice device,
1038 VkCommandPool commandPool,
1039 uint32_t commandBufferCount,
1040 const VkCommandBuffer* pCommandBuffers)
1041{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001042 AEMU_SCOPED_TRACE("vkFreeCommandBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001043 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001044 vkEnc->vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001045}
1046static VkResult entry_vkBeginCommandBuffer(
1047 VkCommandBuffer commandBuffer,
1048 const VkCommandBufferBeginInfo* pBeginInfo)
1049{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001050 AEMU_SCOPED_TRACE("vkBeginCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001051 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001052 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001053 auto resources = ResourceTracker::get();
1054 vkBeginCommandBuffer_VkResult_return = resources->on_vkBeginCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, pBeginInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001055 return vkBeginCommandBuffer_VkResult_return;
1056}
1057static VkResult entry_vkEndCommandBuffer(
1058 VkCommandBuffer commandBuffer)
1059{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001060 AEMU_SCOPED_TRACE("vkEndCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001061 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001062 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001063 auto resources = ResourceTracker::get();
1064 vkEndCommandBuffer_VkResult_return = resources->on_vkEndCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001065 return vkEndCommandBuffer_VkResult_return;
1066}
1067static VkResult entry_vkResetCommandBuffer(
1068 VkCommandBuffer commandBuffer,
1069 VkCommandBufferResetFlags flags)
1070{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001071 AEMU_SCOPED_TRACE("vkResetCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001072 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001073 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001074 auto resources = ResourceTracker::get();
1075 vkResetCommandBuffer_VkResult_return = resources->on_vkResetCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001076 return vkResetCommandBuffer_VkResult_return;
1077}
1078static void entry_vkCmdBindPipeline(
1079 VkCommandBuffer commandBuffer,
1080 VkPipelineBindPoint pipelineBindPoint,
1081 VkPipeline pipeline)
1082{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001083 AEMU_SCOPED_TRACE("vkCmdBindPipeline");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001084 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001085 vkEnc->vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001086}
1087static void entry_vkCmdSetViewport(
1088 VkCommandBuffer commandBuffer,
1089 uint32_t firstViewport,
1090 uint32_t viewportCount,
1091 const VkViewport* pViewports)
1092{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001093 AEMU_SCOPED_TRACE("vkCmdSetViewport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001094 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001095 vkEnc->vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001096}
1097static void entry_vkCmdSetScissor(
1098 VkCommandBuffer commandBuffer,
1099 uint32_t firstScissor,
1100 uint32_t scissorCount,
1101 const VkRect2D* pScissors)
1102{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001103 AEMU_SCOPED_TRACE("vkCmdSetScissor");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001104 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001105 vkEnc->vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001106}
1107static void entry_vkCmdSetLineWidth(
1108 VkCommandBuffer commandBuffer,
1109 float lineWidth)
1110{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001111 AEMU_SCOPED_TRACE("vkCmdSetLineWidth");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001112 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001113 vkEnc->vkCmdSetLineWidth(commandBuffer, lineWidth, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001114}
1115static void entry_vkCmdSetDepthBias(
1116 VkCommandBuffer commandBuffer,
1117 float depthBiasConstantFactor,
1118 float depthBiasClamp,
1119 float depthBiasSlopeFactor)
1120{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001121 AEMU_SCOPED_TRACE("vkCmdSetDepthBias");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001122 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001123 vkEnc->vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001124}
1125static void entry_vkCmdSetBlendConstants(
1126 VkCommandBuffer commandBuffer,
Lingfeng Yang97ddeb82019-04-20 14:32:52 -07001127 const float blendConstants[4])
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001128{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001129 AEMU_SCOPED_TRACE("vkCmdSetBlendConstants");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001130 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001131 vkEnc->vkCmdSetBlendConstants(commandBuffer, blendConstants, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001132}
1133static void entry_vkCmdSetDepthBounds(
1134 VkCommandBuffer commandBuffer,
1135 float minDepthBounds,
1136 float maxDepthBounds)
1137{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001138 AEMU_SCOPED_TRACE("vkCmdSetDepthBounds");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001139 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001140 vkEnc->vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001141}
1142static void entry_vkCmdSetStencilCompareMask(
1143 VkCommandBuffer commandBuffer,
1144 VkStencilFaceFlags faceMask,
1145 uint32_t compareMask)
1146{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001147 AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001148 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001149 vkEnc->vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001150}
1151static void entry_vkCmdSetStencilWriteMask(
1152 VkCommandBuffer commandBuffer,
1153 VkStencilFaceFlags faceMask,
1154 uint32_t writeMask)
1155{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001156 AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001157 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001158 vkEnc->vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001159}
1160static void entry_vkCmdSetStencilReference(
1161 VkCommandBuffer commandBuffer,
1162 VkStencilFaceFlags faceMask,
1163 uint32_t reference)
1164{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001165 AEMU_SCOPED_TRACE("vkCmdSetStencilReference");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001166 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001167 vkEnc->vkCmdSetStencilReference(commandBuffer, faceMask, reference, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001168}
1169static void entry_vkCmdBindDescriptorSets(
1170 VkCommandBuffer commandBuffer,
1171 VkPipelineBindPoint pipelineBindPoint,
1172 VkPipelineLayout layout,
1173 uint32_t firstSet,
1174 uint32_t descriptorSetCount,
1175 const VkDescriptorSet* pDescriptorSets,
1176 uint32_t dynamicOffsetCount,
1177 const uint32_t* pDynamicOffsets)
1178{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001179 AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001180 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang55676e02021-02-08 08:39:45 -08001181 auto resources = ResourceTracker::get();
1182 resources->on_vkCmdBindDescriptorSets(vkEnc, commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001183}
1184static void entry_vkCmdBindIndexBuffer(
1185 VkCommandBuffer commandBuffer,
1186 VkBuffer buffer,
1187 VkDeviceSize offset,
1188 VkIndexType indexType)
1189{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001190 AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001191 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001192 vkEnc->vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001193}
1194static void entry_vkCmdBindVertexBuffers(
1195 VkCommandBuffer commandBuffer,
1196 uint32_t firstBinding,
1197 uint32_t bindingCount,
1198 const VkBuffer* pBuffers,
1199 const VkDeviceSize* pOffsets)
1200{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001201 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001202 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001203 vkEnc->vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001204}
1205static void entry_vkCmdDraw(
1206 VkCommandBuffer commandBuffer,
1207 uint32_t vertexCount,
1208 uint32_t instanceCount,
1209 uint32_t firstVertex,
1210 uint32_t firstInstance)
1211{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001212 AEMU_SCOPED_TRACE("vkCmdDraw");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001213 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001214 vkEnc->vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001215}
1216static void entry_vkCmdDrawIndexed(
1217 VkCommandBuffer commandBuffer,
1218 uint32_t indexCount,
1219 uint32_t instanceCount,
1220 uint32_t firstIndex,
1221 int32_t vertexOffset,
1222 uint32_t firstInstance)
1223{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001224 AEMU_SCOPED_TRACE("vkCmdDrawIndexed");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001225 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001226 vkEnc->vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001227}
1228static void entry_vkCmdDrawIndirect(
1229 VkCommandBuffer commandBuffer,
1230 VkBuffer buffer,
1231 VkDeviceSize offset,
1232 uint32_t drawCount,
1233 uint32_t stride)
1234{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001235 AEMU_SCOPED_TRACE("vkCmdDrawIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001236 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001237 vkEnc->vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001238}
1239static void entry_vkCmdDrawIndexedIndirect(
1240 VkCommandBuffer commandBuffer,
1241 VkBuffer buffer,
1242 VkDeviceSize offset,
1243 uint32_t drawCount,
1244 uint32_t stride)
1245{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001246 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001247 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001248 vkEnc->vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001249}
1250static void entry_vkCmdDispatch(
1251 VkCommandBuffer commandBuffer,
1252 uint32_t groupCountX,
1253 uint32_t groupCountY,
1254 uint32_t groupCountZ)
1255{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001256 AEMU_SCOPED_TRACE("vkCmdDispatch");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001257 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001258 vkEnc->vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001259}
1260static void entry_vkCmdDispatchIndirect(
1261 VkCommandBuffer commandBuffer,
1262 VkBuffer buffer,
1263 VkDeviceSize offset)
1264{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001265 AEMU_SCOPED_TRACE("vkCmdDispatchIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001266 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001267 vkEnc->vkCmdDispatchIndirect(commandBuffer, buffer, offset, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001268}
1269static void entry_vkCmdCopyBuffer(
1270 VkCommandBuffer commandBuffer,
1271 VkBuffer srcBuffer,
1272 VkBuffer dstBuffer,
1273 uint32_t regionCount,
1274 const VkBufferCopy* pRegions)
1275{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001276 AEMU_SCOPED_TRACE("vkCmdCopyBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001277 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001278 vkEnc->vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001279}
1280static void entry_vkCmdCopyImage(
1281 VkCommandBuffer commandBuffer,
1282 VkImage srcImage,
1283 VkImageLayout srcImageLayout,
1284 VkImage dstImage,
1285 VkImageLayout dstImageLayout,
1286 uint32_t regionCount,
1287 const VkImageCopy* pRegions)
1288{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001289 AEMU_SCOPED_TRACE("vkCmdCopyImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001290 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001291 vkEnc->vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001292}
1293static void entry_vkCmdBlitImage(
1294 VkCommandBuffer commandBuffer,
1295 VkImage srcImage,
1296 VkImageLayout srcImageLayout,
1297 VkImage dstImage,
1298 VkImageLayout dstImageLayout,
1299 uint32_t regionCount,
1300 const VkImageBlit* pRegions,
1301 VkFilter filter)
1302{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001303 AEMU_SCOPED_TRACE("vkCmdBlitImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001304 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001305 vkEnc->vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001306}
1307static void entry_vkCmdCopyBufferToImage(
1308 VkCommandBuffer commandBuffer,
1309 VkBuffer srcBuffer,
1310 VkImage dstImage,
1311 VkImageLayout dstImageLayout,
1312 uint32_t regionCount,
1313 const VkBufferImageCopy* pRegions)
1314{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001315 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001316 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001317 vkEnc->vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001318}
1319static void entry_vkCmdCopyImageToBuffer(
1320 VkCommandBuffer commandBuffer,
1321 VkImage srcImage,
1322 VkImageLayout srcImageLayout,
1323 VkBuffer dstBuffer,
1324 uint32_t regionCount,
1325 const VkBufferImageCopy* pRegions)
1326{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001327 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001328 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001329 vkEnc->vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001330}
1331static void entry_vkCmdUpdateBuffer(
1332 VkCommandBuffer commandBuffer,
1333 VkBuffer dstBuffer,
1334 VkDeviceSize dstOffset,
1335 VkDeviceSize dataSize,
1336 const void* pData)
1337{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001338 AEMU_SCOPED_TRACE("vkCmdUpdateBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001339 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001340 vkEnc->vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001341}
1342static void entry_vkCmdFillBuffer(
1343 VkCommandBuffer commandBuffer,
1344 VkBuffer dstBuffer,
1345 VkDeviceSize dstOffset,
1346 VkDeviceSize size,
1347 uint32_t data)
1348{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001349 AEMU_SCOPED_TRACE("vkCmdFillBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001350 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001351 vkEnc->vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001352}
1353static void entry_vkCmdClearColorImage(
1354 VkCommandBuffer commandBuffer,
1355 VkImage image,
1356 VkImageLayout imageLayout,
1357 const VkClearColorValue* pColor,
1358 uint32_t rangeCount,
1359 const VkImageSubresourceRange* pRanges)
1360{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001361 AEMU_SCOPED_TRACE("vkCmdClearColorImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001362 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001363 vkEnc->vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001364}
1365static void entry_vkCmdClearDepthStencilImage(
1366 VkCommandBuffer commandBuffer,
1367 VkImage image,
1368 VkImageLayout imageLayout,
1369 const VkClearDepthStencilValue* pDepthStencil,
1370 uint32_t rangeCount,
1371 const VkImageSubresourceRange* pRanges)
1372{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001373 AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001374 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001375 vkEnc->vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001376}
1377static void entry_vkCmdClearAttachments(
1378 VkCommandBuffer commandBuffer,
1379 uint32_t attachmentCount,
1380 const VkClearAttachment* pAttachments,
1381 uint32_t rectCount,
1382 const VkClearRect* pRects)
1383{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001384 AEMU_SCOPED_TRACE("vkCmdClearAttachments");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001385 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001386 vkEnc->vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001387}
1388static void entry_vkCmdResolveImage(
1389 VkCommandBuffer commandBuffer,
1390 VkImage srcImage,
1391 VkImageLayout srcImageLayout,
1392 VkImage dstImage,
1393 VkImageLayout dstImageLayout,
1394 uint32_t regionCount,
1395 const VkImageResolve* pRegions)
1396{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001397 AEMU_SCOPED_TRACE("vkCmdResolveImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001398 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001399 vkEnc->vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001400}
1401static void entry_vkCmdSetEvent(
1402 VkCommandBuffer commandBuffer,
1403 VkEvent event,
1404 VkPipelineStageFlags stageMask)
1405{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001406 AEMU_SCOPED_TRACE("vkCmdSetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001407 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001408 vkEnc->vkCmdSetEvent(commandBuffer, event, stageMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001409}
1410static void entry_vkCmdResetEvent(
1411 VkCommandBuffer commandBuffer,
1412 VkEvent event,
1413 VkPipelineStageFlags stageMask)
1414{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001415 AEMU_SCOPED_TRACE("vkCmdResetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001416 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001417 vkEnc->vkCmdResetEvent(commandBuffer, event, stageMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001418}
1419static void entry_vkCmdWaitEvents(
1420 VkCommandBuffer commandBuffer,
1421 uint32_t eventCount,
1422 const VkEvent* pEvents,
1423 VkPipelineStageFlags srcStageMask,
1424 VkPipelineStageFlags dstStageMask,
1425 uint32_t memoryBarrierCount,
1426 const VkMemoryBarrier* pMemoryBarriers,
1427 uint32_t bufferMemoryBarrierCount,
1428 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1429 uint32_t imageMemoryBarrierCount,
1430 const VkImageMemoryBarrier* pImageMemoryBarriers)
1431{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001432 AEMU_SCOPED_TRACE("vkCmdWaitEvents");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001433 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001434 vkEnc->vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001435}
1436static void entry_vkCmdPipelineBarrier(
1437 VkCommandBuffer commandBuffer,
1438 VkPipelineStageFlags srcStageMask,
1439 VkPipelineStageFlags dstStageMask,
1440 VkDependencyFlags dependencyFlags,
1441 uint32_t memoryBarrierCount,
1442 const VkMemoryBarrier* pMemoryBarriers,
1443 uint32_t bufferMemoryBarrierCount,
1444 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1445 uint32_t imageMemoryBarrierCount,
1446 const VkImageMemoryBarrier* pImageMemoryBarriers)
1447{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001448 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001449 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001450 vkEnc->vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001451}
1452static void entry_vkCmdBeginQuery(
1453 VkCommandBuffer commandBuffer,
1454 VkQueryPool queryPool,
1455 uint32_t query,
1456 VkQueryControlFlags flags)
1457{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001458 AEMU_SCOPED_TRACE("vkCmdBeginQuery");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001459 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001460 vkEnc->vkCmdBeginQuery(commandBuffer, queryPool, query, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001461}
1462static void entry_vkCmdEndQuery(
1463 VkCommandBuffer commandBuffer,
1464 VkQueryPool queryPool,
1465 uint32_t query)
1466{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001467 AEMU_SCOPED_TRACE("vkCmdEndQuery");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001468 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001469 vkEnc->vkCmdEndQuery(commandBuffer, queryPool, query, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001470}
1471static void entry_vkCmdResetQueryPool(
1472 VkCommandBuffer commandBuffer,
1473 VkQueryPool queryPool,
1474 uint32_t firstQuery,
1475 uint32_t queryCount)
1476{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001477 AEMU_SCOPED_TRACE("vkCmdResetQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001478 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001479 vkEnc->vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001480}
1481static void entry_vkCmdWriteTimestamp(
1482 VkCommandBuffer commandBuffer,
1483 VkPipelineStageFlagBits pipelineStage,
1484 VkQueryPool queryPool,
1485 uint32_t query)
1486{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001487 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001488 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001489 vkEnc->vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001490}
1491static void entry_vkCmdCopyQueryPoolResults(
1492 VkCommandBuffer commandBuffer,
1493 VkQueryPool queryPool,
1494 uint32_t firstQuery,
1495 uint32_t queryCount,
1496 VkBuffer dstBuffer,
1497 VkDeviceSize dstOffset,
1498 VkDeviceSize stride,
1499 VkQueryResultFlags flags)
1500{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001501 AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001502 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001503 vkEnc->vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001504}
1505static void entry_vkCmdPushConstants(
1506 VkCommandBuffer commandBuffer,
1507 VkPipelineLayout layout,
1508 VkShaderStageFlags stageFlags,
1509 uint32_t offset,
1510 uint32_t size,
1511 const void* pValues)
1512{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001513 AEMU_SCOPED_TRACE("vkCmdPushConstants");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001514 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001515 vkEnc->vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001516}
1517static void entry_vkCmdBeginRenderPass(
1518 VkCommandBuffer commandBuffer,
1519 const VkRenderPassBeginInfo* pRenderPassBegin,
1520 VkSubpassContents contents)
1521{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001522 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001523 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001524 vkEnc->vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001525}
1526static void entry_vkCmdNextSubpass(
1527 VkCommandBuffer commandBuffer,
1528 VkSubpassContents contents)
1529{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001530 AEMU_SCOPED_TRACE("vkCmdNextSubpass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001531 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001532 vkEnc->vkCmdNextSubpass(commandBuffer, contents, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001533}
1534static void entry_vkCmdEndRenderPass(
1535 VkCommandBuffer commandBuffer)
1536{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001537 AEMU_SCOPED_TRACE("vkCmdEndRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001538 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001539 vkEnc->vkCmdEndRenderPass(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001540}
1541static void entry_vkCmdExecuteCommands(
1542 VkCommandBuffer commandBuffer,
1543 uint32_t commandBufferCount,
1544 const VkCommandBuffer* pCommandBuffers)
1545{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001546 AEMU_SCOPED_TRACE("vkCmdExecuteCommands");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001547 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1548 auto resources = ResourceTracker::get();
1549 resources->on_vkCmdExecuteCommands(vkEnc, commandBuffer, commandBufferCount, pCommandBuffers);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001550}
1551#endif
1552#ifdef VK_VERSION_1_1
1553static VkResult entry_vkEnumerateInstanceVersion(
1554 uint32_t* pApiVersion)
1555{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001556 AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001557 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001558 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001559 vkEnumerateInstanceVersion_VkResult_return = vkEnc->vkEnumerateInstanceVersion(pApiVersion, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001560 return vkEnumerateInstanceVersion_VkResult_return;
1561}
1562static VkResult entry_vkBindBufferMemory2(
1563 VkDevice device,
1564 uint32_t bindInfoCount,
1565 const VkBindBufferMemoryInfo* pBindInfos)
1566{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001567 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001568 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001569 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001570 auto resources = ResourceTracker::get();
1571 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001572 return vkBindBufferMemory2_VkResult_return;
1573}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001574static VkResult dynCheck_entry_vkBindBufferMemory2(
1575 VkDevice device,
1576 uint32_t bindInfoCount,
1577 const VkBindBufferMemoryInfo* pBindInfos)
1578{
1579 auto resources = ResourceTracker::get();
1580 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1581 {
1582 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2", "VK_VERSION_1_1");
1583 }
1584 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001585 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001586 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
1587 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1588 return vkBindBufferMemory2_VkResult_return;
1589}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001590static VkResult entry_vkBindImageMemory2(
1591 VkDevice device,
1592 uint32_t bindInfoCount,
1593 const VkBindImageMemoryInfo* pBindInfos)
1594{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001595 AEMU_SCOPED_TRACE("vkBindImageMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001596 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001597 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001598 auto resources = ResourceTracker::get();
1599 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001600 return vkBindImageMemory2_VkResult_return;
1601}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001602static VkResult dynCheck_entry_vkBindImageMemory2(
1603 VkDevice device,
1604 uint32_t bindInfoCount,
1605 const VkBindImageMemoryInfo* pBindInfos)
1606{
1607 auto resources = ResourceTracker::get();
1608 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1609 {
1610 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2", "VK_VERSION_1_1");
1611 }
1612 AEMU_SCOPED_TRACE("vkBindImageMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001613 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001614 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
1615 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1616 return vkBindImageMemory2_VkResult_return;
1617}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001618static void entry_vkGetDeviceGroupPeerMemoryFeatures(
1619 VkDevice device,
1620 uint32_t heapIndex,
1621 uint32_t localDeviceIndex,
1622 uint32_t remoteDeviceIndex,
1623 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1624{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001625 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001626 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001627 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001628}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001629static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures(
1630 VkDevice device,
1631 uint32_t heapIndex,
1632 uint32_t localDeviceIndex,
1633 uint32_t remoteDeviceIndex,
1634 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1635{
1636 auto resources = ResourceTracker::get();
1637 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1638 {
1639 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeatures", "VK_VERSION_1_1");
1640 }
1641 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001642 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001643 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001644}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001645static void entry_vkCmdSetDeviceMask(
1646 VkCommandBuffer commandBuffer,
1647 uint32_t deviceMask)
1648{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001649 AEMU_SCOPED_TRACE("vkCmdSetDeviceMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001650 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001651 vkEnc->vkCmdSetDeviceMask(commandBuffer, deviceMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001652}
1653static void entry_vkCmdDispatchBase(
1654 VkCommandBuffer commandBuffer,
1655 uint32_t baseGroupX,
1656 uint32_t baseGroupY,
1657 uint32_t baseGroupZ,
1658 uint32_t groupCountX,
1659 uint32_t groupCountY,
1660 uint32_t groupCountZ)
1661{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001662 AEMU_SCOPED_TRACE("vkCmdDispatchBase");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001663 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001664 vkEnc->vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001665}
1666static VkResult entry_vkEnumeratePhysicalDeviceGroups(
1667 VkInstance instance,
1668 uint32_t* pPhysicalDeviceGroupCount,
1669 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
1670{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001671 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001672 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001673 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001674 vkEnumeratePhysicalDeviceGroups_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001675 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
1676}
1677static void entry_vkGetImageMemoryRequirements2(
1678 VkDevice device,
1679 const VkImageMemoryRequirementsInfo2* pInfo,
1680 VkMemoryRequirements2* pMemoryRequirements)
1681{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001682 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001683 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001684 auto resources = ResourceTracker::get();
1685 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001686}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001687static void dynCheck_entry_vkGetImageMemoryRequirements2(
1688 VkDevice device,
1689 const VkImageMemoryRequirementsInfo2* pInfo,
1690 VkMemoryRequirements2* pMemoryRequirements)
1691{
1692 auto resources = ResourceTracker::get();
1693 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1694 {
1695 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2", "VK_VERSION_1_1");
1696 }
1697 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001698 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001699 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1700}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001701static void entry_vkGetBufferMemoryRequirements2(
1702 VkDevice device,
1703 const VkBufferMemoryRequirementsInfo2* pInfo,
1704 VkMemoryRequirements2* pMemoryRequirements)
1705{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001706 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001707 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001708 auto resources = ResourceTracker::get();
1709 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001710}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001711static void dynCheck_entry_vkGetBufferMemoryRequirements2(
1712 VkDevice device,
1713 const VkBufferMemoryRequirementsInfo2* pInfo,
1714 VkMemoryRequirements2* pMemoryRequirements)
1715{
1716 auto resources = ResourceTracker::get();
1717 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1718 {
1719 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2", "VK_VERSION_1_1");
1720 }
1721 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001722 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001723 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1724}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001725static void entry_vkGetImageSparseMemoryRequirements2(
1726 VkDevice device,
1727 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1728 uint32_t* pSparseMemoryRequirementCount,
1729 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1730{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001731 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001732 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001733 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001734}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001735static void dynCheck_entry_vkGetImageSparseMemoryRequirements2(
1736 VkDevice device,
1737 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1738 uint32_t* pSparseMemoryRequirementCount,
1739 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1740{
1741 auto resources = ResourceTracker::get();
1742 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1743 {
1744 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2", "VK_VERSION_1_1");
1745 }
1746 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001747 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001748 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001749}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001750static void entry_vkGetPhysicalDeviceFeatures2(
1751 VkPhysicalDevice physicalDevice,
1752 VkPhysicalDeviceFeatures2* pFeatures)
1753{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001754 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001755 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001756 vkEnc->vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001757}
1758static void entry_vkGetPhysicalDeviceProperties2(
1759 VkPhysicalDevice physicalDevice,
1760 VkPhysicalDeviceProperties2* pProperties)
1761{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001762 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001763 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001764 vkEnc->vkGetPhysicalDeviceProperties2(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001765}
1766static void entry_vkGetPhysicalDeviceFormatProperties2(
1767 VkPhysicalDevice physicalDevice,
1768 VkFormat format,
1769 VkFormatProperties2* pFormatProperties)
1770{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001771 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001772 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001773 vkEnc->vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001774}
1775static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2(
1776 VkPhysicalDevice physicalDevice,
1777 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
1778 VkImageFormatProperties2* pImageFormatProperties)
1779{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001780 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001781 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001782 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07001783 auto resources = ResourceTracker::get();
1784 vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001785 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
1786}
1787static void entry_vkGetPhysicalDeviceQueueFamilyProperties2(
1788 VkPhysicalDevice physicalDevice,
1789 uint32_t* pQueueFamilyPropertyCount,
1790 VkQueueFamilyProperties2* pQueueFamilyProperties)
1791{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001792 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001793 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001794 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001795}
1796static void entry_vkGetPhysicalDeviceMemoryProperties2(
1797 VkPhysicalDevice physicalDevice,
1798 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
1799{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001800 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001801 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001802 vkEnc->vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001803}
1804static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2(
1805 VkPhysicalDevice physicalDevice,
1806 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
1807 uint32_t* pPropertyCount,
1808 VkSparseImageFormatProperties2* pProperties)
1809{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001810 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001811 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001812 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001813}
1814static void entry_vkTrimCommandPool(
1815 VkDevice device,
1816 VkCommandPool commandPool,
1817 VkCommandPoolTrimFlags flags)
1818{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001819 AEMU_SCOPED_TRACE("vkTrimCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001820 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001821 vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001822}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001823static void dynCheck_entry_vkTrimCommandPool(
1824 VkDevice device,
1825 VkCommandPool commandPool,
1826 VkCommandPoolTrimFlags flags)
1827{
1828 auto resources = ResourceTracker::get();
1829 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1830 {
1831 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPool", "VK_VERSION_1_1");
1832 }
1833 AEMU_SCOPED_TRACE("vkTrimCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001834 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001835 vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001836}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001837static void entry_vkGetDeviceQueue2(
1838 VkDevice device,
1839 const VkDeviceQueueInfo2* pQueueInfo,
1840 VkQueue* pQueue)
1841{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001842 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001843 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001844 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001845}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001846static void dynCheck_entry_vkGetDeviceQueue2(
1847 VkDevice device,
1848 const VkDeviceQueueInfo2* pQueueInfo,
1849 VkQueue* pQueue)
1850{
1851 auto resources = ResourceTracker::get();
1852 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1853 {
1854 sOnInvalidDynamicallyCheckedCall("vkGetDeviceQueue2", "VK_VERSION_1_1");
1855 }
1856 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001857 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001858 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001859}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001860static VkResult entry_vkCreateSamplerYcbcrConversion(
1861 VkDevice device,
1862 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1863 const VkAllocationCallbacks* pAllocator,
1864 VkSamplerYcbcrConversion* pYcbcrConversion)
1865{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001866 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001867 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001868 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08001869 auto resources = ResourceTracker::get();
1870 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001871 return vkCreateSamplerYcbcrConversion_VkResult_return;
1872}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001873static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversion(
1874 VkDevice device,
1875 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1876 const VkAllocationCallbacks* pAllocator,
1877 VkSamplerYcbcrConversion* pYcbcrConversion)
1878{
1879 auto resources = ResourceTracker::get();
1880 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1881 {
1882 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversion", "VK_VERSION_1_1");
1883 }
1884 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001885 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001886 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
1887 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
1888 return vkCreateSamplerYcbcrConversion_VkResult_return;
1889}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001890static void entry_vkDestroySamplerYcbcrConversion(
1891 VkDevice device,
1892 VkSamplerYcbcrConversion ycbcrConversion,
1893 const VkAllocationCallbacks* pAllocator)
1894{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001895 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001896 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07001897 auto resources = ResourceTracker::get();
1898 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001899}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001900static void dynCheck_entry_vkDestroySamplerYcbcrConversion(
1901 VkDevice device,
1902 VkSamplerYcbcrConversion ycbcrConversion,
1903 const VkAllocationCallbacks* pAllocator)
1904{
1905 auto resources = ResourceTracker::get();
1906 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1907 {
1908 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversion", "VK_VERSION_1_1");
1909 }
1910 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001911 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001912 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
1913}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001914static VkResult entry_vkCreateDescriptorUpdateTemplate(
1915 VkDevice device,
1916 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1917 const VkAllocationCallbacks* pAllocator,
1918 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1919{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001920 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001921 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001922 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001923 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001924 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1925}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001926static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplate(
1927 VkDevice device,
1928 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1929 const VkAllocationCallbacks* pAllocator,
1930 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1931{
1932 auto resources = ResourceTracker::get();
1933 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1934 {
1935 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplate", "VK_VERSION_1_1");
1936 }
1937 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001938 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001939 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001940 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001941 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1942}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001943static void entry_vkDestroyDescriptorUpdateTemplate(
1944 VkDevice device,
1945 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1946 const VkAllocationCallbacks* pAllocator)
1947{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001948 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001949 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001950 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001951}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001952static void dynCheck_entry_vkDestroyDescriptorUpdateTemplate(
1953 VkDevice device,
1954 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1955 const VkAllocationCallbacks* pAllocator)
1956{
1957 auto resources = ResourceTracker::get();
1958 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1959 {
1960 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplate", "VK_VERSION_1_1");
1961 }
1962 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001963 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001964 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001965}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001966static void entry_vkUpdateDescriptorSetWithTemplate(
1967 VkDevice device,
1968 VkDescriptorSet descriptorSet,
1969 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1970 const void* pData)
1971{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001972 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001973 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07001974 auto resources = ResourceTracker::get();
1975 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001976}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001977static void dynCheck_entry_vkUpdateDescriptorSetWithTemplate(
1978 VkDevice device,
1979 VkDescriptorSet descriptorSet,
1980 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1981 const void* pData)
1982{
1983 auto resources = ResourceTracker::get();
1984 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1985 {
1986 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplate", "VK_VERSION_1_1");
1987 }
1988 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001989 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001990 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
1991}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001992static void entry_vkGetPhysicalDeviceExternalBufferProperties(
1993 VkPhysicalDevice physicalDevice,
1994 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
1995 VkExternalBufferProperties* pExternalBufferProperties)
1996{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001997 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001998 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001999 vkEnc->vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002000}
2001static void entry_vkGetPhysicalDeviceExternalFenceProperties(
2002 VkPhysicalDevice physicalDevice,
2003 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
2004 VkExternalFenceProperties* pExternalFenceProperties)
2005{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002006 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002007 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07002008 auto resources = ResourceTracker::get();
2009 resources->on_vkGetPhysicalDeviceExternalFenceProperties(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002010}
2011static void entry_vkGetPhysicalDeviceExternalSemaphoreProperties(
2012 VkPhysicalDevice physicalDevice,
2013 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2014 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
2015{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002016 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002017 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002018 vkEnc->vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002019}
2020static void entry_vkGetDescriptorSetLayoutSupport(
2021 VkDevice device,
2022 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2023 VkDescriptorSetLayoutSupport* pSupport)
2024{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002025 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002026 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002027 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002028}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002029static void dynCheck_entry_vkGetDescriptorSetLayoutSupport(
2030 VkDevice device,
2031 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2032 VkDescriptorSetLayoutSupport* pSupport)
2033{
2034 auto resources = ResourceTracker::get();
2035 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2036 {
2037 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupport", "VK_VERSION_1_1");
2038 }
2039 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002040 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002041 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002042}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002043#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08002044#ifdef VK_VERSION_1_2
2045static void entry_vkCmdDrawIndirectCount(
2046 VkCommandBuffer commandBuffer,
2047 VkBuffer buffer,
2048 VkDeviceSize offset,
2049 VkBuffer countBuffer,
2050 VkDeviceSize countBufferOffset,
2051 uint32_t maxDrawCount,
2052 uint32_t stride)
2053{
2054 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCount");
2055 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2056 vkEnc->vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
2057}
2058static void entry_vkCmdDrawIndexedIndirectCount(
2059 VkCommandBuffer commandBuffer,
2060 VkBuffer buffer,
2061 VkDeviceSize offset,
2062 VkBuffer countBuffer,
2063 VkDeviceSize countBufferOffset,
2064 uint32_t maxDrawCount,
2065 uint32_t stride)
2066{
2067 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCount");
2068 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2069 vkEnc->vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
2070}
2071static VkResult entry_vkCreateRenderPass2(
2072 VkDevice device,
2073 const VkRenderPassCreateInfo2* pCreateInfo,
2074 const VkAllocationCallbacks* pAllocator,
2075 VkRenderPass* pRenderPass)
2076{
2077 AEMU_SCOPED_TRACE("vkCreateRenderPass2");
2078 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2079 VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
2080 vkCreateRenderPass2_VkResult_return = vkEnc->vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
2081 return vkCreateRenderPass2_VkResult_return;
2082}
2083static VkResult dynCheck_entry_vkCreateRenderPass2(
2084 VkDevice device,
2085 const VkRenderPassCreateInfo2* pCreateInfo,
2086 const VkAllocationCallbacks* pAllocator,
2087 VkRenderPass* pRenderPass)
2088{
2089 auto resources = ResourceTracker::get();
2090 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2091 {
2092 sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2", "VK_VERSION_1_2");
2093 }
2094 AEMU_SCOPED_TRACE("vkCreateRenderPass2");
2095 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2096 VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
2097 vkCreateRenderPass2_VkResult_return = vkEnc->vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
2098 return vkCreateRenderPass2_VkResult_return;
2099}
2100static void entry_vkCmdBeginRenderPass2(
2101 VkCommandBuffer commandBuffer,
2102 const VkRenderPassBeginInfo* pRenderPassBegin,
2103 const VkSubpassBeginInfo* pSubpassBeginInfo)
2104{
2105 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2");
2106 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2107 vkEnc->vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
2108}
2109static void entry_vkCmdNextSubpass2(
2110 VkCommandBuffer commandBuffer,
2111 const VkSubpassBeginInfo* pSubpassBeginInfo,
2112 const VkSubpassEndInfo* pSubpassEndInfo)
2113{
2114 AEMU_SCOPED_TRACE("vkCmdNextSubpass2");
2115 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2116 vkEnc->vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
2117}
2118static void entry_vkCmdEndRenderPass2(
2119 VkCommandBuffer commandBuffer,
2120 const VkSubpassEndInfo* pSubpassEndInfo)
2121{
2122 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2");
2123 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2124 vkEnc->vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo, true /* do lock */);
2125}
2126static void entry_vkResetQueryPool(
2127 VkDevice device,
2128 VkQueryPool queryPool,
2129 uint32_t firstQuery,
2130 uint32_t queryCount)
2131{
2132 AEMU_SCOPED_TRACE("vkResetQueryPool");
2133 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2134 vkEnc->vkResetQueryPool(device, queryPool, firstQuery, queryCount, true /* do lock */);
2135}
2136static void dynCheck_entry_vkResetQueryPool(
2137 VkDevice device,
2138 VkQueryPool queryPool,
2139 uint32_t firstQuery,
2140 uint32_t queryCount)
2141{
2142 auto resources = ResourceTracker::get();
2143 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2144 {
2145 sOnInvalidDynamicallyCheckedCall("vkResetQueryPool", "VK_VERSION_1_2");
2146 }
2147 AEMU_SCOPED_TRACE("vkResetQueryPool");
2148 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2149 vkEnc->vkResetQueryPool(device, queryPool, firstQuery, queryCount, true /* do lock */);
2150}
2151static VkResult entry_vkGetSemaphoreCounterValue(
2152 VkDevice device,
2153 VkSemaphore semaphore,
2154 uint64_t* pValue)
2155{
2156 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValue");
2157 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2158 VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
2159 vkGetSemaphoreCounterValue_VkResult_return = vkEnc->vkGetSemaphoreCounterValue(device, semaphore, pValue, true /* do lock */);
2160 return vkGetSemaphoreCounterValue_VkResult_return;
2161}
2162static VkResult dynCheck_entry_vkGetSemaphoreCounterValue(
2163 VkDevice device,
2164 VkSemaphore semaphore,
2165 uint64_t* pValue)
2166{
2167 auto resources = ResourceTracker::get();
2168 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2169 {
2170 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreCounterValue", "VK_VERSION_1_2");
2171 }
2172 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValue");
2173 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2174 VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
2175 vkGetSemaphoreCounterValue_VkResult_return = vkEnc->vkGetSemaphoreCounterValue(device, semaphore, pValue, true /* do lock */);
2176 return vkGetSemaphoreCounterValue_VkResult_return;
2177}
2178static VkResult entry_vkWaitSemaphores(
2179 VkDevice device,
2180 const VkSemaphoreWaitInfo* pWaitInfo,
2181 uint64_t timeout)
2182{
2183 AEMU_SCOPED_TRACE("vkWaitSemaphores");
2184 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2185 VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
2186 vkWaitSemaphores_VkResult_return = vkEnc->vkWaitSemaphores(device, pWaitInfo, timeout, true /* do lock */);
2187 return vkWaitSemaphores_VkResult_return;
2188}
2189static VkResult dynCheck_entry_vkWaitSemaphores(
2190 VkDevice device,
2191 const VkSemaphoreWaitInfo* pWaitInfo,
2192 uint64_t timeout)
2193{
2194 auto resources = ResourceTracker::get();
2195 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2196 {
2197 sOnInvalidDynamicallyCheckedCall("vkWaitSemaphores", "VK_VERSION_1_2");
2198 }
2199 AEMU_SCOPED_TRACE("vkWaitSemaphores");
2200 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2201 VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
2202 vkWaitSemaphores_VkResult_return = vkEnc->vkWaitSemaphores(device, pWaitInfo, timeout, true /* do lock */);
2203 return vkWaitSemaphores_VkResult_return;
2204}
2205static VkResult entry_vkSignalSemaphore(
2206 VkDevice device,
2207 const VkSemaphoreSignalInfo* pSignalInfo)
2208{
2209 AEMU_SCOPED_TRACE("vkSignalSemaphore");
2210 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2211 VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
2212 vkSignalSemaphore_VkResult_return = vkEnc->vkSignalSemaphore(device, pSignalInfo, true /* do lock */);
2213 return vkSignalSemaphore_VkResult_return;
2214}
2215static VkResult dynCheck_entry_vkSignalSemaphore(
2216 VkDevice device,
2217 const VkSemaphoreSignalInfo* pSignalInfo)
2218{
2219 auto resources = ResourceTracker::get();
2220 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2221 {
2222 sOnInvalidDynamicallyCheckedCall("vkSignalSemaphore", "VK_VERSION_1_2");
2223 }
2224 AEMU_SCOPED_TRACE("vkSignalSemaphore");
2225 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2226 VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
2227 vkSignalSemaphore_VkResult_return = vkEnc->vkSignalSemaphore(device, pSignalInfo, true /* do lock */);
2228 return vkSignalSemaphore_VkResult_return;
2229}
2230static VkDeviceAddress entry_vkGetBufferDeviceAddress(
2231 VkDevice device,
2232 const VkBufferDeviceAddressInfo* pInfo)
2233{
2234 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddress");
2235 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2236 VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return = (VkDeviceAddress)0;
2237 vkGetBufferDeviceAddress_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddress(device, pInfo, true /* do lock */);
2238 return vkGetBufferDeviceAddress_VkDeviceAddress_return;
2239}
2240static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddress(
2241 VkDevice device,
2242 const VkBufferDeviceAddressInfo* pInfo)
2243{
2244 auto resources = ResourceTracker::get();
2245 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2246 {
2247 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddress", "VK_VERSION_1_2");
2248 }
2249 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddress");
2250 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2251 VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return = (VkDeviceAddress)0;
2252 vkGetBufferDeviceAddress_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddress(device, pInfo, true /* do lock */);
2253 return vkGetBufferDeviceAddress_VkDeviceAddress_return;
2254}
2255static uint64_t entry_vkGetBufferOpaqueCaptureAddress(
2256 VkDevice device,
2257 const VkBufferDeviceAddressInfo* pInfo)
2258{
2259 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddress");
2260 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2261 uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2262 vkGetBufferOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2263 return vkGetBufferOpaqueCaptureAddress_uint64_t_return;
2264}
2265static uint64_t dynCheck_entry_vkGetBufferOpaqueCaptureAddress(
2266 VkDevice device,
2267 const VkBufferDeviceAddressInfo* pInfo)
2268{
2269 auto resources = ResourceTracker::get();
2270 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2271 {
2272 sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureAddress", "VK_VERSION_1_2");
2273 }
2274 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddress");
2275 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2276 uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2277 vkGetBufferOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2278 return vkGetBufferOpaqueCaptureAddress_uint64_t_return;
2279}
2280static uint64_t entry_vkGetDeviceMemoryOpaqueCaptureAddress(
2281 VkDevice device,
2282 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
2283{
2284 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddress");
2285 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2286 uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2287 vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2288 return vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return;
2289}
2290static uint64_t dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress(
2291 VkDevice device,
2292 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
2293{
2294 auto resources = ResourceTracker::get();
2295 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2296 {
2297 sOnInvalidDynamicallyCheckedCall("vkGetDeviceMemoryOpaqueCaptureAddress", "VK_VERSION_1_2");
2298 }
2299 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddress");
2300 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2301 uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2302 vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2303 return vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return;
2304}
2305#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002306#ifdef VK_KHR_surface
2307static void entry_vkDestroySurfaceKHR(
2308 VkInstance instance,
2309 VkSurfaceKHR surface,
2310 const VkAllocationCallbacks* pAllocator)
2311{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002312 AEMU_SCOPED_TRACE("vkDestroySurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002313 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002314 vkEnc->vkDestroySurfaceKHR(instance, surface, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002315}
2316static VkResult entry_vkGetPhysicalDeviceSurfaceSupportKHR(
2317 VkPhysicalDevice physicalDevice,
2318 uint32_t queueFamilyIndex,
2319 VkSurfaceKHR surface,
2320 VkBool32* pSupported)
2321{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002322 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002323 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002324 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002325 vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002326 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
2327}
2328static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
2329 VkPhysicalDevice physicalDevice,
2330 VkSurfaceKHR surface,
2331 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
2332{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002333 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002334 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002335 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002336 vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002337 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
2338}
2339static VkResult entry_vkGetPhysicalDeviceSurfaceFormatsKHR(
2340 VkPhysicalDevice physicalDevice,
2341 VkSurfaceKHR surface,
2342 uint32_t* pSurfaceFormatCount,
2343 VkSurfaceFormatKHR* pSurfaceFormats)
2344{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002345 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002346 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002347 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002348 vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002349 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
2350}
2351static VkResult entry_vkGetPhysicalDeviceSurfacePresentModesKHR(
2352 VkPhysicalDevice physicalDevice,
2353 VkSurfaceKHR surface,
2354 uint32_t* pPresentModeCount,
2355 VkPresentModeKHR* pPresentModes)
2356{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002357 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002358 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002359 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002360 vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002361 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
2362}
2363#endif
2364#ifdef VK_KHR_swapchain
2365static VkResult entry_vkCreateSwapchainKHR(
2366 VkDevice device,
2367 const VkSwapchainCreateInfoKHR* pCreateInfo,
2368 const VkAllocationCallbacks* pAllocator,
2369 VkSwapchainKHR* pSwapchain)
2370{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002371 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002372 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002373 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002374 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002375 return vkCreateSwapchainKHR_VkResult_return;
2376}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002377static VkResult dynCheck_entry_vkCreateSwapchainKHR(
2378 VkDevice device,
2379 const VkSwapchainCreateInfoKHR* pCreateInfo,
2380 const VkAllocationCallbacks* pAllocator,
2381 VkSwapchainKHR* pSwapchain)
2382{
2383 auto resources = ResourceTracker::get();
2384 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2385 {
2386 sOnInvalidDynamicallyCheckedCall("vkCreateSwapchainKHR", "VK_KHR_swapchain");
2387 }
2388 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002389 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002390 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002391 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002392 return vkCreateSwapchainKHR_VkResult_return;
2393}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002394static void entry_vkDestroySwapchainKHR(
2395 VkDevice device,
2396 VkSwapchainKHR swapchain,
2397 const VkAllocationCallbacks* pAllocator)
2398{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002399 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002400 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002401 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002402}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002403static void dynCheck_entry_vkDestroySwapchainKHR(
2404 VkDevice device,
2405 VkSwapchainKHR swapchain,
2406 const VkAllocationCallbacks* pAllocator)
2407{
2408 auto resources = ResourceTracker::get();
2409 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2410 {
2411 sOnInvalidDynamicallyCheckedCall("vkDestroySwapchainKHR", "VK_KHR_swapchain");
2412 }
2413 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002414 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002415 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002416}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002417static VkResult entry_vkGetSwapchainImagesKHR(
2418 VkDevice device,
2419 VkSwapchainKHR swapchain,
2420 uint32_t* pSwapchainImageCount,
2421 VkImage* pSwapchainImages)
2422{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002423 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002424 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002425 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002426 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002427 return vkGetSwapchainImagesKHR_VkResult_return;
2428}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002429static VkResult dynCheck_entry_vkGetSwapchainImagesKHR(
2430 VkDevice device,
2431 VkSwapchainKHR swapchain,
2432 uint32_t* pSwapchainImageCount,
2433 VkImage* pSwapchainImages)
2434{
2435 auto resources = ResourceTracker::get();
2436 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2437 {
2438 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainImagesKHR", "VK_KHR_swapchain");
2439 }
2440 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002441 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002442 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002443 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002444 return vkGetSwapchainImagesKHR_VkResult_return;
2445}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002446static VkResult entry_vkAcquireNextImageKHR(
2447 VkDevice device,
2448 VkSwapchainKHR swapchain,
2449 uint64_t timeout,
2450 VkSemaphore semaphore,
2451 VkFence fence,
2452 uint32_t* pImageIndex)
2453{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002454 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002455 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002456 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002457 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002458 return vkAcquireNextImageKHR_VkResult_return;
2459}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002460static VkResult dynCheck_entry_vkAcquireNextImageKHR(
2461 VkDevice device,
2462 VkSwapchainKHR swapchain,
2463 uint64_t timeout,
2464 VkSemaphore semaphore,
2465 VkFence fence,
2466 uint32_t* pImageIndex)
2467{
2468 auto resources = ResourceTracker::get();
2469 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2470 {
2471 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImageKHR", "VK_KHR_swapchain");
2472 }
2473 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002474 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002475 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002476 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002477 return vkAcquireNextImageKHR_VkResult_return;
2478}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002479static VkResult entry_vkQueuePresentKHR(
2480 VkQueue queue,
2481 const VkPresentInfoKHR* pPresentInfo)
2482{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002483 AEMU_SCOPED_TRACE("vkQueuePresentKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002484 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002485 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002486 vkQueuePresentKHR_VkResult_return = vkEnc->vkQueuePresentKHR(queue, pPresentInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002487 return vkQueuePresentKHR_VkResult_return;
2488}
2489static VkResult entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2490 VkDevice device,
2491 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2492{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002493 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002494 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002495 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002496 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002497 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2498}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002499static VkResult dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2500 VkDevice device,
2501 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2502{
2503 auto resources = ResourceTracker::get();
2504 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2505 {
2506 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPresentCapabilitiesKHR", "VK_KHR_swapchain");
2507 }
2508 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002509 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002510 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002511 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002512 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2513}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002514static VkResult entry_vkGetDeviceGroupSurfacePresentModesKHR(
2515 VkDevice device,
2516 VkSurfaceKHR surface,
2517 VkDeviceGroupPresentModeFlagsKHR* pModes)
2518{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002519 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002520 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002521 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002522 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002523 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2524}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002525static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR(
2526 VkDevice device,
2527 VkSurfaceKHR surface,
2528 VkDeviceGroupPresentModeFlagsKHR* pModes)
2529{
2530 auto resources = ResourceTracker::get();
2531 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2532 {
2533 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModesKHR", "VK_KHR_swapchain");
2534 }
2535 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002536 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002537 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002538 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002539 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2540}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002541static VkResult entry_vkGetPhysicalDevicePresentRectanglesKHR(
2542 VkPhysicalDevice physicalDevice,
2543 VkSurfaceKHR surface,
2544 uint32_t* pRectCount,
2545 VkRect2D* pRects)
2546{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002547 AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002548 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002549 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002550 vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = vkEnc->vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002551 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
2552}
2553static VkResult entry_vkAcquireNextImage2KHR(
2554 VkDevice device,
2555 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2556 uint32_t* pImageIndex)
2557{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002558 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002559 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002560 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002561 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002562 return vkAcquireNextImage2KHR_VkResult_return;
2563}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002564static VkResult dynCheck_entry_vkAcquireNextImage2KHR(
2565 VkDevice device,
2566 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2567 uint32_t* pImageIndex)
2568{
2569 auto resources = ResourceTracker::get();
2570 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2571 {
2572 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImage2KHR", "VK_KHR_swapchain");
2573 }
2574 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002575 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002576 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002577 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002578 return vkAcquireNextImage2KHR_VkResult_return;
2579}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002580#endif
2581#ifdef VK_KHR_display
2582static VkResult entry_vkGetPhysicalDeviceDisplayPropertiesKHR(
2583 VkPhysicalDevice physicalDevice,
2584 uint32_t* pPropertyCount,
2585 VkDisplayPropertiesKHR* pProperties)
2586{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002587 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002588 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002589 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002590 vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002591 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
2592}
2593static VkResult entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
2594 VkPhysicalDevice physicalDevice,
2595 uint32_t* pPropertyCount,
2596 VkDisplayPlanePropertiesKHR* pProperties)
2597{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002598 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002599 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002600 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002601 vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002602 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
2603}
2604static VkResult entry_vkGetDisplayPlaneSupportedDisplaysKHR(
2605 VkPhysicalDevice physicalDevice,
2606 uint32_t planeIndex,
2607 uint32_t* pDisplayCount,
2608 VkDisplayKHR* pDisplays)
2609{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002610 AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002611 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002612 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002613 vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = vkEnc->vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002614 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
2615}
2616static VkResult entry_vkGetDisplayModePropertiesKHR(
2617 VkPhysicalDevice physicalDevice,
2618 VkDisplayKHR display,
2619 uint32_t* pPropertyCount,
2620 VkDisplayModePropertiesKHR* pProperties)
2621{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002622 AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002623 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002624 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002625 vkGetDisplayModePropertiesKHR_VkResult_return = vkEnc->vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002626 return vkGetDisplayModePropertiesKHR_VkResult_return;
2627}
2628static VkResult entry_vkCreateDisplayModeKHR(
2629 VkPhysicalDevice physicalDevice,
2630 VkDisplayKHR display,
2631 const VkDisplayModeCreateInfoKHR* pCreateInfo,
2632 const VkAllocationCallbacks* pAllocator,
2633 VkDisplayModeKHR* pMode)
2634{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002635 AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002636 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002637 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002638 vkCreateDisplayModeKHR_VkResult_return = vkEnc->vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002639 return vkCreateDisplayModeKHR_VkResult_return;
2640}
2641static VkResult entry_vkGetDisplayPlaneCapabilitiesKHR(
2642 VkPhysicalDevice physicalDevice,
2643 VkDisplayModeKHR mode,
2644 uint32_t planeIndex,
2645 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
2646{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002647 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002648 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002649 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002650 vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002651 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
2652}
2653static VkResult entry_vkCreateDisplayPlaneSurfaceKHR(
2654 VkInstance instance,
2655 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
2656 const VkAllocationCallbacks* pAllocator,
2657 VkSurfaceKHR* pSurface)
2658{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002659 AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002660 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002661 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002662 vkCreateDisplayPlaneSurfaceKHR_VkResult_return = vkEnc->vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002663 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
2664}
2665#endif
2666#ifdef VK_KHR_display_swapchain
2667static VkResult entry_vkCreateSharedSwapchainsKHR(
2668 VkDevice device,
2669 uint32_t swapchainCount,
2670 const VkSwapchainCreateInfoKHR* pCreateInfos,
2671 const VkAllocationCallbacks* pAllocator,
2672 VkSwapchainKHR* pSwapchains)
2673{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002674 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002675 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002676 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002677 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002678 return vkCreateSharedSwapchainsKHR_VkResult_return;
2679}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002680static VkResult dynCheck_entry_vkCreateSharedSwapchainsKHR(
2681 VkDevice device,
2682 uint32_t swapchainCount,
2683 const VkSwapchainCreateInfoKHR* pCreateInfos,
2684 const VkAllocationCallbacks* pAllocator,
2685 VkSwapchainKHR* pSwapchains)
2686{
2687 auto resources = ResourceTracker::get();
2688 if (!resources->hasDeviceExtension(device, "VK_KHR_display_swapchain"))
2689 {
2690 sOnInvalidDynamicallyCheckedCall("vkCreateSharedSwapchainsKHR", "VK_KHR_display_swapchain");
2691 }
2692 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002693 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002694 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002695 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002696 return vkCreateSharedSwapchainsKHR_VkResult_return;
2697}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002698#endif
2699#ifdef VK_KHR_xlib_surface
2700static VkResult entry_vkCreateXlibSurfaceKHR(
2701 VkInstance instance,
2702 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
2703 const VkAllocationCallbacks* pAllocator,
2704 VkSurfaceKHR* pSurface)
2705{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002706 AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002707 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002708 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002709 vkCreateXlibSurfaceKHR_VkResult_return = vkEnc->vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002710 return vkCreateXlibSurfaceKHR_VkResult_return;
2711}
2712static VkBool32 entry_vkGetPhysicalDeviceXlibPresentationSupportKHR(
2713 VkPhysicalDevice physicalDevice,
2714 uint32_t queueFamilyIndex,
2715 Display* dpy,
2716 VisualID visualID)
2717{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002718 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002719 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002720 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002721 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002722 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
2723}
2724#endif
2725#ifdef VK_KHR_xcb_surface
2726static VkResult entry_vkCreateXcbSurfaceKHR(
2727 VkInstance instance,
2728 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
2729 const VkAllocationCallbacks* pAllocator,
2730 VkSurfaceKHR* pSurface)
2731{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002732 AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002733 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002734 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002735 vkCreateXcbSurfaceKHR_VkResult_return = vkEnc->vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002736 return vkCreateXcbSurfaceKHR_VkResult_return;
2737}
2738static VkBool32 entry_vkGetPhysicalDeviceXcbPresentationSupportKHR(
2739 VkPhysicalDevice physicalDevice,
2740 uint32_t queueFamilyIndex,
2741 xcb_connection_t* connection,
2742 xcb_visualid_t visual_id)
2743{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002744 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002745 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002746 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002747 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002748 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
2749}
2750#endif
2751#ifdef VK_KHR_wayland_surface
2752static VkResult entry_vkCreateWaylandSurfaceKHR(
2753 VkInstance instance,
2754 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
2755 const VkAllocationCallbacks* pAllocator,
2756 VkSurfaceKHR* pSurface)
2757{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002758 AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002759 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002760 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002761 vkCreateWaylandSurfaceKHR_VkResult_return = vkEnc->vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002762 return vkCreateWaylandSurfaceKHR_VkResult_return;
2763}
2764static VkBool32 entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
2765 VkPhysicalDevice physicalDevice,
2766 uint32_t queueFamilyIndex,
2767 wl_display* display)
2768{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002769 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002770 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002771 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002772 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002773 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
2774}
2775#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002776#ifdef VK_KHR_android_surface
2777static VkResult entry_vkCreateAndroidSurfaceKHR(
2778 VkInstance instance,
2779 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
2780 const VkAllocationCallbacks* pAllocator,
2781 VkSurfaceKHR* pSurface)
2782{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002783 AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002784 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002785 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002786 vkCreateAndroidSurfaceKHR_VkResult_return = vkEnc->vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002787 return vkCreateAndroidSurfaceKHR_VkResult_return;
2788}
2789#endif
2790#ifdef VK_KHR_win32_surface
2791static VkResult entry_vkCreateWin32SurfaceKHR(
2792 VkInstance instance,
2793 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
2794 const VkAllocationCallbacks* pAllocator,
2795 VkSurfaceKHR* pSurface)
2796{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002797 AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002798 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002799 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002800 vkCreateWin32SurfaceKHR_VkResult_return = vkEnc->vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002801 return vkCreateWin32SurfaceKHR_VkResult_return;
2802}
2803static VkBool32 entry_vkGetPhysicalDeviceWin32PresentationSupportKHR(
2804 VkPhysicalDevice physicalDevice,
2805 uint32_t queueFamilyIndex)
2806{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002807 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002808 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002809 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002810 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002811 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
2812}
2813#endif
2814#ifdef VK_KHR_sampler_mirror_clamp_to_edge
2815#endif
2816#ifdef VK_KHR_multiview
2817#endif
2818#ifdef VK_KHR_get_physical_device_properties2
2819static void entry_vkGetPhysicalDeviceFeatures2KHR(
2820 VkPhysicalDevice physicalDevice,
2821 VkPhysicalDeviceFeatures2* pFeatures)
2822{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002823 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002824 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002825 vkEnc->vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002826}
2827static void entry_vkGetPhysicalDeviceProperties2KHR(
2828 VkPhysicalDevice physicalDevice,
2829 VkPhysicalDeviceProperties2* pProperties)
2830{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002831 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002832 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002833 vkEnc->vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002834}
2835static void entry_vkGetPhysicalDeviceFormatProperties2KHR(
2836 VkPhysicalDevice physicalDevice,
2837 VkFormat format,
2838 VkFormatProperties2* pFormatProperties)
2839{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002840 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002841 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002842 vkEnc->vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002843}
2844static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2KHR(
2845 VkPhysicalDevice physicalDevice,
2846 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
2847 VkImageFormatProperties2* pImageFormatProperties)
2848{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002849 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002850 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002851 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07002852 auto resources = ResourceTracker::get();
2853 vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2KHR(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002854 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
2855}
2856static void entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
2857 VkPhysicalDevice physicalDevice,
2858 uint32_t* pQueueFamilyPropertyCount,
2859 VkQueueFamilyProperties2* pQueueFamilyProperties)
2860{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002861 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002862 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002863 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002864}
2865static void entry_vkGetPhysicalDeviceMemoryProperties2KHR(
2866 VkPhysicalDevice physicalDevice,
2867 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
2868{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002869 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002870 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002871 vkEnc->vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002872}
2873static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
2874 VkPhysicalDevice physicalDevice,
2875 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
2876 uint32_t* pPropertyCount,
2877 VkSparseImageFormatProperties2* pProperties)
2878{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002879 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002880 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002881 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002882}
2883#endif
2884#ifdef VK_KHR_device_group
2885static void entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2886 VkDevice device,
2887 uint32_t heapIndex,
2888 uint32_t localDeviceIndex,
2889 uint32_t remoteDeviceIndex,
2890 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2891{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002892 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002893 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002894 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002895}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002896static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2897 VkDevice device,
2898 uint32_t heapIndex,
2899 uint32_t localDeviceIndex,
2900 uint32_t remoteDeviceIndex,
2901 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2902{
2903 auto resources = ResourceTracker::get();
2904 if (!resources->hasDeviceExtension(device, "VK_KHR_device_group"))
2905 {
2906 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeaturesKHR", "VK_KHR_device_group");
2907 }
2908 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002909 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002910 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002911}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002912static void entry_vkCmdSetDeviceMaskKHR(
2913 VkCommandBuffer commandBuffer,
2914 uint32_t deviceMask)
2915{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002916 AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002917 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002918 vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002919}
2920static void entry_vkCmdDispatchBaseKHR(
2921 VkCommandBuffer commandBuffer,
2922 uint32_t baseGroupX,
2923 uint32_t baseGroupY,
2924 uint32_t baseGroupZ,
2925 uint32_t groupCountX,
2926 uint32_t groupCountY,
2927 uint32_t groupCountZ)
2928{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002929 AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002930 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002931 vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002932}
2933#endif
2934#ifdef VK_KHR_shader_draw_parameters
2935#endif
2936#ifdef VK_KHR_maintenance1
2937static void entry_vkTrimCommandPoolKHR(
2938 VkDevice device,
2939 VkCommandPool commandPool,
2940 VkCommandPoolTrimFlags flags)
2941{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002942 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002943 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002944 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002945}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002946static void dynCheck_entry_vkTrimCommandPoolKHR(
2947 VkDevice device,
2948 VkCommandPool commandPool,
2949 VkCommandPoolTrimFlags flags)
2950{
2951 auto resources = ResourceTracker::get();
2952 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance1"))
2953 {
2954 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPoolKHR", "VK_KHR_maintenance1");
2955 }
2956 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002957 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002958 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002959}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002960#endif
2961#ifdef VK_KHR_device_group_creation
2962static VkResult entry_vkEnumeratePhysicalDeviceGroupsKHR(
2963 VkInstance instance,
2964 uint32_t* pPhysicalDeviceGroupCount,
2965 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
2966{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002967 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002968 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002969 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002970 vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002971 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
2972}
2973#endif
2974#ifdef VK_KHR_external_memory_capabilities
2975static void entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
2976 VkPhysicalDevice physicalDevice,
2977 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
2978 VkExternalBufferProperties* pExternalBufferProperties)
2979{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002980 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002981 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002982 vkEnc->vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002983}
2984#endif
2985#ifdef VK_KHR_external_memory
2986#endif
2987#ifdef VK_KHR_external_memory_win32
2988static VkResult entry_vkGetMemoryWin32HandleKHR(
2989 VkDevice device,
2990 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2991 HANDLE* pHandle)
2992{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002993 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002994 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002995 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002996 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002997 return vkGetMemoryWin32HandleKHR_VkResult_return;
2998}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002999static VkResult dynCheck_entry_vkGetMemoryWin32HandleKHR(
3000 VkDevice device,
3001 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3002 HANDLE* pHandle)
3003{
3004 auto resources = ResourceTracker::get();
3005 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
3006 {
3007 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleKHR", "VK_KHR_external_memory_win32");
3008 }
3009 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003010 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003011 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003012 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003013 return vkGetMemoryWin32HandleKHR_VkResult_return;
3014}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003015static VkResult entry_vkGetMemoryWin32HandlePropertiesKHR(
3016 VkDevice device,
3017 VkExternalMemoryHandleTypeFlagBits handleType,
3018 HANDLE handle,
3019 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
3020{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003021 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003022 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003023 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003024 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003025 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
3026}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003027static VkResult dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR(
3028 VkDevice device,
3029 VkExternalMemoryHandleTypeFlagBits handleType,
3030 HANDLE handle,
3031 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
3032{
3033 auto resources = ResourceTracker::get();
3034 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
3035 {
3036 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandlePropertiesKHR", "VK_KHR_external_memory_win32");
3037 }
3038 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003039 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003040 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003041 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003042 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
3043}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003044#endif
3045#ifdef VK_KHR_external_memory_fd
3046static VkResult entry_vkGetMemoryFdKHR(
3047 VkDevice device,
3048 const VkMemoryGetFdInfoKHR* pGetFdInfo,
3049 int* pFd)
3050{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003051 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003052 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003053 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003054 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003055 return vkGetMemoryFdKHR_VkResult_return;
3056}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003057static VkResult dynCheck_entry_vkGetMemoryFdKHR(
3058 VkDevice device,
3059 const VkMemoryGetFdInfoKHR* pGetFdInfo,
3060 int* pFd)
3061{
3062 auto resources = ResourceTracker::get();
3063 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
3064 {
3065 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdKHR", "VK_KHR_external_memory_fd");
3066 }
3067 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003068 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003069 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003070 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003071 return vkGetMemoryFdKHR_VkResult_return;
3072}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003073static VkResult entry_vkGetMemoryFdPropertiesKHR(
3074 VkDevice device,
3075 VkExternalMemoryHandleTypeFlagBits handleType,
3076 int fd,
3077 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
3078{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003079 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003080 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003081 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003082 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003083 return vkGetMemoryFdPropertiesKHR_VkResult_return;
3084}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003085static VkResult dynCheck_entry_vkGetMemoryFdPropertiesKHR(
3086 VkDevice device,
3087 VkExternalMemoryHandleTypeFlagBits handleType,
3088 int fd,
3089 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
3090{
3091 auto resources = ResourceTracker::get();
3092 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
3093 {
3094 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdPropertiesKHR", "VK_KHR_external_memory_fd");
3095 }
3096 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003097 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003098 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003099 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003100 return vkGetMemoryFdPropertiesKHR_VkResult_return;
3101}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003102#endif
3103#ifdef VK_KHR_win32_keyed_mutex
3104#endif
3105#ifdef VK_KHR_external_semaphore_capabilities
3106static void entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
3107 VkPhysicalDevice physicalDevice,
3108 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
3109 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
3110{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003111 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003112 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003113 vkEnc->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003114}
3115#endif
3116#ifdef VK_KHR_external_semaphore
3117#endif
3118#ifdef VK_KHR_external_semaphore_win32
3119static VkResult entry_vkImportSemaphoreWin32HandleKHR(
3120 VkDevice device,
3121 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
3122{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003123 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003124 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003125 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003126 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003127 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
3128}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003129static VkResult dynCheck_entry_vkImportSemaphoreWin32HandleKHR(
3130 VkDevice device,
3131 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
3132{
3133 auto resources = ResourceTracker::get();
3134 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
3135 {
3136 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
3137 }
3138 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003139 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003140 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003141 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003142 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
3143}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003144static VkResult entry_vkGetSemaphoreWin32HandleKHR(
3145 VkDevice device,
3146 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3147 HANDLE* pHandle)
3148{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003149 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003150 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003151 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003152 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003153 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
3154}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003155static VkResult dynCheck_entry_vkGetSemaphoreWin32HandleKHR(
3156 VkDevice device,
3157 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3158 HANDLE* pHandle)
3159{
3160 auto resources = ResourceTracker::get();
3161 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
3162 {
3163 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
3164 }
3165 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003166 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003167 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003168 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003169 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
3170}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003171#endif
3172#ifdef VK_KHR_external_semaphore_fd
3173static VkResult entry_vkImportSemaphoreFdKHR(
3174 VkDevice device,
3175 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
3176{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003177 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003178 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003179 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08003180 auto resources = ResourceTracker::get();
3181 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003182 return vkImportSemaphoreFdKHR_VkResult_return;
3183}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003184static VkResult dynCheck_entry_vkImportSemaphoreFdKHR(
3185 VkDevice device,
3186 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
3187{
3188 auto resources = ResourceTracker::get();
3189 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3190 {
3191 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3192 }
3193 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003194 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003195 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
3196 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
3197 return vkImportSemaphoreFdKHR_VkResult_return;
3198}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003199static VkResult entry_vkGetSemaphoreFdKHR(
3200 VkDevice device,
3201 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3202 int* pFd)
3203{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003204 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003205 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003206 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08003207 auto resources = ResourceTracker::get();
3208 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003209 return vkGetSemaphoreFdKHR_VkResult_return;
3210}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003211static VkResult dynCheck_entry_vkGetSemaphoreFdKHR(
3212 VkDevice device,
3213 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3214 int* pFd)
3215{
3216 auto resources = ResourceTracker::get();
3217 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3218 {
3219 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3220 }
3221 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003222 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003223 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
3224 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3225 return vkGetSemaphoreFdKHR_VkResult_return;
3226}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003227#endif
3228#ifdef VK_KHR_push_descriptor
3229static void entry_vkCmdPushDescriptorSetKHR(
3230 VkCommandBuffer commandBuffer,
3231 VkPipelineBindPoint pipelineBindPoint,
3232 VkPipelineLayout layout,
3233 uint32_t set,
3234 uint32_t descriptorWriteCount,
3235 const VkWriteDescriptorSet* pDescriptorWrites)
3236{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003237 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003238 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003239 vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003240}
3241static void entry_vkCmdPushDescriptorSetWithTemplateKHR(
3242 VkCommandBuffer commandBuffer,
3243 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3244 VkPipelineLayout layout,
3245 uint32_t set,
3246 const void* pData)
3247{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003248 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003249 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003250 vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003251}
3252#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003253#ifdef VK_KHR_shader_float16_int8
3254#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003255#ifdef VK_KHR_16bit_storage
3256#endif
3257#ifdef VK_KHR_incremental_present
3258#endif
3259#ifdef VK_KHR_descriptor_update_template
3260static VkResult entry_vkCreateDescriptorUpdateTemplateKHR(
3261 VkDevice device,
3262 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3263 const VkAllocationCallbacks* pAllocator,
3264 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3265{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003266 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003267 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003268 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003269 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003270 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3271}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003272static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR(
3273 VkDevice device,
3274 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3275 const VkAllocationCallbacks* pAllocator,
3276 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3277{
3278 auto resources = ResourceTracker::get();
3279 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3280 {
3281 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3282 }
3283 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003284 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003285 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003286 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003287 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3288}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003289static void entry_vkDestroyDescriptorUpdateTemplateKHR(
3290 VkDevice device,
3291 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3292 const VkAllocationCallbacks* pAllocator)
3293{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003294 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003295 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003296 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003297}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003298static void dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR(
3299 VkDevice device,
3300 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3301 const VkAllocationCallbacks* pAllocator)
3302{
3303 auto resources = ResourceTracker::get();
3304 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3305 {
3306 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3307 }
3308 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003309 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003310 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003311}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003312static void entry_vkUpdateDescriptorSetWithTemplateKHR(
3313 VkDevice device,
3314 VkDescriptorSet descriptorSet,
3315 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3316 const void* pData)
3317{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003318 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003319 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003320 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003321}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003322static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR(
3323 VkDevice device,
3324 VkDescriptorSet descriptorSet,
3325 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3326 const void* pData)
3327{
3328 auto resources = ResourceTracker::get();
3329 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3330 {
3331 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateKHR", "VK_KHR_descriptor_update_template");
3332 }
3333 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003334 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003335 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003336}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003337#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003338#ifdef VK_KHR_imageless_framebuffer
3339#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003340#ifdef VK_KHR_create_renderpass2
3341static VkResult entry_vkCreateRenderPass2KHR(
3342 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08003343 const VkRenderPassCreateInfo2* pCreateInfo,
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003344 const VkAllocationCallbacks* pAllocator,
3345 VkRenderPass* pRenderPass)
3346{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003347 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003348 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003349 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003350 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003351 return vkCreateRenderPass2KHR_VkResult_return;
3352}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003353static VkResult dynCheck_entry_vkCreateRenderPass2KHR(
3354 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08003355 const VkRenderPassCreateInfo2* pCreateInfo,
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003356 const VkAllocationCallbacks* pAllocator,
3357 VkRenderPass* pRenderPass)
3358{
3359 auto resources = ResourceTracker::get();
3360 if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"))
3361 {
3362 sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2KHR", "VK_KHR_create_renderpass2");
3363 }
3364 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003365 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003366 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003367 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003368 return vkCreateRenderPass2KHR_VkResult_return;
3369}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003370static void entry_vkCmdBeginRenderPass2KHR(
3371 VkCommandBuffer commandBuffer,
3372 const VkRenderPassBeginInfo* pRenderPassBegin,
Yilong Lia8d45f12021-02-07 02:30:21 -08003373 const VkSubpassBeginInfo* pSubpassBeginInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003374{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003375 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003376 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003377 vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003378}
3379static void entry_vkCmdNextSubpass2KHR(
3380 VkCommandBuffer commandBuffer,
Yilong Lia8d45f12021-02-07 02:30:21 -08003381 const VkSubpassBeginInfo* pSubpassBeginInfo,
3382 const VkSubpassEndInfo* pSubpassEndInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003383{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003384 AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003385 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003386 vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003387}
3388static void entry_vkCmdEndRenderPass2KHR(
3389 VkCommandBuffer commandBuffer,
Yilong Lia8d45f12021-02-07 02:30:21 -08003390 const VkSubpassEndInfo* pSubpassEndInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003391{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003392 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003393 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003394 vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003395}
3396#endif
3397#ifdef VK_KHR_shared_presentable_image
3398static VkResult entry_vkGetSwapchainStatusKHR(
3399 VkDevice device,
3400 VkSwapchainKHR swapchain)
3401{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003402 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003403 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003404 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003405 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003406 return vkGetSwapchainStatusKHR_VkResult_return;
3407}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003408static VkResult dynCheck_entry_vkGetSwapchainStatusKHR(
3409 VkDevice device,
3410 VkSwapchainKHR swapchain)
3411{
3412 auto resources = ResourceTracker::get();
3413 if (!resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image"))
3414 {
3415 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainStatusKHR", "VK_KHR_shared_presentable_image");
3416 }
3417 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003418 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003419 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003420 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003421 return vkGetSwapchainStatusKHR_VkResult_return;
3422}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003423#endif
3424#ifdef VK_KHR_external_fence_capabilities
3425static void entry_vkGetPhysicalDeviceExternalFencePropertiesKHR(
3426 VkPhysicalDevice physicalDevice,
3427 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
3428 VkExternalFenceProperties* pExternalFenceProperties)
3429{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003430 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003431 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003432 auto resources = ResourceTracker::get();
3433 resources->on_vkGetPhysicalDeviceExternalFencePropertiesKHR(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003434}
3435#endif
3436#ifdef VK_KHR_external_fence
3437#endif
3438#ifdef VK_KHR_external_fence_win32
3439static VkResult entry_vkImportFenceWin32HandleKHR(
3440 VkDevice device,
3441 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3442{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003443 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003444 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003445 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003446 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003447 return vkImportFenceWin32HandleKHR_VkResult_return;
3448}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003449static VkResult dynCheck_entry_vkImportFenceWin32HandleKHR(
3450 VkDevice device,
3451 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3452{
3453 auto resources = ResourceTracker::get();
3454 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3455 {
3456 sOnInvalidDynamicallyCheckedCall("vkImportFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3457 }
3458 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003459 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003460 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003461 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003462 return vkImportFenceWin32HandleKHR_VkResult_return;
3463}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003464static VkResult entry_vkGetFenceWin32HandleKHR(
3465 VkDevice device,
3466 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3467 HANDLE* pHandle)
3468{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003469 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003470 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003471 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003472 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003473 return vkGetFenceWin32HandleKHR_VkResult_return;
3474}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003475static VkResult dynCheck_entry_vkGetFenceWin32HandleKHR(
3476 VkDevice device,
3477 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3478 HANDLE* pHandle)
3479{
3480 auto resources = ResourceTracker::get();
3481 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3482 {
3483 sOnInvalidDynamicallyCheckedCall("vkGetFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3484 }
3485 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003486 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003487 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003488 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003489 return vkGetFenceWin32HandleKHR_VkResult_return;
3490}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003491#endif
3492#ifdef VK_KHR_external_fence_fd
3493static VkResult entry_vkImportFenceFdKHR(
3494 VkDevice device,
3495 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3496{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003497 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003498 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003499 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003500 auto resources = ResourceTracker::get();
3501 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003502 return vkImportFenceFdKHR_VkResult_return;
3503}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003504static VkResult dynCheck_entry_vkImportFenceFdKHR(
3505 VkDevice device,
3506 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3507{
3508 auto resources = ResourceTracker::get();
3509 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3510 {
3511 sOnInvalidDynamicallyCheckedCall("vkImportFenceFdKHR", "VK_KHR_external_fence_fd");
3512 }
3513 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003514 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003515 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
3516 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
3517 return vkImportFenceFdKHR_VkResult_return;
3518}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003519static VkResult entry_vkGetFenceFdKHR(
3520 VkDevice device,
3521 const VkFenceGetFdInfoKHR* pGetFdInfo,
3522 int* pFd)
3523{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003524 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003525 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003526 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003527 auto resources = ResourceTracker::get();
3528 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003529 return vkGetFenceFdKHR_VkResult_return;
3530}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003531static VkResult dynCheck_entry_vkGetFenceFdKHR(
3532 VkDevice device,
3533 const VkFenceGetFdInfoKHR* pGetFdInfo,
3534 int* pFd)
3535{
3536 auto resources = ResourceTracker::get();
3537 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3538 {
3539 sOnInvalidDynamicallyCheckedCall("vkGetFenceFdKHR", "VK_KHR_external_fence_fd");
3540 }
3541 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003542 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003543 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
3544 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3545 return vkGetFenceFdKHR_VkResult_return;
3546}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003547#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003548#ifdef VK_KHR_performance_query
3549static VkResult entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
3550 VkPhysicalDevice physicalDevice,
3551 uint32_t queueFamilyIndex,
3552 uint32_t* pCounterCount,
3553 VkPerformanceCounterKHR* pCounters,
3554 VkPerformanceCounterDescriptionKHR* pCounterDescriptions)
3555{
3556 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
3557 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3558 VkResult vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return = (VkResult)0;
3559 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, true /* do lock */);
3560 return vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return;
3561}
3562static void entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
3563 VkPhysicalDevice physicalDevice,
3564 const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo,
3565 uint32_t* pNumPasses)
3566{
3567 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
3568 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3569 vkEnc->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, true /* do lock */);
3570}
3571static VkResult entry_vkAcquireProfilingLockKHR(
3572 VkDevice device,
3573 const VkAcquireProfilingLockInfoKHR* pInfo)
3574{
3575 AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
3576 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3577 VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
3578 vkAcquireProfilingLockKHR_VkResult_return = vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
3579 return vkAcquireProfilingLockKHR_VkResult_return;
3580}
3581static VkResult dynCheck_entry_vkAcquireProfilingLockKHR(
3582 VkDevice device,
3583 const VkAcquireProfilingLockInfoKHR* pInfo)
3584{
3585 auto resources = ResourceTracker::get();
3586 if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query"))
3587 {
3588 sOnInvalidDynamicallyCheckedCall("vkAcquireProfilingLockKHR", "VK_KHR_performance_query");
3589 }
3590 AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
3591 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3592 VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
3593 vkAcquireProfilingLockKHR_VkResult_return = vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
3594 return vkAcquireProfilingLockKHR_VkResult_return;
3595}
3596static void entry_vkReleaseProfilingLockKHR(
3597 VkDevice device)
3598{
3599 AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
3600 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3601 vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
3602}
3603static void dynCheck_entry_vkReleaseProfilingLockKHR(
3604 VkDevice device)
3605{
3606 auto resources = ResourceTracker::get();
3607 if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query"))
3608 {
3609 sOnInvalidDynamicallyCheckedCall("vkReleaseProfilingLockKHR", "VK_KHR_performance_query");
3610 }
3611 AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
3612 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3613 vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
3614}
3615#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003616#ifdef VK_KHR_maintenance2
3617#endif
3618#ifdef VK_KHR_get_surface_capabilities2
3619static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
3620 VkPhysicalDevice physicalDevice,
3621 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3622 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
3623{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003624 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003625 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003626 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003627 vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003628 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
3629}
3630static VkResult entry_vkGetPhysicalDeviceSurfaceFormats2KHR(
3631 VkPhysicalDevice physicalDevice,
3632 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3633 uint32_t* pSurfaceFormatCount,
3634 VkSurfaceFormat2KHR* pSurfaceFormats)
3635{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003636 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003637 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003638 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003639 vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003640 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
3641}
3642#endif
3643#ifdef VK_KHR_variable_pointers
3644#endif
3645#ifdef VK_KHR_get_display_properties2
3646static VkResult entry_vkGetPhysicalDeviceDisplayProperties2KHR(
3647 VkPhysicalDevice physicalDevice,
3648 uint32_t* pPropertyCount,
3649 VkDisplayProperties2KHR* pProperties)
3650{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003651 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003652 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003653 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003654 vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003655 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
3656}
3657static VkResult entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
3658 VkPhysicalDevice physicalDevice,
3659 uint32_t* pPropertyCount,
3660 VkDisplayPlaneProperties2KHR* pProperties)
3661{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003662 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003663 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003664 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003665 vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003666 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
3667}
3668static VkResult entry_vkGetDisplayModeProperties2KHR(
3669 VkPhysicalDevice physicalDevice,
3670 VkDisplayKHR display,
3671 uint32_t* pPropertyCount,
3672 VkDisplayModeProperties2KHR* pProperties)
3673{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003674 AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003675 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003676 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003677 vkGetDisplayModeProperties2KHR_VkResult_return = vkEnc->vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003678 return vkGetDisplayModeProperties2KHR_VkResult_return;
3679}
3680static VkResult entry_vkGetDisplayPlaneCapabilities2KHR(
3681 VkPhysicalDevice physicalDevice,
3682 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
3683 VkDisplayPlaneCapabilities2KHR* pCapabilities)
3684{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003685 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003686 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003687 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003688 vkGetDisplayPlaneCapabilities2KHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003689 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
3690}
3691#endif
3692#ifdef VK_KHR_dedicated_allocation
3693#endif
3694#ifdef VK_KHR_storage_buffer_storage_class
3695#endif
3696#ifdef VK_KHR_relaxed_block_layout
3697#endif
3698#ifdef VK_KHR_get_memory_requirements2
3699static void entry_vkGetImageMemoryRequirements2KHR(
3700 VkDevice device,
3701 const VkImageMemoryRequirementsInfo2* pInfo,
3702 VkMemoryRequirements2* pMemoryRequirements)
3703{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003704 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003705 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003706 auto resources = ResourceTracker::get();
3707 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003708}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003709static void dynCheck_entry_vkGetImageMemoryRequirements2KHR(
3710 VkDevice device,
3711 const VkImageMemoryRequirementsInfo2* pInfo,
3712 VkMemoryRequirements2* pMemoryRequirements)
3713{
3714 auto resources = ResourceTracker::get();
3715 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3716 {
3717 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3718 }
3719 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003720 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003721 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3722}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003723static void entry_vkGetBufferMemoryRequirements2KHR(
3724 VkDevice device,
3725 const VkBufferMemoryRequirementsInfo2* pInfo,
3726 VkMemoryRequirements2* pMemoryRequirements)
3727{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003728 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003729 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003730 auto resources = ResourceTracker::get();
3731 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003732}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003733static void dynCheck_entry_vkGetBufferMemoryRequirements2KHR(
3734 VkDevice device,
3735 const VkBufferMemoryRequirementsInfo2* pInfo,
3736 VkMemoryRequirements2* pMemoryRequirements)
3737{
3738 auto resources = ResourceTracker::get();
3739 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3740 {
3741 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3742 }
3743 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003744 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003745 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3746}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003747static void entry_vkGetImageSparseMemoryRequirements2KHR(
3748 VkDevice device,
3749 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3750 uint32_t* pSparseMemoryRequirementCount,
3751 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3752{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003753 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003754 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003755 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003756}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003757static void dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR(
3758 VkDevice device,
3759 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3760 uint32_t* pSparseMemoryRequirementCount,
3761 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3762{
3763 auto resources = ResourceTracker::get();
3764 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3765 {
3766 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3767 }
3768 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003769 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003770 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003771}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003772#endif
3773#ifdef VK_KHR_image_format_list
3774#endif
3775#ifdef VK_KHR_sampler_ycbcr_conversion
3776static VkResult entry_vkCreateSamplerYcbcrConversionKHR(
3777 VkDevice device,
3778 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3779 const VkAllocationCallbacks* pAllocator,
3780 VkSamplerYcbcrConversion* pYcbcrConversion)
3781{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003782 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003783 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003784 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08003785 auto resources = ResourceTracker::get();
3786 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003787 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3788}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003789static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversionKHR(
3790 VkDevice device,
3791 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3792 const VkAllocationCallbacks* pAllocator,
3793 VkSamplerYcbcrConversion* pYcbcrConversion)
3794{
3795 auto resources = ResourceTracker::get();
3796 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3797 {
3798 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3799 }
3800 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003801 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003802 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
3803 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
3804 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3805}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003806static void entry_vkDestroySamplerYcbcrConversionKHR(
3807 VkDevice device,
3808 VkSamplerYcbcrConversion ycbcrConversion,
3809 const VkAllocationCallbacks* pAllocator)
3810{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003811 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003812 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07003813 auto resources = ResourceTracker::get();
3814 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003815}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003816static void dynCheck_entry_vkDestroySamplerYcbcrConversionKHR(
3817 VkDevice device,
3818 VkSamplerYcbcrConversion ycbcrConversion,
3819 const VkAllocationCallbacks* pAllocator)
3820{
3821 auto resources = ResourceTracker::get();
3822 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3823 {
3824 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3825 }
3826 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003827 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003828 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
3829}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003830#endif
3831#ifdef VK_KHR_bind_memory2
3832static VkResult entry_vkBindBufferMemory2KHR(
3833 VkDevice device,
3834 uint32_t bindInfoCount,
3835 const VkBindBufferMemoryInfo* pBindInfos)
3836{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003837 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003838 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003839 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003840 auto resources = ResourceTracker::get();
3841 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003842 return vkBindBufferMemory2KHR_VkResult_return;
3843}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003844static VkResult dynCheck_entry_vkBindBufferMemory2KHR(
3845 VkDevice device,
3846 uint32_t bindInfoCount,
3847 const VkBindBufferMemoryInfo* pBindInfos)
3848{
3849 auto resources = ResourceTracker::get();
3850 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3851 {
3852 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2KHR", "VK_KHR_bind_memory2");
3853 }
3854 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003855 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003856 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
3857 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3858 return vkBindBufferMemory2KHR_VkResult_return;
3859}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003860static VkResult entry_vkBindImageMemory2KHR(
3861 VkDevice device,
3862 uint32_t bindInfoCount,
3863 const VkBindImageMemoryInfo* pBindInfos)
3864{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003865 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003866 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003867 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003868 auto resources = ResourceTracker::get();
3869 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003870 return vkBindImageMemory2KHR_VkResult_return;
3871}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003872static VkResult dynCheck_entry_vkBindImageMemory2KHR(
3873 VkDevice device,
3874 uint32_t bindInfoCount,
3875 const VkBindImageMemoryInfo* pBindInfos)
3876{
3877 auto resources = ResourceTracker::get();
3878 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3879 {
3880 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2KHR", "VK_KHR_bind_memory2");
3881 }
3882 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003883 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003884 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
3885 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3886 return vkBindImageMemory2KHR_VkResult_return;
3887}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003888#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003889#ifdef VK_KHR_portability_subset
3890#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003891#ifdef VK_KHR_maintenance3
3892static void entry_vkGetDescriptorSetLayoutSupportKHR(
3893 VkDevice device,
3894 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3895 VkDescriptorSetLayoutSupport* pSupport)
3896{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003897 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003898 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003899 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003900}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003901static void dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR(
3902 VkDevice device,
3903 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3904 VkDescriptorSetLayoutSupport* pSupport)
3905{
3906 auto resources = ResourceTracker::get();
3907 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance3"))
3908 {
3909 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupportKHR", "VK_KHR_maintenance3");
3910 }
3911 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003912 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003913 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003914}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003915#endif
3916#ifdef VK_KHR_draw_indirect_count
3917static void entry_vkCmdDrawIndirectCountKHR(
3918 VkCommandBuffer commandBuffer,
3919 VkBuffer buffer,
3920 VkDeviceSize offset,
3921 VkBuffer countBuffer,
3922 VkDeviceSize countBufferOffset,
3923 uint32_t maxDrawCount,
3924 uint32_t stride)
3925{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003926 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003927 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003928 vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003929}
3930static void entry_vkCmdDrawIndexedIndirectCountKHR(
3931 VkCommandBuffer commandBuffer,
3932 VkBuffer buffer,
3933 VkDeviceSize offset,
3934 VkBuffer countBuffer,
3935 VkDeviceSize countBufferOffset,
3936 uint32_t maxDrawCount,
3937 uint32_t stride)
3938{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003939 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003940 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003941 vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003942}
3943#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003944#ifdef VK_KHR_shader_subgroup_extended_types
3945#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003946#ifdef VK_KHR_8bit_storage
3947#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003948#ifdef VK_KHR_shader_atomic_int64
3949#endif
3950#ifdef VK_KHR_shader_clock
3951#endif
3952#ifdef VK_KHR_driver_properties
3953#endif
3954#ifdef VK_KHR_shader_float_controls
3955#endif
3956#ifdef VK_KHR_depth_stencil_resolve
3957#endif
3958#ifdef VK_KHR_swapchain_mutable_format
3959#endif
3960#ifdef VK_KHR_timeline_semaphore
3961static VkResult entry_vkGetSemaphoreCounterValueKHR(
3962 VkDevice device,
3963 VkSemaphore semaphore,
3964 uint64_t* pValue)
3965{
3966 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
3967 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3968 VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
3969 vkGetSemaphoreCounterValueKHR_VkResult_return = vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
3970 return vkGetSemaphoreCounterValueKHR_VkResult_return;
3971}
3972static VkResult dynCheck_entry_vkGetSemaphoreCounterValueKHR(
3973 VkDevice device,
3974 VkSemaphore semaphore,
3975 uint64_t* pValue)
3976{
3977 auto resources = ResourceTracker::get();
3978 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
3979 {
3980 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreCounterValueKHR", "VK_KHR_timeline_semaphore");
3981 }
3982 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
3983 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3984 VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
3985 vkGetSemaphoreCounterValueKHR_VkResult_return = vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
3986 return vkGetSemaphoreCounterValueKHR_VkResult_return;
3987}
3988static VkResult entry_vkWaitSemaphoresKHR(
3989 VkDevice device,
3990 const VkSemaphoreWaitInfo* pWaitInfo,
3991 uint64_t timeout)
3992{
3993 AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
3994 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3995 VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
3996 vkWaitSemaphoresKHR_VkResult_return = vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
3997 return vkWaitSemaphoresKHR_VkResult_return;
3998}
3999static VkResult dynCheck_entry_vkWaitSemaphoresKHR(
4000 VkDevice device,
4001 const VkSemaphoreWaitInfo* pWaitInfo,
4002 uint64_t timeout)
4003{
4004 auto resources = ResourceTracker::get();
4005 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
4006 {
4007 sOnInvalidDynamicallyCheckedCall("vkWaitSemaphoresKHR", "VK_KHR_timeline_semaphore");
4008 }
4009 AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
4010 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4011 VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
4012 vkWaitSemaphoresKHR_VkResult_return = vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
4013 return vkWaitSemaphoresKHR_VkResult_return;
4014}
4015static VkResult entry_vkSignalSemaphoreKHR(
4016 VkDevice device,
4017 const VkSemaphoreSignalInfo* pSignalInfo)
4018{
4019 AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
4020 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4021 VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
4022 vkSignalSemaphoreKHR_VkResult_return = vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
4023 return vkSignalSemaphoreKHR_VkResult_return;
4024}
4025static VkResult dynCheck_entry_vkSignalSemaphoreKHR(
4026 VkDevice device,
4027 const VkSemaphoreSignalInfo* pSignalInfo)
4028{
4029 auto resources = ResourceTracker::get();
4030 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
4031 {
4032 sOnInvalidDynamicallyCheckedCall("vkSignalSemaphoreKHR", "VK_KHR_timeline_semaphore");
4033 }
4034 AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
4035 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4036 VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
4037 vkSignalSemaphoreKHR_VkResult_return = vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
4038 return vkSignalSemaphoreKHR_VkResult_return;
4039}
4040#endif
4041#ifdef VK_KHR_vulkan_memory_model
4042#endif
4043#ifdef VK_KHR_shader_terminate_invocation
4044#endif
4045#ifdef VK_KHR_fragment_shading_rate
4046static VkResult entry_vkGetPhysicalDeviceFragmentShadingRatesKHR(
4047 VkPhysicalDevice physicalDevice,
4048 uint32_t* pFragmentShadingRateCount,
4049 VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates)
4050{
4051 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFragmentShadingRatesKHR");
4052 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4053 VkResult vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return = (VkResult)0;
4054 vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, true /* do lock */);
4055 return vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return;
4056}
4057static void entry_vkCmdSetFragmentShadingRateKHR(
4058 VkCommandBuffer commandBuffer,
4059 const VkExtent2D* pFragmentSize,
4060 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
4061{
4062 AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateKHR");
4063 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4064 vkEnc->vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, true /* do lock */);
4065}
4066#endif
4067#ifdef VK_KHR_spirv_1_4
4068#endif
4069#ifdef VK_KHR_surface_protected_capabilities
4070#endif
4071#ifdef VK_KHR_separate_depth_stencil_layouts
4072#endif
4073#ifdef VK_KHR_uniform_buffer_standard_layout
4074#endif
4075#ifdef VK_KHR_buffer_device_address
4076static VkDeviceAddress entry_vkGetBufferDeviceAddressKHR(
4077 VkDevice device,
4078 const VkBufferDeviceAddressInfo* pInfo)
4079{
4080 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
4081 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4082 VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
4083 vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
4084 return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
4085}
4086static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressKHR(
4087 VkDevice device,
4088 const VkBufferDeviceAddressInfo* pInfo)
4089{
4090 auto resources = ResourceTracker::get();
4091 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4092 {
4093 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressKHR", "VK_KHR_buffer_device_address");
4094 }
4095 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
4096 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4097 VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
4098 vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
4099 return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
4100}
4101static uint64_t entry_vkGetBufferOpaqueCaptureAddressKHR(
4102 VkDevice device,
4103 const VkBufferDeviceAddressInfo* pInfo)
4104{
4105 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
4106 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4107 uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4108 vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4109 return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
4110}
4111static uint64_t dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR(
4112 VkDevice device,
4113 const VkBufferDeviceAddressInfo* pInfo)
4114{
4115 auto resources = ResourceTracker::get();
4116 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4117 {
4118 sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureAddressKHR", "VK_KHR_buffer_device_address");
4119 }
4120 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
4121 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4122 uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4123 vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4124 return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
4125}
4126static uint64_t entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
4127 VkDevice device,
4128 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
4129{
4130 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
4131 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4132 uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4133 vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4134 return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
4135}
4136static uint64_t dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
4137 VkDevice device,
4138 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
4139{
4140 auto resources = ResourceTracker::get();
4141 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4142 {
4143 sOnInvalidDynamicallyCheckedCall("vkGetDeviceMemoryOpaqueCaptureAddressKHR", "VK_KHR_buffer_device_address");
4144 }
4145 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
4146 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4147 uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4148 vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4149 return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
4150}
4151#endif
4152#ifdef VK_KHR_deferred_host_operations
4153static VkResult entry_vkCreateDeferredOperationKHR(
4154 VkDevice device,
4155 const VkAllocationCallbacks* pAllocator,
4156 VkDeferredOperationKHR* pDeferredOperation)
4157{
4158 AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
4159 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4160 VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
4161 vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, true /* do lock */);
4162 return vkCreateDeferredOperationKHR_VkResult_return;
4163}
4164static VkResult dynCheck_entry_vkCreateDeferredOperationKHR(
4165 VkDevice device,
4166 const VkAllocationCallbacks* pAllocator,
4167 VkDeferredOperationKHR* pDeferredOperation)
4168{
4169 auto resources = ResourceTracker::get();
4170 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4171 {
4172 sOnInvalidDynamicallyCheckedCall("vkCreateDeferredOperationKHR", "VK_KHR_deferred_host_operations");
4173 }
4174 AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
4175 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4176 VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
4177 vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, true /* do lock */);
4178 return vkCreateDeferredOperationKHR_VkResult_return;
4179}
4180static void entry_vkDestroyDeferredOperationKHR(
4181 VkDevice device,
4182 VkDeferredOperationKHR operation,
4183 const VkAllocationCallbacks* pAllocator)
4184{
4185 AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
4186 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4187 vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
4188}
4189static void dynCheck_entry_vkDestroyDeferredOperationKHR(
4190 VkDevice device,
4191 VkDeferredOperationKHR operation,
4192 const VkAllocationCallbacks* pAllocator)
4193{
4194 auto resources = ResourceTracker::get();
4195 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4196 {
4197 sOnInvalidDynamicallyCheckedCall("vkDestroyDeferredOperationKHR", "VK_KHR_deferred_host_operations");
4198 }
4199 AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
4200 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4201 vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
4202}
4203static uint32_t entry_vkGetDeferredOperationMaxConcurrencyKHR(
4204 VkDevice device,
4205 VkDeferredOperationKHR operation)
4206{
4207 AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
4208 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4209 uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
4210 vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
4211 return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
4212}
4213static uint32_t dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR(
4214 VkDevice device,
4215 VkDeferredOperationKHR operation)
4216{
4217 auto resources = ResourceTracker::get();
4218 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4219 {
4220 sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationMaxConcurrencyKHR", "VK_KHR_deferred_host_operations");
4221 }
4222 AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
4223 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4224 uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
4225 vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
4226 return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
4227}
4228static VkResult entry_vkGetDeferredOperationResultKHR(
4229 VkDevice device,
4230 VkDeferredOperationKHR operation)
4231{
4232 AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
4233 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4234 VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
4235 vkGetDeferredOperationResultKHR_VkResult_return = vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
4236 return vkGetDeferredOperationResultKHR_VkResult_return;
4237}
4238static VkResult dynCheck_entry_vkGetDeferredOperationResultKHR(
4239 VkDevice device,
4240 VkDeferredOperationKHR operation)
4241{
4242 auto resources = ResourceTracker::get();
4243 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4244 {
4245 sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationResultKHR", "VK_KHR_deferred_host_operations");
4246 }
4247 AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
4248 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4249 VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
4250 vkGetDeferredOperationResultKHR_VkResult_return = vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
4251 return vkGetDeferredOperationResultKHR_VkResult_return;
4252}
4253static VkResult entry_vkDeferredOperationJoinKHR(
4254 VkDevice device,
4255 VkDeferredOperationKHR operation)
4256{
4257 AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
4258 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4259 VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
4260 vkDeferredOperationJoinKHR_VkResult_return = vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
4261 return vkDeferredOperationJoinKHR_VkResult_return;
4262}
4263static VkResult dynCheck_entry_vkDeferredOperationJoinKHR(
4264 VkDevice device,
4265 VkDeferredOperationKHR operation)
4266{
4267 auto resources = ResourceTracker::get();
4268 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4269 {
4270 sOnInvalidDynamicallyCheckedCall("vkDeferredOperationJoinKHR", "VK_KHR_deferred_host_operations");
4271 }
4272 AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
4273 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4274 VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
4275 vkDeferredOperationJoinKHR_VkResult_return = vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
4276 return vkDeferredOperationJoinKHR_VkResult_return;
4277}
4278#endif
4279#ifdef VK_KHR_pipeline_executable_properties
4280static VkResult entry_vkGetPipelineExecutablePropertiesKHR(
4281 VkDevice device,
4282 const VkPipelineInfoKHR* pPipelineInfo,
4283 uint32_t* pExecutableCount,
4284 VkPipelineExecutablePropertiesKHR* pProperties)
4285{
4286 AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
4287 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4288 VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
4289 vkGetPipelineExecutablePropertiesKHR_VkResult_return = vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, true /* do lock */);
4290 return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
4291}
4292static VkResult dynCheck_entry_vkGetPipelineExecutablePropertiesKHR(
4293 VkDevice device,
4294 const VkPipelineInfoKHR* pPipelineInfo,
4295 uint32_t* pExecutableCount,
4296 VkPipelineExecutablePropertiesKHR* pProperties)
4297{
4298 auto resources = ResourceTracker::get();
4299 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4300 {
4301 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutablePropertiesKHR", "VK_KHR_pipeline_executable_properties");
4302 }
4303 AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
4304 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4305 VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
4306 vkGetPipelineExecutablePropertiesKHR_VkResult_return = vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, true /* do lock */);
4307 return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
4308}
4309static VkResult entry_vkGetPipelineExecutableStatisticsKHR(
4310 VkDevice device,
4311 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4312 uint32_t* pStatisticCount,
4313 VkPipelineExecutableStatisticKHR* pStatistics)
4314{
4315 AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
4316 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4317 VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
4318 vkGetPipelineExecutableStatisticsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, true /* do lock */);
4319 return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
4320}
4321static VkResult dynCheck_entry_vkGetPipelineExecutableStatisticsKHR(
4322 VkDevice device,
4323 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4324 uint32_t* pStatisticCount,
4325 VkPipelineExecutableStatisticKHR* pStatistics)
4326{
4327 auto resources = ResourceTracker::get();
4328 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4329 {
4330 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableStatisticsKHR", "VK_KHR_pipeline_executable_properties");
4331 }
4332 AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
4333 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4334 VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
4335 vkGetPipelineExecutableStatisticsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, true /* do lock */);
4336 return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
4337}
4338static VkResult entry_vkGetPipelineExecutableInternalRepresentationsKHR(
4339 VkDevice device,
4340 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4341 uint32_t* pInternalRepresentationCount,
4342 VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
4343{
4344 AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
4345 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4346 VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
4347 vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, true /* do lock */);
4348 return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
4349}
4350static VkResult dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR(
4351 VkDevice device,
4352 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4353 uint32_t* pInternalRepresentationCount,
4354 VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
4355{
4356 auto resources = ResourceTracker::get();
4357 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4358 {
4359 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableInternalRepresentationsKHR", "VK_KHR_pipeline_executable_properties");
4360 }
4361 AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
4362 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4363 VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
4364 vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, true /* do lock */);
4365 return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
4366}
4367#endif
4368#ifdef VK_KHR_pipeline_library
4369#endif
4370#ifdef VK_KHR_shader_non_semantic_info
4371#endif
4372#ifdef VK_KHR_copy_commands2
4373static void entry_vkCmdCopyBuffer2KHR(
4374 VkCommandBuffer commandBuffer,
4375 const VkCopyBufferInfo2KHR* pCopyBufferInfo)
4376{
4377 AEMU_SCOPED_TRACE("vkCmdCopyBuffer2KHR");
4378 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4379 vkEnc->vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, true /* do lock */);
4380}
4381static void entry_vkCmdCopyImage2KHR(
4382 VkCommandBuffer commandBuffer,
4383 const VkCopyImageInfo2KHR* pCopyImageInfo)
4384{
4385 AEMU_SCOPED_TRACE("vkCmdCopyImage2KHR");
4386 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4387 vkEnc->vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, true /* do lock */);
4388}
4389static void entry_vkCmdCopyBufferToImage2KHR(
4390 VkCommandBuffer commandBuffer,
4391 const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo)
4392{
4393 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage2KHR");
4394 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4395 vkEnc->vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, true /* do lock */);
4396}
4397static void entry_vkCmdCopyImageToBuffer2KHR(
4398 VkCommandBuffer commandBuffer,
4399 const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo)
4400{
4401 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer2KHR");
4402 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4403 vkEnc->vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, true /* do lock */);
4404}
4405static void entry_vkCmdBlitImage2KHR(
4406 VkCommandBuffer commandBuffer,
4407 const VkBlitImageInfo2KHR* pBlitImageInfo)
4408{
4409 AEMU_SCOPED_TRACE("vkCmdBlitImage2KHR");
4410 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4411 vkEnc->vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, true /* do lock */);
4412}
4413static void entry_vkCmdResolveImage2KHR(
4414 VkCommandBuffer commandBuffer,
4415 const VkResolveImageInfo2KHR* pResolveImageInfo)
4416{
4417 AEMU_SCOPED_TRACE("vkCmdResolveImage2KHR");
4418 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4419 vkEnc->vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, true /* do lock */);
4420}
Lingfeng Yang4c056b22020-07-02 11:43:57 -07004421#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08004422#ifdef VK_ANDROID_native_buffer
4423static VkResult entry_vkGetSwapchainGrallocUsageANDROID(
4424 VkDevice device,
4425 VkFormat format,
4426 VkImageUsageFlags imageUsage,
4427 int* grallocUsage)
4428{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004429 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004430 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang808a6312018-11-13 21:06:15 -08004431 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004432 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004433 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
4434}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004435static VkResult dynCheck_entry_vkGetSwapchainGrallocUsageANDROID(
4436 VkDevice device,
4437 VkFormat format,
4438 VkImageUsageFlags imageUsage,
4439 int* grallocUsage)
4440{
4441 auto resources = ResourceTracker::get();
4442 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
4443 {
4444 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainGrallocUsageANDROID", "VK_ANDROID_native_buffer");
4445 }
4446 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004447 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004448 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004449 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004450 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
4451}
Lingfeng Yang808a6312018-11-13 21:06:15 -08004452static VkResult entry_vkAcquireImageANDROID(
4453 VkDevice device,
4454 VkImage image,
4455 int nativeFenceFd,
4456 VkSemaphore semaphore,
4457 VkFence fence)
4458{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004459 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004460 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang808a6312018-11-13 21:06:15 -08004461 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004462 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004463 return vkAcquireImageANDROID_VkResult_return;
4464}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004465static VkResult dynCheck_entry_vkAcquireImageANDROID(
4466 VkDevice device,
4467 VkImage image,
4468 int nativeFenceFd,
4469 VkSemaphore semaphore,
4470 VkFence fence)
4471{
4472 auto resources = ResourceTracker::get();
4473 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
4474 {
4475 sOnInvalidDynamicallyCheckedCall("vkAcquireImageANDROID", "VK_ANDROID_native_buffer");
4476 }
4477 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004478 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004479 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004480 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004481 return vkAcquireImageANDROID_VkResult_return;
4482}
Lingfeng Yang808a6312018-11-13 21:06:15 -08004483static VkResult entry_vkQueueSignalReleaseImageANDROID(
4484 VkQueue queue,
4485 uint32_t waitSemaphoreCount,
4486 const VkSemaphore* pWaitSemaphores,
4487 VkImage image,
4488 int* pNativeFenceFd)
4489{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004490 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004491 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004492 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang084e5342021-07-15 13:06:43 -07004493 auto resources = ResourceTracker::get();
4494 vkQueueSignalReleaseImageANDROID_VkResult_return = resources->on_vkQueueSignalReleaseImageANDROID(vkEnc, VK_SUCCESS, queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd);
Lingfeng Yang808a6312018-11-13 21:06:15 -08004495 return vkQueueSignalReleaseImageANDROID_VkResult_return;
4496}
4497#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004498#ifdef VK_EXT_debug_report
4499static VkResult entry_vkCreateDebugReportCallbackEXT(
4500 VkInstance instance,
4501 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
4502 const VkAllocationCallbacks* pAllocator,
4503 VkDebugReportCallbackEXT* pCallback)
4504{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004505 AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004506 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004507 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004508 vkCreateDebugReportCallbackEXT_VkResult_return = vkEnc->vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004509 return vkCreateDebugReportCallbackEXT_VkResult_return;
4510}
4511static void entry_vkDestroyDebugReportCallbackEXT(
4512 VkInstance instance,
4513 VkDebugReportCallbackEXT callback,
4514 const VkAllocationCallbacks* pAllocator)
4515{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004516 AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004517 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004518 vkEnc->vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004519}
4520static void entry_vkDebugReportMessageEXT(
4521 VkInstance instance,
4522 VkDebugReportFlagsEXT flags,
4523 VkDebugReportObjectTypeEXT objectType,
4524 uint64_t object,
4525 size_t location,
4526 int32_t messageCode,
4527 const char* pLayerPrefix,
4528 const char* pMessage)
4529{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004530 AEMU_SCOPED_TRACE("vkDebugReportMessageEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004531 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004532 vkEnc->vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004533}
4534#endif
4535#ifdef VK_NV_glsl_shader
4536#endif
4537#ifdef VK_EXT_depth_range_unrestricted
4538#endif
4539#ifdef VK_IMG_filter_cubic
4540#endif
4541#ifdef VK_AMD_rasterization_order
4542#endif
4543#ifdef VK_AMD_shader_trinary_minmax
4544#endif
4545#ifdef VK_AMD_shader_explicit_vertex_parameter
4546#endif
4547#ifdef VK_EXT_debug_marker
4548static VkResult entry_vkDebugMarkerSetObjectTagEXT(
4549 VkDevice device,
4550 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
4551{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004552 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004553 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004554 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004555 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004556 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
4557}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004558static VkResult dynCheck_entry_vkDebugMarkerSetObjectTagEXT(
4559 VkDevice device,
4560 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
4561{
4562 auto resources = ResourceTracker::get();
4563 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
4564 {
4565 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectTagEXT", "VK_EXT_debug_marker");
4566 }
4567 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004568 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004569 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004570 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004571 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
4572}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004573static VkResult entry_vkDebugMarkerSetObjectNameEXT(
4574 VkDevice device,
4575 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
4576{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004577 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004578 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004579 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004580 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004581 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
4582}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004583static VkResult dynCheck_entry_vkDebugMarkerSetObjectNameEXT(
4584 VkDevice device,
4585 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
4586{
4587 auto resources = ResourceTracker::get();
4588 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
4589 {
4590 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectNameEXT", "VK_EXT_debug_marker");
4591 }
4592 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004593 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004594 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004595 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004596 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
4597}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004598static void entry_vkCmdDebugMarkerBeginEXT(
4599 VkCommandBuffer commandBuffer,
4600 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
4601{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004602 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004603 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004604 vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004605}
4606static void entry_vkCmdDebugMarkerEndEXT(
4607 VkCommandBuffer commandBuffer)
4608{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004609 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004610 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004611 vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004612}
4613static void entry_vkCmdDebugMarkerInsertEXT(
4614 VkCommandBuffer commandBuffer,
4615 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
4616{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004617 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004618 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004619 vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004620}
4621#endif
4622#ifdef VK_AMD_gcn_shader
4623#endif
4624#ifdef VK_NV_dedicated_allocation
4625#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004626#ifdef VK_EXT_transform_feedback
4627static void entry_vkCmdBindTransformFeedbackBuffersEXT(
4628 VkCommandBuffer commandBuffer,
4629 uint32_t firstBinding,
4630 uint32_t bindingCount,
4631 const VkBuffer* pBuffers,
4632 const VkDeviceSize* pOffsets,
4633 const VkDeviceSize* pSizes)
4634{
4635 AEMU_SCOPED_TRACE("vkCmdBindTransformFeedbackBuffersEXT");
4636 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4637 vkEnc->vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, true /* do lock */);
4638}
4639static void entry_vkCmdBeginTransformFeedbackEXT(
4640 VkCommandBuffer commandBuffer,
4641 uint32_t firstCounterBuffer,
4642 uint32_t counterBufferCount,
4643 const VkBuffer* pCounterBuffers,
4644 const VkDeviceSize* pCounterBufferOffsets)
4645{
4646 AEMU_SCOPED_TRACE("vkCmdBeginTransformFeedbackEXT");
4647 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4648 vkEnc->vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
4649}
4650static void entry_vkCmdEndTransformFeedbackEXT(
4651 VkCommandBuffer commandBuffer,
4652 uint32_t firstCounterBuffer,
4653 uint32_t counterBufferCount,
4654 const VkBuffer* pCounterBuffers,
4655 const VkDeviceSize* pCounterBufferOffsets)
4656{
4657 AEMU_SCOPED_TRACE("vkCmdEndTransformFeedbackEXT");
4658 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4659 vkEnc->vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
4660}
4661static void entry_vkCmdBeginQueryIndexedEXT(
4662 VkCommandBuffer commandBuffer,
4663 VkQueryPool queryPool,
4664 uint32_t query,
4665 VkQueryControlFlags flags,
4666 uint32_t index)
4667{
4668 AEMU_SCOPED_TRACE("vkCmdBeginQueryIndexedEXT");
4669 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4670 vkEnc->vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, true /* do lock */);
4671}
4672static void entry_vkCmdEndQueryIndexedEXT(
4673 VkCommandBuffer commandBuffer,
4674 VkQueryPool queryPool,
4675 uint32_t query,
4676 uint32_t index)
4677{
4678 AEMU_SCOPED_TRACE("vkCmdEndQueryIndexedEXT");
4679 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4680 vkEnc->vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, true /* do lock */);
4681}
4682static void entry_vkCmdDrawIndirectByteCountEXT(
4683 VkCommandBuffer commandBuffer,
4684 uint32_t instanceCount,
4685 uint32_t firstInstance,
4686 VkBuffer counterBuffer,
4687 VkDeviceSize counterBufferOffset,
4688 uint32_t counterOffset,
4689 uint32_t vertexStride)
4690{
4691 AEMU_SCOPED_TRACE("vkCmdDrawIndirectByteCountEXT");
4692 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4693 vkEnc->vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, true /* do lock */);
4694}
4695#endif
4696#ifdef VK_NVX_image_view_handle
4697static uint32_t entry_vkGetImageViewHandleNVX(
4698 VkDevice device,
4699 const VkImageViewHandleInfoNVX* pInfo)
4700{
4701 AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
4702 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4703 uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
4704 vkGetImageViewHandleNVX_uint32_t_return = vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
4705 return vkGetImageViewHandleNVX_uint32_t_return;
4706}
4707static uint32_t dynCheck_entry_vkGetImageViewHandleNVX(
4708 VkDevice device,
4709 const VkImageViewHandleInfoNVX* pInfo)
4710{
4711 auto resources = ResourceTracker::get();
4712 if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle"))
4713 {
4714 sOnInvalidDynamicallyCheckedCall("vkGetImageViewHandleNVX", "VK_NVX_image_view_handle");
4715 }
4716 AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
4717 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4718 uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
4719 vkGetImageViewHandleNVX_uint32_t_return = vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
4720 return vkGetImageViewHandleNVX_uint32_t_return;
4721}
4722static VkResult entry_vkGetImageViewAddressNVX(
4723 VkDevice device,
4724 VkImageView imageView,
4725 VkImageViewAddressPropertiesNVX* pProperties)
4726{
4727 AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
4728 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4729 VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
4730 vkGetImageViewAddressNVX_VkResult_return = vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
4731 return vkGetImageViewAddressNVX_VkResult_return;
4732}
4733static VkResult dynCheck_entry_vkGetImageViewAddressNVX(
4734 VkDevice device,
4735 VkImageView imageView,
4736 VkImageViewAddressPropertiesNVX* pProperties)
4737{
4738 auto resources = ResourceTracker::get();
4739 if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle"))
4740 {
4741 sOnInvalidDynamicallyCheckedCall("vkGetImageViewAddressNVX", "VK_NVX_image_view_handle");
4742 }
4743 AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
4744 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4745 VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
4746 vkGetImageViewAddressNVX_VkResult_return = vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
4747 return vkGetImageViewAddressNVX_VkResult_return;
4748}
4749#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004750#ifdef VK_AMD_draw_indirect_count
4751static void entry_vkCmdDrawIndirectCountAMD(
4752 VkCommandBuffer commandBuffer,
4753 VkBuffer buffer,
4754 VkDeviceSize offset,
4755 VkBuffer countBuffer,
4756 VkDeviceSize countBufferOffset,
4757 uint32_t maxDrawCount,
4758 uint32_t stride)
4759{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004760 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004761 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004762 vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004763}
4764static void entry_vkCmdDrawIndexedIndirectCountAMD(
4765 VkCommandBuffer commandBuffer,
4766 VkBuffer buffer,
4767 VkDeviceSize offset,
4768 VkBuffer countBuffer,
4769 VkDeviceSize countBufferOffset,
4770 uint32_t maxDrawCount,
4771 uint32_t stride)
4772{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004773 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004774 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004775 vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004776}
4777#endif
4778#ifdef VK_AMD_negative_viewport_height
4779#endif
4780#ifdef VK_AMD_gpu_shader_half_float
4781#endif
4782#ifdef VK_AMD_shader_ballot
4783#endif
4784#ifdef VK_AMD_texture_gather_bias_lod
4785#endif
4786#ifdef VK_AMD_shader_info
4787static VkResult entry_vkGetShaderInfoAMD(
4788 VkDevice device,
4789 VkPipeline pipeline,
4790 VkShaderStageFlagBits shaderStage,
4791 VkShaderInfoTypeAMD infoType,
4792 size_t* pInfoSize,
4793 void* pInfo)
4794{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004795 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004796 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004797 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004798 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004799 return vkGetShaderInfoAMD_VkResult_return;
4800}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004801static VkResult dynCheck_entry_vkGetShaderInfoAMD(
4802 VkDevice device,
4803 VkPipeline pipeline,
4804 VkShaderStageFlagBits shaderStage,
4805 VkShaderInfoTypeAMD infoType,
4806 size_t* pInfoSize,
4807 void* pInfo)
4808{
4809 auto resources = ResourceTracker::get();
4810 if (!resources->hasDeviceExtension(device, "VK_AMD_shader_info"))
4811 {
4812 sOnInvalidDynamicallyCheckedCall("vkGetShaderInfoAMD", "VK_AMD_shader_info");
4813 }
4814 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004815 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004816 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004817 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004818 return vkGetShaderInfoAMD_VkResult_return;
4819}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004820#endif
4821#ifdef VK_AMD_shader_image_load_store_lod
4822#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004823#ifdef VK_GGP_stream_descriptor_surface
4824static VkResult entry_vkCreateStreamDescriptorSurfaceGGP(
4825 VkInstance instance,
4826 const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
4827 const VkAllocationCallbacks* pAllocator,
4828 VkSurfaceKHR* pSurface)
4829{
4830 AEMU_SCOPED_TRACE("vkCreateStreamDescriptorSurfaceGGP");
4831 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4832 VkResult vkCreateStreamDescriptorSurfaceGGP_VkResult_return = (VkResult)0;
4833 vkCreateStreamDescriptorSurfaceGGP_VkResult_return = vkEnc->vkCreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
4834 return vkCreateStreamDescriptorSurfaceGGP_VkResult_return;
4835}
4836#endif
4837#ifdef VK_NV_corner_sampled_image
4838#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004839#ifdef VK_IMG_format_pvrtc
4840#endif
4841#ifdef VK_NV_external_memory_capabilities
4842static VkResult entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
4843 VkPhysicalDevice physicalDevice,
4844 VkFormat format,
4845 VkImageType type,
4846 VkImageTiling tiling,
4847 VkImageUsageFlags usage,
4848 VkImageCreateFlags flags,
4849 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
4850 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
4851{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004852 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004853 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004854 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004855 vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004856 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
4857}
4858#endif
4859#ifdef VK_NV_external_memory
4860#endif
4861#ifdef VK_NV_external_memory_win32
4862static VkResult entry_vkGetMemoryWin32HandleNV(
4863 VkDevice device,
4864 VkDeviceMemory memory,
4865 VkExternalMemoryHandleTypeFlagsNV handleType,
4866 HANDLE* pHandle)
4867{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004868 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004869 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004870 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004871 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004872 return vkGetMemoryWin32HandleNV_VkResult_return;
4873}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004874static VkResult dynCheck_entry_vkGetMemoryWin32HandleNV(
4875 VkDevice device,
4876 VkDeviceMemory memory,
4877 VkExternalMemoryHandleTypeFlagsNV handleType,
4878 HANDLE* pHandle)
4879{
4880 auto resources = ResourceTracker::get();
4881 if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_win32"))
4882 {
4883 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleNV", "VK_NV_external_memory_win32");
4884 }
4885 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004886 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004887 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004888 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004889 return vkGetMemoryWin32HandleNV_VkResult_return;
4890}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004891#endif
4892#ifdef VK_NV_win32_keyed_mutex
4893#endif
4894#ifdef VK_EXT_validation_flags
4895#endif
4896#ifdef VK_NN_vi_surface
4897static VkResult entry_vkCreateViSurfaceNN(
4898 VkInstance instance,
4899 const VkViSurfaceCreateInfoNN* pCreateInfo,
4900 const VkAllocationCallbacks* pAllocator,
4901 VkSurfaceKHR* pSurface)
4902{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004903 AEMU_SCOPED_TRACE("vkCreateViSurfaceNN");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004904 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004905 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004906 vkCreateViSurfaceNN_VkResult_return = vkEnc->vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004907 return vkCreateViSurfaceNN_VkResult_return;
4908}
4909#endif
4910#ifdef VK_EXT_shader_subgroup_ballot
4911#endif
4912#ifdef VK_EXT_shader_subgroup_vote
4913#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004914#ifdef VK_EXT_texture_compression_astc_hdr
4915#endif
4916#ifdef VK_EXT_astc_decode_mode
4917#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004918#ifdef VK_EXT_conditional_rendering
4919static void entry_vkCmdBeginConditionalRenderingEXT(
4920 VkCommandBuffer commandBuffer,
4921 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
4922{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004923 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004924 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004925 vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004926}
4927static void entry_vkCmdEndConditionalRenderingEXT(
4928 VkCommandBuffer commandBuffer)
4929{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004930 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004931 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004932 vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004933}
4934#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004935#ifdef VK_NV_clip_space_w_scaling
4936static void entry_vkCmdSetViewportWScalingNV(
4937 VkCommandBuffer commandBuffer,
4938 uint32_t firstViewport,
4939 uint32_t viewportCount,
4940 const VkViewportWScalingNV* pViewportWScalings)
4941{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004942 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004943 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004944 vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004945}
4946#endif
4947#ifdef VK_EXT_direct_mode_display
4948static VkResult entry_vkReleaseDisplayEXT(
4949 VkPhysicalDevice physicalDevice,
4950 VkDisplayKHR display)
4951{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004952 AEMU_SCOPED_TRACE("vkReleaseDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004953 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004954 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004955 vkReleaseDisplayEXT_VkResult_return = vkEnc->vkReleaseDisplayEXT(physicalDevice, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004956 return vkReleaseDisplayEXT_VkResult_return;
4957}
4958#endif
4959#ifdef VK_EXT_acquire_xlib_display
4960static VkResult entry_vkAcquireXlibDisplayEXT(
4961 VkPhysicalDevice physicalDevice,
4962 Display* dpy,
4963 VkDisplayKHR display)
4964{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004965 AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004966 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004967 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004968 vkAcquireXlibDisplayEXT_VkResult_return = vkEnc->vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004969 return vkAcquireXlibDisplayEXT_VkResult_return;
4970}
4971static VkResult entry_vkGetRandROutputDisplayEXT(
4972 VkPhysicalDevice physicalDevice,
4973 Display* dpy,
4974 RROutput rrOutput,
4975 VkDisplayKHR* pDisplay)
4976{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004977 AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004978 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004979 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004980 vkGetRandROutputDisplayEXT_VkResult_return = vkEnc->vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004981 return vkGetRandROutputDisplayEXT_VkResult_return;
4982}
4983#endif
4984#ifdef VK_EXT_display_surface_counter
4985static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
4986 VkPhysicalDevice physicalDevice,
4987 VkSurfaceKHR surface,
4988 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
4989{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004990 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004991 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004992 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004993 vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004994 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
4995}
4996#endif
4997#ifdef VK_EXT_display_control
4998static VkResult entry_vkDisplayPowerControlEXT(
4999 VkDevice device,
5000 VkDisplayKHR display,
5001 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
5002{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005003 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005004 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005005 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005006 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005007 return vkDisplayPowerControlEXT_VkResult_return;
5008}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005009static VkResult dynCheck_entry_vkDisplayPowerControlEXT(
5010 VkDevice device,
5011 VkDisplayKHR display,
5012 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
5013{
5014 auto resources = ResourceTracker::get();
5015 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5016 {
5017 sOnInvalidDynamicallyCheckedCall("vkDisplayPowerControlEXT", "VK_EXT_display_control");
5018 }
5019 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005020 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005021 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005022 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005023 return vkDisplayPowerControlEXT_VkResult_return;
5024}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005025static VkResult entry_vkRegisterDeviceEventEXT(
5026 VkDevice device,
5027 const VkDeviceEventInfoEXT* pDeviceEventInfo,
5028 const VkAllocationCallbacks* pAllocator,
5029 VkFence* pFence)
5030{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005031 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005032 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005033 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005034 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005035 return vkRegisterDeviceEventEXT_VkResult_return;
5036}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005037static VkResult dynCheck_entry_vkRegisterDeviceEventEXT(
5038 VkDevice device,
5039 const VkDeviceEventInfoEXT* pDeviceEventInfo,
5040 const VkAllocationCallbacks* pAllocator,
5041 VkFence* pFence)
5042{
5043 auto resources = ResourceTracker::get();
5044 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5045 {
5046 sOnInvalidDynamicallyCheckedCall("vkRegisterDeviceEventEXT", "VK_EXT_display_control");
5047 }
5048 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005049 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005050 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005051 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005052 return vkRegisterDeviceEventEXT_VkResult_return;
5053}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005054static VkResult entry_vkRegisterDisplayEventEXT(
5055 VkDevice device,
5056 VkDisplayKHR display,
5057 const VkDisplayEventInfoEXT* pDisplayEventInfo,
5058 const VkAllocationCallbacks* pAllocator,
5059 VkFence* pFence)
5060{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005061 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005062 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005063 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005064 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005065 return vkRegisterDisplayEventEXT_VkResult_return;
5066}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005067static VkResult dynCheck_entry_vkRegisterDisplayEventEXT(
5068 VkDevice device,
5069 VkDisplayKHR display,
5070 const VkDisplayEventInfoEXT* pDisplayEventInfo,
5071 const VkAllocationCallbacks* pAllocator,
5072 VkFence* pFence)
5073{
5074 auto resources = ResourceTracker::get();
5075 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5076 {
5077 sOnInvalidDynamicallyCheckedCall("vkRegisterDisplayEventEXT", "VK_EXT_display_control");
5078 }
5079 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005080 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005081 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005082 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005083 return vkRegisterDisplayEventEXT_VkResult_return;
5084}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005085static VkResult entry_vkGetSwapchainCounterEXT(
5086 VkDevice device,
5087 VkSwapchainKHR swapchain,
5088 VkSurfaceCounterFlagBitsEXT counter,
5089 uint64_t* pCounterValue)
5090{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005091 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005092 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005093 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005094 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005095 return vkGetSwapchainCounterEXT_VkResult_return;
5096}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005097static VkResult dynCheck_entry_vkGetSwapchainCounterEXT(
5098 VkDevice device,
5099 VkSwapchainKHR swapchain,
5100 VkSurfaceCounterFlagBitsEXT counter,
5101 uint64_t* pCounterValue)
5102{
5103 auto resources = ResourceTracker::get();
5104 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
5105 {
5106 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainCounterEXT", "VK_EXT_display_control");
5107 }
5108 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005109 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005110 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005111 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005112 return vkGetSwapchainCounterEXT_VkResult_return;
5113}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005114#endif
5115#ifdef VK_GOOGLE_display_timing
5116static VkResult entry_vkGetRefreshCycleDurationGOOGLE(
5117 VkDevice device,
5118 VkSwapchainKHR swapchain,
5119 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
5120{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005121 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005122 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005123 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005124 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005125 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
5126}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005127static VkResult dynCheck_entry_vkGetRefreshCycleDurationGOOGLE(
5128 VkDevice device,
5129 VkSwapchainKHR swapchain,
5130 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
5131{
5132 auto resources = ResourceTracker::get();
5133 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
5134 {
5135 sOnInvalidDynamicallyCheckedCall("vkGetRefreshCycleDurationGOOGLE", "VK_GOOGLE_display_timing");
5136 }
5137 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005138 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005139 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005140 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005141 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
5142}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005143static VkResult entry_vkGetPastPresentationTimingGOOGLE(
5144 VkDevice device,
5145 VkSwapchainKHR swapchain,
5146 uint32_t* pPresentationTimingCount,
5147 VkPastPresentationTimingGOOGLE* pPresentationTimings)
5148{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005149 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005150 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005151 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005152 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005153 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
5154}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005155static VkResult dynCheck_entry_vkGetPastPresentationTimingGOOGLE(
5156 VkDevice device,
5157 VkSwapchainKHR swapchain,
5158 uint32_t* pPresentationTimingCount,
5159 VkPastPresentationTimingGOOGLE* pPresentationTimings)
5160{
5161 auto resources = ResourceTracker::get();
5162 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
5163 {
5164 sOnInvalidDynamicallyCheckedCall("vkGetPastPresentationTimingGOOGLE", "VK_GOOGLE_display_timing");
5165 }
5166 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005167 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005168 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005169 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005170 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
5171}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005172#endif
5173#ifdef VK_NV_sample_mask_override_coverage
5174#endif
5175#ifdef VK_NV_geometry_shader_passthrough
5176#endif
5177#ifdef VK_NV_viewport_array2
5178#endif
5179#ifdef VK_NVX_multiview_per_view_attributes
5180#endif
5181#ifdef VK_NV_viewport_swizzle
5182#endif
5183#ifdef VK_EXT_discard_rectangles
5184static void entry_vkCmdSetDiscardRectangleEXT(
5185 VkCommandBuffer commandBuffer,
5186 uint32_t firstDiscardRectangle,
5187 uint32_t discardRectangleCount,
5188 const VkRect2D* pDiscardRectangles)
5189{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005190 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005191 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005192 vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005193}
5194#endif
5195#ifdef VK_EXT_conservative_rasterization
5196#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005197#ifdef VK_EXT_depth_clip_enable
5198#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005199#ifdef VK_EXT_swapchain_colorspace
5200#endif
5201#ifdef VK_EXT_hdr_metadata
5202static void entry_vkSetHdrMetadataEXT(
5203 VkDevice device,
5204 uint32_t swapchainCount,
5205 const VkSwapchainKHR* pSwapchains,
5206 const VkHdrMetadataEXT* pMetadata)
5207{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005208 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005209 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005210 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005211}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005212static void dynCheck_entry_vkSetHdrMetadataEXT(
5213 VkDevice device,
5214 uint32_t swapchainCount,
5215 const VkSwapchainKHR* pSwapchains,
5216 const VkHdrMetadataEXT* pMetadata)
5217{
5218 auto resources = ResourceTracker::get();
5219 if (!resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata"))
5220 {
5221 sOnInvalidDynamicallyCheckedCall("vkSetHdrMetadataEXT", "VK_EXT_hdr_metadata");
5222 }
5223 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005224 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005225 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005226}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005227#endif
5228#ifdef VK_MVK_ios_surface
5229static VkResult entry_vkCreateIOSSurfaceMVK(
5230 VkInstance instance,
5231 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
5232 const VkAllocationCallbacks* pAllocator,
5233 VkSurfaceKHR* pSurface)
5234{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005235 AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005236 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005237 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005238 vkCreateIOSSurfaceMVK_VkResult_return = vkEnc->vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005239 return vkCreateIOSSurfaceMVK_VkResult_return;
5240}
5241#endif
5242#ifdef VK_MVK_macos_surface
5243static VkResult entry_vkCreateMacOSSurfaceMVK(
5244 VkInstance instance,
5245 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
5246 const VkAllocationCallbacks* pAllocator,
5247 VkSurfaceKHR* pSurface)
5248{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005249 AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005250 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005251 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005252 vkCreateMacOSSurfaceMVK_VkResult_return = vkEnc->vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005253 return vkCreateMacOSSurfaceMVK_VkResult_return;
5254}
5255#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005256#ifdef VK_MVK_moltenvk
5257static void entry_vkGetMTLDeviceMVK(
5258 VkPhysicalDevice physicalDevice,
5259 void** pMTLDevice)
5260{
5261 AEMU_SCOPED_TRACE("vkGetMTLDeviceMVK");
5262 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5263 vkEnc->vkGetMTLDeviceMVK(physicalDevice, pMTLDevice, true /* do lock */);
5264}
5265static VkResult entry_vkSetMTLTextureMVK(
5266 VkImage image,
5267 void* mtlTexture)
5268{
5269 AEMU_SCOPED_TRACE("vkSetMTLTextureMVK");
5270 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5271 VkResult vkSetMTLTextureMVK_VkResult_return = (VkResult)0;
5272 vkSetMTLTextureMVK_VkResult_return = vkEnc->vkSetMTLTextureMVK(image, mtlTexture, true /* do lock */);
5273 return vkSetMTLTextureMVK_VkResult_return;
5274}
5275static void entry_vkGetMTLTextureMVK(
5276 VkImage image,
5277 void** pMTLTexture)
5278{
5279 AEMU_SCOPED_TRACE("vkGetMTLTextureMVK");
5280 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5281 vkEnc->vkGetMTLTextureMVK(image, pMTLTexture, true /* do lock */);
5282}
5283static void entry_vkGetMTLBufferMVK(
5284 VkBuffer buffer,
5285 void** pMTLBuffer)
5286{
5287 AEMU_SCOPED_TRACE("vkGetMTLBufferMVK");
5288 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5289 vkEnc->vkGetMTLBufferMVK(buffer, pMTLBuffer, true /* do lock */);
5290}
5291static VkResult entry_vkUseIOSurfaceMVK(
5292 VkImage image,
5293 void* ioSurface)
5294{
5295 AEMU_SCOPED_TRACE("vkUseIOSurfaceMVK");
5296 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5297 VkResult vkUseIOSurfaceMVK_VkResult_return = (VkResult)0;
5298 vkUseIOSurfaceMVK_VkResult_return = vkEnc->vkUseIOSurfaceMVK(image, ioSurface, true /* do lock */);
5299 return vkUseIOSurfaceMVK_VkResult_return;
5300}
5301static void entry_vkGetIOSurfaceMVK(
5302 VkImage image,
5303 void** pIOSurface)
5304{
5305 AEMU_SCOPED_TRACE("vkGetIOSurfaceMVK");
5306 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5307 vkEnc->vkGetIOSurfaceMVK(image, pIOSurface, true /* do lock */);
5308}
5309#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005310#ifdef VK_EXT_external_memory_dma_buf
5311#endif
5312#ifdef VK_EXT_queue_family_foreign
5313#endif
5314#ifdef VK_EXT_debug_utils
5315static VkResult entry_vkSetDebugUtilsObjectNameEXT(
5316 VkDevice device,
5317 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
5318{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005319 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005320 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005321 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005322 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005323 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
5324}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005325static VkResult dynCheck_entry_vkSetDebugUtilsObjectNameEXT(
5326 VkDevice device,
5327 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
5328{
5329 auto resources = ResourceTracker::get();
5330 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
5331 {
5332 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectNameEXT", "VK_EXT_debug_utils");
5333 }
5334 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005335 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005336 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005337 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005338 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
5339}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005340static VkResult entry_vkSetDebugUtilsObjectTagEXT(
5341 VkDevice device,
5342 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
5343{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005344 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005345 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005346 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005347 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005348 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
5349}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005350static VkResult dynCheck_entry_vkSetDebugUtilsObjectTagEXT(
5351 VkDevice device,
5352 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
5353{
5354 auto resources = ResourceTracker::get();
5355 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
5356 {
5357 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectTagEXT", "VK_EXT_debug_utils");
5358 }
5359 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005360 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005361 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005362 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005363 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
5364}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005365static void entry_vkQueueBeginDebugUtilsLabelEXT(
5366 VkQueue queue,
5367 const VkDebugUtilsLabelEXT* pLabelInfo)
5368{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005369 AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005370 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005371 vkEnc->vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005372}
5373static void entry_vkQueueEndDebugUtilsLabelEXT(
5374 VkQueue queue)
5375{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005376 AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005377 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005378 vkEnc->vkQueueEndDebugUtilsLabelEXT(queue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005379}
5380static void entry_vkQueueInsertDebugUtilsLabelEXT(
5381 VkQueue queue,
5382 const VkDebugUtilsLabelEXT* pLabelInfo)
5383{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005384 AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005385 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005386 vkEnc->vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005387}
5388static void entry_vkCmdBeginDebugUtilsLabelEXT(
5389 VkCommandBuffer commandBuffer,
5390 const VkDebugUtilsLabelEXT* pLabelInfo)
5391{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005392 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005393 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005394 vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005395}
5396static void entry_vkCmdEndDebugUtilsLabelEXT(
5397 VkCommandBuffer commandBuffer)
5398{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005399 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005400 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005401 vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005402}
5403static void entry_vkCmdInsertDebugUtilsLabelEXT(
5404 VkCommandBuffer commandBuffer,
5405 const VkDebugUtilsLabelEXT* pLabelInfo)
5406{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005407 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005408 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005409 vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005410}
5411static VkResult entry_vkCreateDebugUtilsMessengerEXT(
5412 VkInstance instance,
5413 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
5414 const VkAllocationCallbacks* pAllocator,
5415 VkDebugUtilsMessengerEXT* pMessenger)
5416{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005417 AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005418 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005419 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005420 vkCreateDebugUtilsMessengerEXT_VkResult_return = vkEnc->vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005421 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
5422}
5423static void entry_vkDestroyDebugUtilsMessengerEXT(
5424 VkInstance instance,
5425 VkDebugUtilsMessengerEXT messenger,
5426 const VkAllocationCallbacks* pAllocator)
5427{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005428 AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005429 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005430 vkEnc->vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005431}
5432static void entry_vkSubmitDebugUtilsMessageEXT(
5433 VkInstance instance,
5434 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
5435 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
5436 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
5437{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005438 AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005439 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005440 vkEnc->vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005441}
5442#endif
5443#ifdef VK_ANDROID_external_memory_android_hardware_buffer
5444static VkResult entry_vkGetAndroidHardwareBufferPropertiesANDROID(
5445 VkDevice device,
5446 const AHardwareBuffer* buffer,
5447 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
5448{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005449 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005450 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005451 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08005452 auto resources = ResourceTracker::get();
5453 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005454 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
5455}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005456static VkResult dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID(
5457 VkDevice device,
5458 const AHardwareBuffer* buffer,
5459 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
5460{
5461 auto resources = ResourceTracker::get();
5462 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
5463 {
5464 sOnInvalidDynamicallyCheckedCall("vkGetAndroidHardwareBufferPropertiesANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
5465 }
5466 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005467 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005468 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
5469 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
5470 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
5471}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005472static VkResult entry_vkGetMemoryAndroidHardwareBufferANDROID(
5473 VkDevice device,
5474 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
5475 AHardwareBuffer** pBuffer)
5476{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005477 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005478 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005479 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08005480 auto resources = ResourceTracker::get();
5481 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005482 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
5483}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005484static VkResult dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID(
5485 VkDevice device,
5486 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
5487 AHardwareBuffer** pBuffer)
5488{
5489 auto resources = ResourceTracker::get();
5490 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
5491 {
5492 sOnInvalidDynamicallyCheckedCall("vkGetMemoryAndroidHardwareBufferANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
5493 }
5494 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005495 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005496 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
5497 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
5498 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
5499}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005500#endif
5501#ifdef VK_EXT_sampler_filter_minmax
5502#endif
5503#ifdef VK_AMD_gpu_shader_int16
5504#endif
5505#ifdef VK_AMD_mixed_attachment_samples
5506#endif
5507#ifdef VK_AMD_shader_fragment_mask
5508#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005509#ifdef VK_EXT_inline_uniform_block
5510#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005511#ifdef VK_EXT_shader_stencil_export
5512#endif
5513#ifdef VK_EXT_sample_locations
5514static void entry_vkCmdSetSampleLocationsEXT(
5515 VkCommandBuffer commandBuffer,
5516 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
5517{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005518 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005519 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005520 vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005521}
5522static void entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(
5523 VkPhysicalDevice physicalDevice,
5524 VkSampleCountFlagBits samples,
5525 VkMultisamplePropertiesEXT* pMultisampleProperties)
5526{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005527 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005528 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005529 vkEnc->vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005530}
5531#endif
5532#ifdef VK_EXT_blend_operation_advanced
5533#endif
5534#ifdef VK_NV_fragment_coverage_to_color
5535#endif
5536#ifdef VK_NV_framebuffer_mixed_samples
5537#endif
5538#ifdef VK_NV_fill_rectangle
5539#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005540#ifdef VK_NV_shader_sm_builtins
5541#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005542#ifdef VK_EXT_post_depth_coverage
5543#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005544#ifdef VK_EXT_image_drm_format_modifier
5545static VkResult entry_vkGetImageDrmFormatModifierPropertiesEXT(
5546 VkDevice device,
5547 VkImage image,
5548 VkImageDrmFormatModifierPropertiesEXT* pProperties)
5549{
5550 AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
5551 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5552 VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
5553 vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, true /* do lock */);
5554 return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
5555}
5556static VkResult dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT(
5557 VkDevice device,
5558 VkImage image,
5559 VkImageDrmFormatModifierPropertiesEXT* pProperties)
5560{
5561 auto resources = ResourceTracker::get();
5562 if (!resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier"))
5563 {
5564 sOnInvalidDynamicallyCheckedCall("vkGetImageDrmFormatModifierPropertiesEXT", "VK_EXT_image_drm_format_modifier");
5565 }
5566 AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
5567 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5568 VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
5569 vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, true /* do lock */);
5570 return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
5571}
5572#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005573#ifdef VK_EXT_validation_cache
5574static VkResult entry_vkCreateValidationCacheEXT(
5575 VkDevice device,
5576 const VkValidationCacheCreateInfoEXT* pCreateInfo,
5577 const VkAllocationCallbacks* pAllocator,
5578 VkValidationCacheEXT* pValidationCache)
5579{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005580 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005581 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005582 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005583 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005584 return vkCreateValidationCacheEXT_VkResult_return;
5585}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005586static VkResult dynCheck_entry_vkCreateValidationCacheEXT(
5587 VkDevice device,
5588 const VkValidationCacheCreateInfoEXT* pCreateInfo,
5589 const VkAllocationCallbacks* pAllocator,
5590 VkValidationCacheEXT* pValidationCache)
5591{
5592 auto resources = ResourceTracker::get();
5593 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5594 {
5595 sOnInvalidDynamicallyCheckedCall("vkCreateValidationCacheEXT", "VK_EXT_validation_cache");
5596 }
5597 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005598 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005599 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005600 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005601 return vkCreateValidationCacheEXT_VkResult_return;
5602}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005603static void entry_vkDestroyValidationCacheEXT(
5604 VkDevice device,
5605 VkValidationCacheEXT validationCache,
5606 const VkAllocationCallbacks* pAllocator)
5607{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005608 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005609 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005610 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005611}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005612static void dynCheck_entry_vkDestroyValidationCacheEXT(
5613 VkDevice device,
5614 VkValidationCacheEXT validationCache,
5615 const VkAllocationCallbacks* pAllocator)
5616{
5617 auto resources = ResourceTracker::get();
5618 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5619 {
5620 sOnInvalidDynamicallyCheckedCall("vkDestroyValidationCacheEXT", "VK_EXT_validation_cache");
5621 }
5622 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005623 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005624 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005625}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005626static VkResult entry_vkMergeValidationCachesEXT(
5627 VkDevice device,
5628 VkValidationCacheEXT dstCache,
5629 uint32_t srcCacheCount,
5630 const VkValidationCacheEXT* pSrcCaches)
5631{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005632 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005633 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005634 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005635 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005636 return vkMergeValidationCachesEXT_VkResult_return;
5637}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005638static VkResult dynCheck_entry_vkMergeValidationCachesEXT(
5639 VkDevice device,
5640 VkValidationCacheEXT dstCache,
5641 uint32_t srcCacheCount,
5642 const VkValidationCacheEXT* pSrcCaches)
5643{
5644 auto resources = ResourceTracker::get();
5645 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5646 {
5647 sOnInvalidDynamicallyCheckedCall("vkMergeValidationCachesEXT", "VK_EXT_validation_cache");
5648 }
5649 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005650 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005651 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005652 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005653 return vkMergeValidationCachesEXT_VkResult_return;
5654}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005655static VkResult entry_vkGetValidationCacheDataEXT(
5656 VkDevice device,
5657 VkValidationCacheEXT validationCache,
5658 size_t* pDataSize,
5659 void* pData)
5660{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005661 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005662 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005663 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005664 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005665 return vkGetValidationCacheDataEXT_VkResult_return;
5666}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005667static VkResult dynCheck_entry_vkGetValidationCacheDataEXT(
5668 VkDevice device,
5669 VkValidationCacheEXT validationCache,
5670 size_t* pDataSize,
5671 void* pData)
5672{
5673 auto resources = ResourceTracker::get();
5674 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
5675 {
5676 sOnInvalidDynamicallyCheckedCall("vkGetValidationCacheDataEXT", "VK_EXT_validation_cache");
5677 }
5678 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005679 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005680 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005681 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005682 return vkGetValidationCacheDataEXT_VkResult_return;
5683}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005684#endif
5685#ifdef VK_EXT_descriptor_indexing
5686#endif
5687#ifdef VK_EXT_shader_viewport_index_layer
5688#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005689#ifdef VK_NV_shading_rate_image
5690static void entry_vkCmdBindShadingRateImageNV(
5691 VkCommandBuffer commandBuffer,
5692 VkImageView imageView,
5693 VkImageLayout imageLayout)
5694{
5695 AEMU_SCOPED_TRACE("vkCmdBindShadingRateImageNV");
5696 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5697 vkEnc->vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, true /* do lock */);
5698}
5699static void entry_vkCmdSetViewportShadingRatePaletteNV(
5700 VkCommandBuffer commandBuffer,
5701 uint32_t firstViewport,
5702 uint32_t viewportCount,
5703 const VkShadingRatePaletteNV* pShadingRatePalettes)
5704{
5705 AEMU_SCOPED_TRACE("vkCmdSetViewportShadingRatePaletteNV");
5706 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5707 vkEnc->vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, true /* do lock */);
5708}
5709static void entry_vkCmdSetCoarseSampleOrderNV(
5710 VkCommandBuffer commandBuffer,
5711 VkCoarseSampleOrderTypeNV sampleOrderType,
5712 uint32_t customSampleOrderCount,
5713 const VkCoarseSampleOrderCustomNV* pCustomSampleOrders)
5714{
5715 AEMU_SCOPED_TRACE("vkCmdSetCoarseSampleOrderNV");
5716 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5717 vkEnc->vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, true /* do lock */);
5718}
5719#endif
5720#ifdef VK_NV_ray_tracing
5721static VkResult entry_vkCreateAccelerationStructureNV(
5722 VkDevice device,
5723 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
5724 const VkAllocationCallbacks* pAllocator,
5725 VkAccelerationStructureNV* pAccelerationStructure)
5726{
5727 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
5728 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5729 VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
5730 vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
5731 return vkCreateAccelerationStructureNV_VkResult_return;
5732}
5733static VkResult dynCheck_entry_vkCreateAccelerationStructureNV(
5734 VkDevice device,
5735 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
5736 const VkAllocationCallbacks* pAllocator,
5737 VkAccelerationStructureNV* pAccelerationStructure)
5738{
5739 auto resources = ResourceTracker::get();
5740 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5741 {
5742 sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureNV", "VK_NV_ray_tracing");
5743 }
5744 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
5745 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5746 VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
5747 vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
5748 return vkCreateAccelerationStructureNV_VkResult_return;
5749}
5750static void entry_vkDestroyAccelerationStructureNV(
5751 VkDevice device,
5752 VkAccelerationStructureNV accelerationStructure,
5753 const VkAllocationCallbacks* pAllocator)
5754{
5755 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
5756 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5757 vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, true /* do lock */);
5758}
5759static void dynCheck_entry_vkDestroyAccelerationStructureNV(
5760 VkDevice device,
5761 VkAccelerationStructureNV accelerationStructure,
5762 const VkAllocationCallbacks* pAllocator)
5763{
5764 auto resources = ResourceTracker::get();
5765 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5766 {
5767 sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureNV", "VK_NV_ray_tracing");
5768 }
5769 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
5770 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5771 vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, true /* do lock */);
5772}
5773static void entry_vkGetAccelerationStructureMemoryRequirementsNV(
5774 VkDevice device,
5775 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
5776 VkMemoryRequirements2KHR* pMemoryRequirements)
5777{
5778 AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
5779 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5780 vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
5781}
5782static void dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV(
5783 VkDevice device,
5784 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
5785 VkMemoryRequirements2KHR* pMemoryRequirements)
5786{
5787 auto resources = ResourceTracker::get();
5788 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5789 {
5790 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureMemoryRequirementsNV", "VK_NV_ray_tracing");
5791 }
5792 AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
5793 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5794 vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
5795}
5796static VkResult entry_vkBindAccelerationStructureMemoryNV(
5797 VkDevice device,
5798 uint32_t bindInfoCount,
5799 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
5800{
5801 AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
5802 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5803 VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
5804 vkBindAccelerationStructureMemoryNV_VkResult_return = vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, true /* do lock */);
5805 return vkBindAccelerationStructureMemoryNV_VkResult_return;
5806}
5807static VkResult dynCheck_entry_vkBindAccelerationStructureMemoryNV(
5808 VkDevice device,
5809 uint32_t bindInfoCount,
5810 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
5811{
5812 auto resources = ResourceTracker::get();
5813 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5814 {
5815 sOnInvalidDynamicallyCheckedCall("vkBindAccelerationStructureMemoryNV", "VK_NV_ray_tracing");
5816 }
5817 AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
5818 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5819 VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
5820 vkBindAccelerationStructureMemoryNV_VkResult_return = vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, true /* do lock */);
5821 return vkBindAccelerationStructureMemoryNV_VkResult_return;
5822}
5823static void entry_vkCmdBuildAccelerationStructureNV(
5824 VkCommandBuffer commandBuffer,
5825 const VkAccelerationStructureInfoNV* pInfo,
5826 VkBuffer instanceData,
5827 VkDeviceSize instanceOffset,
5828 VkBool32 update,
5829 VkAccelerationStructureNV dst,
5830 VkAccelerationStructureNV src,
5831 VkBuffer scratch,
5832 VkDeviceSize scratchOffset)
5833{
5834 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructureNV");
5835 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5836 vkEnc->vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, true /* do lock */);
5837}
5838static void entry_vkCmdCopyAccelerationStructureNV(
5839 VkCommandBuffer commandBuffer,
5840 VkAccelerationStructureNV dst,
5841 VkAccelerationStructureNV src,
5842 VkCopyAccelerationStructureModeKHR mode)
5843{
5844 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureNV");
5845 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5846 vkEnc->vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, true /* do lock */);
5847}
5848static void entry_vkCmdTraceRaysNV(
5849 VkCommandBuffer commandBuffer,
5850 VkBuffer raygenShaderBindingTableBuffer,
5851 VkDeviceSize raygenShaderBindingOffset,
5852 VkBuffer missShaderBindingTableBuffer,
5853 VkDeviceSize missShaderBindingOffset,
5854 VkDeviceSize missShaderBindingStride,
5855 VkBuffer hitShaderBindingTableBuffer,
5856 VkDeviceSize hitShaderBindingOffset,
5857 VkDeviceSize hitShaderBindingStride,
5858 VkBuffer callableShaderBindingTableBuffer,
5859 VkDeviceSize callableShaderBindingOffset,
5860 VkDeviceSize callableShaderBindingStride,
5861 uint32_t width,
5862 uint32_t height,
5863 uint32_t depth)
5864{
5865 AEMU_SCOPED_TRACE("vkCmdTraceRaysNV");
5866 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5867 vkEnc->vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, true /* do lock */);
5868}
5869static VkResult entry_vkCreateRayTracingPipelinesNV(
5870 VkDevice device,
5871 VkPipelineCache pipelineCache,
5872 uint32_t createInfoCount,
5873 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
5874 const VkAllocationCallbacks* pAllocator,
5875 VkPipeline* pPipelines)
5876{
5877 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
5878 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5879 VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
5880 vkCreateRayTracingPipelinesNV_VkResult_return = vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
5881 return vkCreateRayTracingPipelinesNV_VkResult_return;
5882}
5883static VkResult dynCheck_entry_vkCreateRayTracingPipelinesNV(
5884 VkDevice device,
5885 VkPipelineCache pipelineCache,
5886 uint32_t createInfoCount,
5887 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
5888 const VkAllocationCallbacks* pAllocator,
5889 VkPipeline* pPipelines)
5890{
5891 auto resources = ResourceTracker::get();
5892 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5893 {
5894 sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesNV", "VK_NV_ray_tracing");
5895 }
5896 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
5897 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5898 VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
5899 vkCreateRayTracingPipelinesNV_VkResult_return = vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
5900 return vkCreateRayTracingPipelinesNV_VkResult_return;
5901}
5902static VkResult entry_vkGetRayTracingShaderGroupHandlesKHR(
5903 VkDevice device,
5904 VkPipeline pipeline,
5905 uint32_t firstGroup,
5906 uint32_t groupCount,
5907 size_t dataSize,
5908 void* pData)
5909{
5910 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
5911 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5912 VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
5913 vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5914 return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
5915}
5916static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR(
5917 VkDevice device,
5918 VkPipeline pipeline,
5919 uint32_t firstGroup,
5920 uint32_t groupCount,
5921 size_t dataSize,
5922 void* pData)
5923{
5924 auto resources = ResourceTracker::get();
5925 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5926 {
5927 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesKHR", "VK_NV_ray_tracing");
5928 }
5929 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
5930 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5931 VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
5932 vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5933 return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
5934}
5935static VkResult entry_vkGetRayTracingShaderGroupHandlesNV(
5936 VkDevice device,
5937 VkPipeline pipeline,
5938 uint32_t firstGroup,
5939 uint32_t groupCount,
5940 size_t dataSize,
5941 void* pData)
5942{
5943 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
5944 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5945 VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
5946 vkGetRayTracingShaderGroupHandlesNV_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5947 return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
5948}
5949static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV(
5950 VkDevice device,
5951 VkPipeline pipeline,
5952 uint32_t firstGroup,
5953 uint32_t groupCount,
5954 size_t dataSize,
5955 void* pData)
5956{
5957 auto resources = ResourceTracker::get();
5958 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5959 {
5960 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesNV", "VK_NV_ray_tracing");
5961 }
5962 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
5963 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5964 VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
5965 vkGetRayTracingShaderGroupHandlesNV_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
5966 return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
5967}
5968static VkResult entry_vkGetAccelerationStructureHandleNV(
5969 VkDevice device,
5970 VkAccelerationStructureNV accelerationStructure,
5971 size_t dataSize,
5972 void* pData)
5973{
5974 AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
5975 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5976 VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
5977 vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, true /* do lock */);
5978 return vkGetAccelerationStructureHandleNV_VkResult_return;
5979}
5980static VkResult dynCheck_entry_vkGetAccelerationStructureHandleNV(
5981 VkDevice device,
5982 VkAccelerationStructureNV accelerationStructure,
5983 size_t dataSize,
5984 void* pData)
5985{
5986 auto resources = ResourceTracker::get();
5987 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
5988 {
5989 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureHandleNV", "VK_NV_ray_tracing");
5990 }
5991 AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
5992 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5993 VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
5994 vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, true /* do lock */);
5995 return vkGetAccelerationStructureHandleNV_VkResult_return;
5996}
5997static void entry_vkCmdWriteAccelerationStructuresPropertiesNV(
5998 VkCommandBuffer commandBuffer,
5999 uint32_t accelerationStructureCount,
6000 const VkAccelerationStructureNV* pAccelerationStructures,
6001 VkQueryType queryType,
6002 VkQueryPool queryPool,
6003 uint32_t firstQuery)
6004{
6005 AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesNV");
6006 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6007 vkEnc->vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
6008}
6009static VkResult entry_vkCompileDeferredNV(
6010 VkDevice device,
6011 VkPipeline pipeline,
6012 uint32_t shader)
6013{
6014 AEMU_SCOPED_TRACE("vkCompileDeferredNV");
6015 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6016 VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
6017 vkCompileDeferredNV_VkResult_return = vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
6018 return vkCompileDeferredNV_VkResult_return;
6019}
6020static VkResult dynCheck_entry_vkCompileDeferredNV(
6021 VkDevice device,
6022 VkPipeline pipeline,
6023 uint32_t shader)
6024{
6025 auto resources = ResourceTracker::get();
6026 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
6027 {
6028 sOnInvalidDynamicallyCheckedCall("vkCompileDeferredNV", "VK_NV_ray_tracing");
6029 }
6030 AEMU_SCOPED_TRACE("vkCompileDeferredNV");
6031 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6032 VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
6033 vkCompileDeferredNV_VkResult_return = vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
6034 return vkCompileDeferredNV_VkResult_return;
6035}
6036#endif
6037#ifdef VK_NV_representative_fragment_test
6038#endif
6039#ifdef VK_EXT_filter_cubic
6040#endif
6041#ifdef VK_QCOM_render_pass_shader_resolve
6042#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006043#ifdef VK_EXT_global_priority
6044#endif
6045#ifdef VK_EXT_external_memory_host
6046static VkResult entry_vkGetMemoryHostPointerPropertiesEXT(
6047 VkDevice device,
6048 VkExternalMemoryHandleTypeFlagBits handleType,
6049 const void* pHostPointer,
6050 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
6051{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006052 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006053 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006054 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006055 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006056 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
6057}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006058static VkResult dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT(
6059 VkDevice device,
6060 VkExternalMemoryHandleTypeFlagBits handleType,
6061 const void* pHostPointer,
6062 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
6063{
6064 auto resources = ResourceTracker::get();
6065 if (!resources->hasDeviceExtension(device, "VK_EXT_external_memory_host"))
6066 {
6067 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostPointerPropertiesEXT", "VK_EXT_external_memory_host");
6068 }
6069 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006070 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006071 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006072 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006073 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
6074}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006075#endif
6076#ifdef VK_AMD_buffer_marker
6077static void entry_vkCmdWriteBufferMarkerAMD(
6078 VkCommandBuffer commandBuffer,
6079 VkPipelineStageFlagBits pipelineStage,
6080 VkBuffer dstBuffer,
6081 VkDeviceSize dstOffset,
6082 uint32_t marker)
6083{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006084 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006085 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006086 vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006087}
6088#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006089#ifdef VK_AMD_pipeline_compiler_control
6090#endif
6091#ifdef VK_EXT_calibrated_timestamps
6092static VkResult entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
6093 VkPhysicalDevice physicalDevice,
6094 uint32_t* pTimeDomainCount,
6095 VkTimeDomainEXT* pTimeDomains)
6096{
6097 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCalibrateableTimeDomainsEXT");
6098 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6099 VkResult vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return = (VkResult)0;
6100 vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return = vkEnc->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, true /* do lock */);
6101 return vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return;
6102}
6103static VkResult entry_vkGetCalibratedTimestampsEXT(
6104 VkDevice device,
6105 uint32_t timestampCount,
6106 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
6107 uint64_t* pTimestamps,
6108 uint64_t* pMaxDeviation)
6109{
6110 AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
6111 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6112 VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
6113 vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
6114 return vkGetCalibratedTimestampsEXT_VkResult_return;
6115}
6116static VkResult dynCheck_entry_vkGetCalibratedTimestampsEXT(
6117 VkDevice device,
6118 uint32_t timestampCount,
6119 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
6120 uint64_t* pTimestamps,
6121 uint64_t* pMaxDeviation)
6122{
6123 auto resources = ResourceTracker::get();
6124 if (!resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps"))
6125 {
6126 sOnInvalidDynamicallyCheckedCall("vkGetCalibratedTimestampsEXT", "VK_EXT_calibrated_timestamps");
6127 }
6128 AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
6129 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6130 VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
6131 vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
6132 return vkGetCalibratedTimestampsEXT_VkResult_return;
6133}
6134#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006135#ifdef VK_AMD_shader_core_properties
6136#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006137#ifdef VK_AMD_memory_overallocation_behavior
6138#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006139#ifdef VK_EXT_vertex_attribute_divisor
6140#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006141#ifdef VK_GGP_frame_token
6142#endif
6143#ifdef VK_EXT_pipeline_creation_feedback
6144#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006145#ifdef VK_NV_shader_subgroup_partitioned
6146#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006147#ifdef VK_NV_compute_shader_derivatives
6148#endif
6149#ifdef VK_NV_mesh_shader
6150static void entry_vkCmdDrawMeshTasksNV(
6151 VkCommandBuffer commandBuffer,
6152 uint32_t taskCount,
6153 uint32_t firstTask)
6154{
6155 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksNV");
6156 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6157 vkEnc->vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, true /* do lock */);
6158}
6159static void entry_vkCmdDrawMeshTasksIndirectNV(
6160 VkCommandBuffer commandBuffer,
6161 VkBuffer buffer,
6162 VkDeviceSize offset,
6163 uint32_t drawCount,
6164 uint32_t stride)
6165{
6166 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectNV");
6167 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6168 vkEnc->vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
6169}
6170static void entry_vkCmdDrawMeshTasksIndirectCountNV(
6171 VkCommandBuffer commandBuffer,
6172 VkBuffer buffer,
6173 VkDeviceSize offset,
6174 VkBuffer countBuffer,
6175 VkDeviceSize countBufferOffset,
6176 uint32_t maxDrawCount,
6177 uint32_t stride)
6178{
6179 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectCountNV");
6180 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6181 vkEnc->vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
6182}
6183#endif
6184#ifdef VK_NV_fragment_shader_barycentric
6185#endif
6186#ifdef VK_NV_shader_image_footprint
6187#endif
6188#ifdef VK_NV_scissor_exclusive
6189static void entry_vkCmdSetExclusiveScissorNV(
6190 VkCommandBuffer commandBuffer,
6191 uint32_t firstExclusiveScissor,
6192 uint32_t exclusiveScissorCount,
6193 const VkRect2D* pExclusiveScissors)
6194{
6195 AEMU_SCOPED_TRACE("vkCmdSetExclusiveScissorNV");
6196 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6197 vkEnc->vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, true /* do lock */);
6198}
6199#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006200#ifdef VK_NV_device_diagnostic_checkpoints
6201static void entry_vkCmdSetCheckpointNV(
6202 VkCommandBuffer commandBuffer,
6203 const void* pCheckpointMarker)
6204{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006205 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006206 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006207 vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006208}
6209static void entry_vkGetQueueCheckpointDataNV(
6210 VkQueue queue,
6211 uint32_t* pCheckpointDataCount,
6212 VkCheckpointDataNV* pCheckpointData)
6213{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006214 AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006215 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006216 vkEnc->vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006217}
6218#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006219#ifdef VK_INTEL_shader_integer_functions2
6220#endif
6221#ifdef VK_INTEL_performance_query
6222static VkResult entry_vkInitializePerformanceApiINTEL(
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006223 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08006224 const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006225{
Yilong Lia8d45f12021-02-07 02:30:21 -08006226 AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006227 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Yilong Lia8d45f12021-02-07 02:30:21 -08006228 VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
6229 vkInitializePerformanceApiINTEL_VkResult_return = vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
6230 return vkInitializePerformanceApiINTEL_VkResult_return;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006231}
Yilong Lia8d45f12021-02-07 02:30:21 -08006232static VkResult dynCheck_entry_vkInitializePerformanceApiINTEL(
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006233 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08006234 const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006235{
6236 auto resources = ResourceTracker::get();
Yilong Lia8d45f12021-02-07 02:30:21 -08006237 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006238 {
Yilong Lia8d45f12021-02-07 02:30:21 -08006239 sOnInvalidDynamicallyCheckedCall("vkInitializePerformanceApiINTEL", "VK_INTEL_performance_query");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006240 }
Yilong Lia8d45f12021-02-07 02:30:21 -08006241 AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006242 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Yilong Lia8d45f12021-02-07 02:30:21 -08006243 VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
6244 vkInitializePerformanceApiINTEL_VkResult_return = vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
6245 return vkInitializePerformanceApiINTEL_VkResult_return;
6246}
6247static void entry_vkUninitializePerformanceApiINTEL(
6248 VkDevice device)
6249{
6250 AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
6251 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6252 vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
6253}
6254static void dynCheck_entry_vkUninitializePerformanceApiINTEL(
6255 VkDevice device)
6256{
6257 auto resources = ResourceTracker::get();
6258 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6259 {
6260 sOnInvalidDynamicallyCheckedCall("vkUninitializePerformanceApiINTEL", "VK_INTEL_performance_query");
6261 }
6262 AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
6263 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6264 vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
6265}
6266static VkResult entry_vkCmdSetPerformanceMarkerINTEL(
6267 VkCommandBuffer commandBuffer,
6268 const VkPerformanceMarkerInfoINTEL* pMarkerInfo)
6269{
6270 AEMU_SCOPED_TRACE("vkCmdSetPerformanceMarkerINTEL");
6271 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6272 VkResult vkCmdSetPerformanceMarkerINTEL_VkResult_return = (VkResult)0;
6273 vkCmdSetPerformanceMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
6274 return vkCmdSetPerformanceMarkerINTEL_VkResult_return;
6275}
6276static VkResult entry_vkCmdSetPerformanceStreamMarkerINTEL(
6277 VkCommandBuffer commandBuffer,
6278 const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo)
6279{
6280 AEMU_SCOPED_TRACE("vkCmdSetPerformanceStreamMarkerINTEL");
6281 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6282 VkResult vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = (VkResult)0;
6283 vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
6284 return vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return;
6285}
6286static VkResult entry_vkCmdSetPerformanceOverrideINTEL(
6287 VkCommandBuffer commandBuffer,
6288 const VkPerformanceOverrideInfoINTEL* pOverrideInfo)
6289{
6290 AEMU_SCOPED_TRACE("vkCmdSetPerformanceOverrideINTEL");
6291 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6292 VkResult vkCmdSetPerformanceOverrideINTEL_VkResult_return = (VkResult)0;
6293 vkCmdSetPerformanceOverrideINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, true /* do lock */);
6294 return vkCmdSetPerformanceOverrideINTEL_VkResult_return;
6295}
6296static VkResult entry_vkAcquirePerformanceConfigurationINTEL(
6297 VkDevice device,
6298 const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
6299 VkPerformanceConfigurationINTEL* pConfiguration)
6300{
6301 AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
6302 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6303 VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6304 vkAcquirePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, true /* do lock */);
6305 return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
6306}
6307static VkResult dynCheck_entry_vkAcquirePerformanceConfigurationINTEL(
6308 VkDevice device,
6309 const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
6310 VkPerformanceConfigurationINTEL* pConfiguration)
6311{
6312 auto resources = ResourceTracker::get();
6313 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6314 {
6315 sOnInvalidDynamicallyCheckedCall("vkAcquirePerformanceConfigurationINTEL", "VK_INTEL_performance_query");
6316 }
6317 AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
6318 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6319 VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6320 vkAcquirePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, true /* do lock */);
6321 return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
6322}
6323static VkResult entry_vkReleasePerformanceConfigurationINTEL(
6324 VkDevice device,
6325 VkPerformanceConfigurationINTEL configuration)
6326{
6327 AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
6328 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6329 VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6330 vkReleasePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
6331 return vkReleasePerformanceConfigurationINTEL_VkResult_return;
6332}
6333static VkResult dynCheck_entry_vkReleasePerformanceConfigurationINTEL(
6334 VkDevice device,
6335 VkPerformanceConfigurationINTEL configuration)
6336{
6337 auto resources = ResourceTracker::get();
6338 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6339 {
6340 sOnInvalidDynamicallyCheckedCall("vkReleasePerformanceConfigurationINTEL", "VK_INTEL_performance_query");
6341 }
6342 AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
6343 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6344 VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6345 vkReleasePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
6346 return vkReleasePerformanceConfigurationINTEL_VkResult_return;
6347}
6348static VkResult entry_vkQueueSetPerformanceConfigurationINTEL(
6349 VkQueue queue,
6350 VkPerformanceConfigurationINTEL configuration)
6351{
6352 AEMU_SCOPED_TRACE("vkQueueSetPerformanceConfigurationINTEL");
6353 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
6354 VkResult vkQueueSetPerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
6355 vkQueueSetPerformanceConfigurationINTEL_VkResult_return = vkEnc->vkQueueSetPerformanceConfigurationINTEL(queue, configuration, true /* do lock */);
6356 return vkQueueSetPerformanceConfigurationINTEL_VkResult_return;
6357}
6358static VkResult entry_vkGetPerformanceParameterINTEL(
6359 VkDevice device,
6360 VkPerformanceParameterTypeINTEL parameter,
6361 VkPerformanceValueINTEL* pValue)
6362{
6363 AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
6364 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6365 VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
6366 vkGetPerformanceParameterINTEL_VkResult_return = vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
6367 return vkGetPerformanceParameterINTEL_VkResult_return;
6368}
6369static VkResult dynCheck_entry_vkGetPerformanceParameterINTEL(
6370 VkDevice device,
6371 VkPerformanceParameterTypeINTEL parameter,
6372 VkPerformanceValueINTEL* pValue)
6373{
6374 auto resources = ResourceTracker::get();
6375 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
6376 {
6377 sOnInvalidDynamicallyCheckedCall("vkGetPerformanceParameterINTEL", "VK_INTEL_performance_query");
6378 }
6379 AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
6380 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6381 VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
6382 vkGetPerformanceParameterINTEL_VkResult_return = vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
6383 return vkGetPerformanceParameterINTEL_VkResult_return;
6384}
6385#endif
6386#ifdef VK_EXT_pci_bus_info
6387#endif
6388#ifdef VK_AMD_display_native_hdr
6389static void entry_vkSetLocalDimmingAMD(
6390 VkDevice device,
6391 VkSwapchainKHR swapChain,
6392 VkBool32 localDimmingEnable)
6393{
6394 AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
6395 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6396 vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
6397}
6398static void dynCheck_entry_vkSetLocalDimmingAMD(
6399 VkDevice device,
6400 VkSwapchainKHR swapChain,
6401 VkBool32 localDimmingEnable)
6402{
6403 auto resources = ResourceTracker::get();
6404 if (!resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr"))
6405 {
6406 sOnInvalidDynamicallyCheckedCall("vkSetLocalDimmingAMD", "VK_AMD_display_native_hdr");
6407 }
6408 AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
6409 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6410 vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
6411}
6412#endif
6413#ifdef VK_FUCHSIA_imagepipe_surface
6414static VkResult entry_vkCreateImagePipeSurfaceFUCHSIA(
6415 VkInstance instance,
6416 const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
6417 const VkAllocationCallbacks* pAllocator,
6418 VkSurfaceKHR* pSurface)
6419{
6420 AEMU_SCOPED_TRACE("vkCreateImagePipeSurfaceFUCHSIA");
6421 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6422 VkResult vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = (VkResult)0;
6423 vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = vkEnc->vkCreateImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
6424 return vkCreateImagePipeSurfaceFUCHSIA_VkResult_return;
6425}
6426#endif
6427#ifdef VK_EXT_metal_surface
6428static VkResult entry_vkCreateMetalSurfaceEXT(
6429 VkInstance instance,
6430 const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
6431 const VkAllocationCallbacks* pAllocator,
6432 VkSurfaceKHR* pSurface)
6433{
6434 AEMU_SCOPED_TRACE("vkCreateMetalSurfaceEXT");
6435 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6436 VkResult vkCreateMetalSurfaceEXT_VkResult_return = (VkResult)0;
6437 vkCreateMetalSurfaceEXT_VkResult_return = vkEnc->vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
6438 return vkCreateMetalSurfaceEXT_VkResult_return;
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006439}
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006440#endif
Yilong Li48081632021-04-13 22:38:10 -07006441#ifdef VK_EXT_fragment_density_map
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006442#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006443#ifdef VK_EXT_scalar_block_layout
6444#endif
6445#ifdef VK_GOOGLE_hlsl_functionality1
6446#endif
6447#ifdef VK_GOOGLE_decorate_string
6448#endif
6449#ifdef VK_EXT_subgroup_size_control
6450#endif
6451#ifdef VK_AMD_shader_core_properties2
6452#endif
6453#ifdef VK_AMD_device_coherent_memory
6454#endif
6455#ifdef VK_EXT_shader_image_atomic_int64
6456#endif
6457#ifdef VK_EXT_memory_budget
6458#endif
6459#ifdef VK_EXT_memory_priority
6460#endif
6461#ifdef VK_NV_dedicated_allocation_image_aliasing
6462#endif
6463#ifdef VK_EXT_buffer_device_address
6464static VkDeviceAddress entry_vkGetBufferDeviceAddressEXT(
6465 VkDevice device,
6466 const VkBufferDeviceAddressInfo* pInfo)
6467{
6468 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
6469 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6470 VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
6471 vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
6472 return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
6473}
6474static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressEXT(
6475 VkDevice device,
6476 const VkBufferDeviceAddressInfo* pInfo)
6477{
6478 auto resources = ResourceTracker::get();
6479 if (!resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address"))
6480 {
6481 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressEXT", "VK_EXT_buffer_device_address");
6482 }
6483 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
6484 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6485 VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
6486 vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
6487 return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
6488}
6489#endif
6490#ifdef VK_EXT_tooling_info
6491static VkResult entry_vkGetPhysicalDeviceToolPropertiesEXT(
6492 VkPhysicalDevice physicalDevice,
6493 uint32_t* pToolCount,
6494 VkPhysicalDeviceToolPropertiesEXT* pToolProperties)
6495{
6496 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceToolPropertiesEXT");
6497 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6498 VkResult vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = (VkResult)0;
6499 vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = vkEnc->vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, true /* do lock */);
6500 return vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return;
6501}
6502#endif
6503#ifdef VK_EXT_separate_stencil_usage
6504#endif
6505#ifdef VK_EXT_validation_features
6506#endif
6507#ifdef VK_NV_cooperative_matrix
6508static VkResult entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
6509 VkPhysicalDevice physicalDevice,
6510 uint32_t* pPropertyCount,
6511 VkCooperativeMatrixPropertiesNV* pProperties)
6512{
6513 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
6514 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6515 VkResult vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return = (VkResult)0;
6516 vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
6517 return vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return;
6518}
6519#endif
6520#ifdef VK_NV_coverage_reduction_mode
6521static VkResult entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
6522 VkPhysicalDevice physicalDevice,
6523 uint32_t* pCombinationCount,
6524 VkFramebufferMixedSamplesCombinationNV* pCombinations)
6525{
6526 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
6527 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6528 VkResult vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return = (VkResult)0;
6529 vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return = vkEnc->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, true /* do lock */);
6530 return vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return;
6531}
6532#endif
6533#ifdef VK_EXT_fragment_shader_interlock
6534#endif
6535#ifdef VK_EXT_ycbcr_image_arrays
6536#endif
6537#ifdef VK_EXT_full_screen_exclusive
6538static VkResult entry_vkGetPhysicalDeviceSurfacePresentModes2EXT(
6539 VkPhysicalDevice physicalDevice,
6540 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
6541 uint32_t* pPresentModeCount,
6542 VkPresentModeKHR* pPresentModes)
6543{
6544 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModes2EXT");
6545 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6546 VkResult vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
6547 vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes, true /* do lock */);
6548 return vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return;
6549}
6550static VkResult entry_vkAcquireFullScreenExclusiveModeEXT(
6551 VkDevice device,
6552 VkSwapchainKHR swapchain)
6553{
6554 AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
6555 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6556 VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6557 vkAcquireFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6558 return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
6559}
6560static VkResult dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT(
6561 VkDevice device,
6562 VkSwapchainKHR swapchain)
6563{
6564 auto resources = ResourceTracker::get();
6565 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
6566 {
6567 sOnInvalidDynamicallyCheckedCall("vkAcquireFullScreenExclusiveModeEXT", "VK_EXT_full_screen_exclusive");
6568 }
6569 AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
6570 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6571 VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6572 vkAcquireFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6573 return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
6574}
6575static VkResult entry_vkReleaseFullScreenExclusiveModeEXT(
6576 VkDevice device,
6577 VkSwapchainKHR swapchain)
6578{
6579 AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
6580 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6581 VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6582 vkReleaseFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6583 return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
6584}
6585static VkResult dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT(
6586 VkDevice device,
6587 VkSwapchainKHR swapchain)
6588{
6589 auto resources = ResourceTracker::get();
6590 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
6591 {
6592 sOnInvalidDynamicallyCheckedCall("vkReleaseFullScreenExclusiveModeEXT", "VK_EXT_full_screen_exclusive");
6593 }
6594 AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
6595 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6596 VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
6597 vkReleaseFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
6598 return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
6599}
6600static VkResult entry_vkGetDeviceGroupSurfacePresentModes2EXT(
6601 VkDevice device,
6602 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
6603 VkDeviceGroupPresentModeFlagsKHR* pModes)
6604{
6605 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
6606 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6607 VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
6608 vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, true /* do lock */);
6609 return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
6610}
6611static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT(
6612 VkDevice device,
6613 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
6614 VkDeviceGroupPresentModeFlagsKHR* pModes)
6615{
6616 auto resources = ResourceTracker::get();
6617 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
6618 {
6619 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModes2EXT", "VK_EXT_full_screen_exclusive");
6620 }
6621 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
6622 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6623 VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
6624 vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, true /* do lock */);
6625 return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
6626}
6627#endif
6628#ifdef VK_EXT_headless_surface
6629static VkResult entry_vkCreateHeadlessSurfaceEXT(
6630 VkInstance instance,
6631 const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo,
6632 const VkAllocationCallbacks* pAllocator,
6633 VkSurfaceKHR* pSurface)
6634{
6635 AEMU_SCOPED_TRACE("vkCreateHeadlessSurfaceEXT");
6636 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6637 VkResult vkCreateHeadlessSurfaceEXT_VkResult_return = (VkResult)0;
6638 vkCreateHeadlessSurfaceEXT_VkResult_return = vkEnc->vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
6639 return vkCreateHeadlessSurfaceEXT_VkResult_return;
6640}
6641#endif
6642#ifdef VK_EXT_line_rasterization
6643static void entry_vkCmdSetLineStippleEXT(
6644 VkCommandBuffer commandBuffer,
6645 uint32_t lineStippleFactor,
6646 uint16_t lineStipplePattern)
6647{
6648 AEMU_SCOPED_TRACE("vkCmdSetLineStippleEXT");
6649 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6650 vkEnc->vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, true /* do lock */);
6651}
6652#endif
6653#ifdef VK_EXT_shader_atomic_float
6654#endif
6655#ifdef VK_EXT_host_query_reset
6656static void entry_vkResetQueryPoolEXT(
6657 VkDevice device,
6658 VkQueryPool queryPool,
6659 uint32_t firstQuery,
6660 uint32_t queryCount)
6661{
6662 AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
6663 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6664 vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
6665}
6666static void dynCheck_entry_vkResetQueryPoolEXT(
6667 VkDevice device,
6668 VkQueryPool queryPool,
6669 uint32_t firstQuery,
6670 uint32_t queryCount)
6671{
6672 auto resources = ResourceTracker::get();
6673 if (!resources->hasDeviceExtension(device, "VK_EXT_host_query_reset"))
6674 {
6675 sOnInvalidDynamicallyCheckedCall("vkResetQueryPoolEXT", "VK_EXT_host_query_reset");
6676 }
6677 AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
6678 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6679 vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
6680}
6681#endif
6682#ifdef VK_EXT_index_type_uint8
6683#endif
6684#ifdef VK_EXT_extended_dynamic_state
6685static void entry_vkCmdSetCullModeEXT(
6686 VkCommandBuffer commandBuffer,
6687 VkCullModeFlags cullMode)
6688{
6689 AEMU_SCOPED_TRACE("vkCmdSetCullModeEXT");
6690 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6691 vkEnc->vkCmdSetCullModeEXT(commandBuffer, cullMode, true /* do lock */);
6692}
6693static void entry_vkCmdSetFrontFaceEXT(
6694 VkCommandBuffer commandBuffer,
6695 VkFrontFace frontFace)
6696{
6697 AEMU_SCOPED_TRACE("vkCmdSetFrontFaceEXT");
6698 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6699 vkEnc->vkCmdSetFrontFaceEXT(commandBuffer, frontFace, true /* do lock */);
6700}
6701static void entry_vkCmdSetPrimitiveTopologyEXT(
6702 VkCommandBuffer commandBuffer,
6703 VkPrimitiveTopology primitiveTopology)
6704{
6705 AEMU_SCOPED_TRACE("vkCmdSetPrimitiveTopologyEXT");
6706 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6707 vkEnc->vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, true /* do lock */);
6708}
6709static void entry_vkCmdSetViewportWithCountEXT(
6710 VkCommandBuffer commandBuffer,
6711 uint32_t viewportCount,
6712 const VkViewport* pViewports)
6713{
6714 AEMU_SCOPED_TRACE("vkCmdSetViewportWithCountEXT");
6715 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6716 vkEnc->vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, true /* do lock */);
6717}
6718static void entry_vkCmdSetScissorWithCountEXT(
6719 VkCommandBuffer commandBuffer,
6720 uint32_t scissorCount,
6721 const VkRect2D* pScissors)
6722{
6723 AEMU_SCOPED_TRACE("vkCmdSetScissorWithCountEXT");
6724 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6725 vkEnc->vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, true /* do lock */);
6726}
6727static void entry_vkCmdBindVertexBuffers2EXT(
6728 VkCommandBuffer commandBuffer,
6729 uint32_t firstBinding,
6730 uint32_t bindingCount,
6731 const VkBuffer* pBuffers,
6732 const VkDeviceSize* pOffsets,
6733 const VkDeviceSize* pSizes,
6734 const VkDeviceSize* pStrides)
6735{
6736 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers2EXT");
6737 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6738 vkEnc->vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, true /* do lock */);
6739}
6740static void entry_vkCmdSetDepthTestEnableEXT(
6741 VkCommandBuffer commandBuffer,
6742 VkBool32 depthTestEnable)
6743{
6744 AEMU_SCOPED_TRACE("vkCmdSetDepthTestEnableEXT");
6745 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6746 vkEnc->vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, true /* do lock */);
6747}
6748static void entry_vkCmdSetDepthWriteEnableEXT(
6749 VkCommandBuffer commandBuffer,
6750 VkBool32 depthWriteEnable)
6751{
6752 AEMU_SCOPED_TRACE("vkCmdSetDepthWriteEnableEXT");
6753 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6754 vkEnc->vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, true /* do lock */);
6755}
6756static void entry_vkCmdSetDepthCompareOpEXT(
6757 VkCommandBuffer commandBuffer,
6758 VkCompareOp depthCompareOp)
6759{
6760 AEMU_SCOPED_TRACE("vkCmdSetDepthCompareOpEXT");
6761 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6762 vkEnc->vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, true /* do lock */);
6763}
6764static void entry_vkCmdSetDepthBoundsTestEnableEXT(
6765 VkCommandBuffer commandBuffer,
6766 VkBool32 depthBoundsTestEnable)
6767{
6768 AEMU_SCOPED_TRACE("vkCmdSetDepthBoundsTestEnableEXT");
6769 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6770 vkEnc->vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, true /* do lock */);
6771}
6772static void entry_vkCmdSetStencilTestEnableEXT(
6773 VkCommandBuffer commandBuffer,
6774 VkBool32 stencilTestEnable)
6775{
6776 AEMU_SCOPED_TRACE("vkCmdSetStencilTestEnableEXT");
6777 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6778 vkEnc->vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, true /* do lock */);
6779}
6780static void entry_vkCmdSetStencilOpEXT(
6781 VkCommandBuffer commandBuffer,
6782 VkStencilFaceFlags faceMask,
6783 VkStencilOp failOp,
6784 VkStencilOp passOp,
6785 VkStencilOp depthFailOp,
6786 VkCompareOp compareOp)
6787{
6788 AEMU_SCOPED_TRACE("vkCmdSetStencilOpEXT");
6789 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6790 vkEnc->vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, true /* do lock */);
6791}
6792#endif
6793#ifdef VK_EXT_shader_demote_to_helper_invocation
6794#endif
6795#ifdef VK_NV_device_generated_commands
6796static void entry_vkGetGeneratedCommandsMemoryRequirementsNV(
6797 VkDevice device,
6798 const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
6799 VkMemoryRequirements2* pMemoryRequirements)
6800{
6801 AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
6802 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6803 vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
6804}
6805static void dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV(
6806 VkDevice device,
6807 const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
6808 VkMemoryRequirements2* pMemoryRequirements)
6809{
6810 auto resources = ResourceTracker::get();
6811 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
6812 {
6813 sOnInvalidDynamicallyCheckedCall("vkGetGeneratedCommandsMemoryRequirementsNV", "VK_NV_device_generated_commands");
6814 }
6815 AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
6816 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6817 vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
6818}
6819static void entry_vkCmdPreprocessGeneratedCommandsNV(
6820 VkCommandBuffer commandBuffer,
6821 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
6822{
6823 AEMU_SCOPED_TRACE("vkCmdPreprocessGeneratedCommandsNV");
6824 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6825 vkEnc->vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, true /* do lock */);
6826}
6827static void entry_vkCmdExecuteGeneratedCommandsNV(
6828 VkCommandBuffer commandBuffer,
6829 VkBool32 isPreprocessed,
6830 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
6831{
6832 AEMU_SCOPED_TRACE("vkCmdExecuteGeneratedCommandsNV");
6833 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6834 vkEnc->vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, true /* do lock */);
6835}
6836static void entry_vkCmdBindPipelineShaderGroupNV(
6837 VkCommandBuffer commandBuffer,
6838 VkPipelineBindPoint pipelineBindPoint,
6839 VkPipeline pipeline,
6840 uint32_t groupIndex)
6841{
6842 AEMU_SCOPED_TRACE("vkCmdBindPipelineShaderGroupNV");
6843 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6844 vkEnc->vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, true /* do lock */);
6845}
6846static VkResult entry_vkCreateIndirectCommandsLayoutNV(
6847 VkDevice device,
6848 const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
6849 const VkAllocationCallbacks* pAllocator,
6850 VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
6851{
6852 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
6853 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6854 VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
6855 vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
6856 return vkCreateIndirectCommandsLayoutNV_VkResult_return;
6857}
6858static VkResult dynCheck_entry_vkCreateIndirectCommandsLayoutNV(
6859 VkDevice device,
6860 const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
6861 const VkAllocationCallbacks* pAllocator,
6862 VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
6863{
6864 auto resources = ResourceTracker::get();
6865 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
6866 {
6867 sOnInvalidDynamicallyCheckedCall("vkCreateIndirectCommandsLayoutNV", "VK_NV_device_generated_commands");
6868 }
6869 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
6870 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6871 VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
6872 vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
6873 return vkCreateIndirectCommandsLayoutNV_VkResult_return;
6874}
6875static void entry_vkDestroyIndirectCommandsLayoutNV(
6876 VkDevice device,
6877 VkIndirectCommandsLayoutNV indirectCommandsLayout,
6878 const VkAllocationCallbacks* pAllocator)
6879{
6880 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
6881 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6882 vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, true /* do lock */);
6883}
6884static void dynCheck_entry_vkDestroyIndirectCommandsLayoutNV(
6885 VkDevice device,
6886 VkIndirectCommandsLayoutNV indirectCommandsLayout,
6887 const VkAllocationCallbacks* pAllocator)
6888{
6889 auto resources = ResourceTracker::get();
6890 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
6891 {
6892 sOnInvalidDynamicallyCheckedCall("vkDestroyIndirectCommandsLayoutNV", "VK_NV_device_generated_commands");
6893 }
6894 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
6895 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6896 vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, true /* do lock */);
6897}
6898#endif
6899#ifdef VK_EXT_texel_buffer_alignment
6900#endif
6901#ifdef VK_QCOM_render_pass_transform
6902#endif
6903#ifdef VK_EXT_device_memory_report
6904#endif
6905#ifdef VK_EXT_robustness2
6906#endif
6907#ifdef VK_EXT_custom_border_color
6908#endif
6909#ifdef VK_GOOGLE_user_type
6910#endif
6911#ifdef VK_EXT_private_data
6912static VkResult entry_vkCreatePrivateDataSlotEXT(
6913 VkDevice device,
6914 const VkPrivateDataSlotCreateInfoEXT* pCreateInfo,
6915 const VkAllocationCallbacks* pAllocator,
6916 VkPrivateDataSlotEXT* pPrivateDataSlot)
6917{
6918 AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
6919 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6920 VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
6921 vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
6922 return vkCreatePrivateDataSlotEXT_VkResult_return;
6923}
6924static VkResult dynCheck_entry_vkCreatePrivateDataSlotEXT(
6925 VkDevice device,
6926 const VkPrivateDataSlotCreateInfoEXT* pCreateInfo,
6927 const VkAllocationCallbacks* pAllocator,
6928 VkPrivateDataSlotEXT* pPrivateDataSlot)
6929{
6930 auto resources = ResourceTracker::get();
6931 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
6932 {
6933 sOnInvalidDynamicallyCheckedCall("vkCreatePrivateDataSlotEXT", "VK_EXT_private_data");
6934 }
6935 AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
6936 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6937 VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
6938 vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
6939 return vkCreatePrivateDataSlotEXT_VkResult_return;
6940}
6941static void entry_vkDestroyPrivateDataSlotEXT(
6942 VkDevice device,
6943 VkPrivateDataSlotEXT privateDataSlot,
6944 const VkAllocationCallbacks* pAllocator)
6945{
6946 AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
6947 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6948 vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
6949}
6950static void dynCheck_entry_vkDestroyPrivateDataSlotEXT(
6951 VkDevice device,
6952 VkPrivateDataSlotEXT privateDataSlot,
6953 const VkAllocationCallbacks* pAllocator)
6954{
6955 auto resources = ResourceTracker::get();
6956 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
6957 {
6958 sOnInvalidDynamicallyCheckedCall("vkDestroyPrivateDataSlotEXT", "VK_EXT_private_data");
6959 }
6960 AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
6961 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6962 vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
6963}
6964static VkResult entry_vkSetPrivateDataEXT(
6965 VkDevice device,
6966 VkObjectType objectType,
6967 uint64_t objectHandle,
6968 VkPrivateDataSlotEXT privateDataSlot,
6969 uint64_t data)
6970{
6971 AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
6972 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6973 VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
6974 vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
6975 return vkSetPrivateDataEXT_VkResult_return;
6976}
6977static VkResult dynCheck_entry_vkSetPrivateDataEXT(
6978 VkDevice device,
6979 VkObjectType objectType,
6980 uint64_t objectHandle,
6981 VkPrivateDataSlotEXT privateDataSlot,
6982 uint64_t data)
6983{
6984 auto resources = ResourceTracker::get();
6985 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
6986 {
6987 sOnInvalidDynamicallyCheckedCall("vkSetPrivateDataEXT", "VK_EXT_private_data");
6988 }
6989 AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
6990 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6991 VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
6992 vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
6993 return vkSetPrivateDataEXT_VkResult_return;
6994}
6995static void entry_vkGetPrivateDataEXT(
6996 VkDevice device,
6997 VkObjectType objectType,
6998 uint64_t objectHandle,
6999 VkPrivateDataSlotEXT privateDataSlot,
7000 uint64_t* pData)
7001{
7002 AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
7003 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7004 vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, true /* do lock */);
7005}
7006static void dynCheck_entry_vkGetPrivateDataEXT(
7007 VkDevice device,
7008 VkObjectType objectType,
7009 uint64_t objectHandle,
7010 VkPrivateDataSlotEXT privateDataSlot,
7011 uint64_t* pData)
7012{
7013 auto resources = ResourceTracker::get();
7014 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
7015 {
7016 sOnInvalidDynamicallyCheckedCall("vkGetPrivateDataEXT", "VK_EXT_private_data");
7017 }
7018 AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
7019 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7020 vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, true /* do lock */);
7021}
7022#endif
7023#ifdef VK_EXT_pipeline_creation_cache_control
7024#endif
7025#ifdef VK_NV_device_diagnostics_config
7026#endif
7027#ifdef VK_QCOM_render_pass_store_ops
7028#endif
7029#ifdef VK_NV_fragment_shading_rate_enums
7030static void entry_vkCmdSetFragmentShadingRateEnumNV(
7031 VkCommandBuffer commandBuffer,
7032 VkFragmentShadingRateNV shadingRate,
7033 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
7034{
7035 AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateEnumNV");
7036 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7037 vkEnc->vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, true /* do lock */);
7038}
7039#endif
7040#ifdef VK_EXT_fragment_density_map2
7041#endif
7042#ifdef VK_QCOM_rotated_copy_commands
7043#endif
7044#ifdef VK_EXT_image_robustness
7045#endif
7046#ifdef VK_EXT_4444_formats
7047#endif
7048#ifdef VK_EXT_directfb_surface
7049static VkResult entry_vkCreateDirectFBSurfaceEXT(
7050 VkInstance instance,
7051 const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo,
7052 const VkAllocationCallbacks* pAllocator,
7053 VkSurfaceKHR* pSurface)
7054{
7055 AEMU_SCOPED_TRACE("vkCreateDirectFBSurfaceEXT");
7056 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7057 VkResult vkCreateDirectFBSurfaceEXT_VkResult_return = (VkResult)0;
7058 vkCreateDirectFBSurfaceEXT_VkResult_return = vkEnc->vkCreateDirectFBSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
7059 return vkCreateDirectFBSurfaceEXT_VkResult_return;
7060}
7061static VkBool32 entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT(
7062 VkPhysicalDevice physicalDevice,
7063 uint32_t queueFamilyIndex,
7064 IDirectFB* dfb)
7065{
7066 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDirectFBPresentationSupportEXT");
7067 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7068 VkBool32 vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return = (VkBool32)0;
7069 vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return = vkEnc->vkGetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice, queueFamilyIndex, dfb, true /* do lock */);
7070 return vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return;
7071}
7072#endif
Yilong Li71c43c52021-02-10 02:50:43 -08007073#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -07007074static VkResult entry_vkRegisterImageColorBufferGOOGLE(
7075 VkDevice device,
7076 VkImage image,
7077 uint32_t colorBuffer)
7078{
7079 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
7080 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7081 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
7082 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
7083 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
7084}
7085static VkResult dynCheck_entry_vkRegisterImageColorBufferGOOGLE(
7086 VkDevice device,
7087 VkImage image,
7088 uint32_t colorBuffer)
7089{
7090 auto resources = ResourceTracker::get();
7091 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
7092 {
7093 sOnInvalidDynamicallyCheckedCall("vkRegisterImageColorBufferGOOGLE", "VK_GOOGLE_gfxstream");
7094 }
7095 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
7096 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7097 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
7098 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
7099 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
7100}
7101static VkResult entry_vkRegisterBufferColorBufferGOOGLE(
7102 VkDevice device,
7103 VkBuffer buffer,
7104 uint32_t colorBuffer)
7105{
7106 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
7107 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7108 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
7109 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
7110 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
7111}
7112static VkResult dynCheck_entry_vkRegisterBufferColorBufferGOOGLE(
7113 VkDevice device,
7114 VkBuffer buffer,
7115 uint32_t colorBuffer)
7116{
7117 auto resources = ResourceTracker::get();
7118 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
7119 {
7120 sOnInvalidDynamicallyCheckedCall("vkRegisterBufferColorBufferGOOGLE", "VK_GOOGLE_gfxstream");
7121 }
7122 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
7123 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7124 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
7125 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
7126 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
7127}
Yilong Lia8d45f12021-02-07 02:30:21 -08007128static VkResult entry_vkMapMemoryIntoAddressSpaceGOOGLE(
7129 VkDevice device,
7130 VkDeviceMemory memory,
7131 uint64_t* pAddress)
7132{
7133 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
7134 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7135 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
7136 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
7137 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
7138}
7139static VkResult dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE(
7140 VkDevice device,
7141 VkDeviceMemory memory,
7142 uint64_t* pAddress)
7143{
7144 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007145 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Yilong Lia8d45f12021-02-07 02:30:21 -08007146 {
Yilong Li71c43c52021-02-10 02:50:43 -08007147 sOnInvalidDynamicallyCheckedCall("vkMapMemoryIntoAddressSpaceGOOGLE", "VK_GOOGLE_gfxstream");
Yilong Lia8d45f12021-02-07 02:30:21 -08007148 }
7149 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
7150 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7151 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
7152 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
7153 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
7154}
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07007155static void entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
7156 VkDevice device,
7157 VkDescriptorSet descriptorSet,
7158 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
7159 uint32_t imageInfoCount,
7160 uint32_t bufferInfoCount,
7161 uint32_t bufferViewCount,
7162 const uint32_t* pImageInfoEntryIndices,
7163 const uint32_t* pBufferInfoEntryIndices,
7164 const uint32_t* pBufferViewEntryIndices,
7165 const VkDescriptorImageInfo* pImageInfos,
7166 const VkDescriptorBufferInfo* pBufferInfos,
7167 const VkBufferView* pBufferViews)
7168{
7169 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007170 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007171 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07007172}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007173static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
7174 VkDevice device,
7175 VkDescriptorSet descriptorSet,
7176 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
7177 uint32_t imageInfoCount,
7178 uint32_t bufferInfoCount,
7179 uint32_t bufferViewCount,
7180 const uint32_t* pImageInfoEntryIndices,
7181 const uint32_t* pBufferInfoEntryIndices,
7182 const uint32_t* pBufferViewEntryIndices,
7183 const VkDescriptorImageInfo* pImageInfos,
7184 const VkDescriptorBufferInfo* pBufferInfos,
7185 const VkBufferView* pBufferViews)
7186{
7187 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007188 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007189 {
Yilong Li71c43c52021-02-10 02:50:43 -08007190 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateSizedGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007191 }
7192 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007193 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007194 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007195}
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007196static void entry_vkBeginCommandBufferAsyncGOOGLE(
7197 VkCommandBuffer commandBuffer,
7198 const VkCommandBufferBeginInfo* pBeginInfo)
7199{
7200 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007201 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007202 vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007203}
7204static void entry_vkEndCommandBufferAsyncGOOGLE(
7205 VkCommandBuffer commandBuffer)
7206{
7207 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007208 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007209 vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007210}
7211static void entry_vkResetCommandBufferAsyncGOOGLE(
7212 VkCommandBuffer commandBuffer,
7213 VkCommandBufferResetFlags flags)
7214{
7215 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007216 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007217 vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07007218}
Lingfeng Yang39a276e2019-06-17 13:27:22 -07007219static void entry_vkCommandBufferHostSyncGOOGLE(
7220 VkCommandBuffer commandBuffer,
7221 uint32_t needHostSync,
7222 uint32_t sequenceNumber)
7223{
7224 AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007225 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007226 vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber, true /* do lock */);
Lingfeng Yang39a276e2019-06-17 13:27:22 -07007227}
Lingfeng Yang87f11962019-06-27 16:28:53 +00007228static VkResult entry_vkCreateImageWithRequirementsGOOGLE(
7229 VkDevice device,
7230 const VkImageCreateInfo* pCreateInfo,
7231 const VkAllocationCallbacks* pAllocator,
7232 VkImage* pImage,
7233 VkMemoryRequirements* pMemoryRequirements)
7234{
7235 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007236 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang87f11962019-06-27 16:28:53 +00007237 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007238 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
Lingfeng Yang87f11962019-06-27 16:28:53 +00007239 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
7240}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007241static VkResult dynCheck_entry_vkCreateImageWithRequirementsGOOGLE(
7242 VkDevice device,
7243 const VkImageCreateInfo* pCreateInfo,
7244 const VkAllocationCallbacks* pAllocator,
7245 VkImage* pImage,
7246 VkMemoryRequirements* pMemoryRequirements)
7247{
7248 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007249 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007250 {
Yilong Li71c43c52021-02-10 02:50:43 -08007251 sOnInvalidDynamicallyCheckedCall("vkCreateImageWithRequirementsGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007252 }
7253 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007254 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007255 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007256 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007257 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
7258}
Lingfeng Yang87f11962019-06-27 16:28:53 +00007259static VkResult entry_vkCreateBufferWithRequirementsGOOGLE(
7260 VkDevice device,
7261 const VkBufferCreateInfo* pCreateInfo,
7262 const VkAllocationCallbacks* pAllocator,
7263 VkBuffer* pBuffer,
7264 VkMemoryRequirements* pMemoryRequirements)
7265{
7266 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007267 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang87f11962019-06-27 16:28:53 +00007268 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007269 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
Lingfeng Yang87f11962019-06-27 16:28:53 +00007270 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
7271}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007272static VkResult dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE(
7273 VkDevice device,
7274 const VkBufferCreateInfo* pCreateInfo,
7275 const VkAllocationCallbacks* pAllocator,
7276 VkBuffer* pBuffer,
7277 VkMemoryRequirements* pMemoryRequirements)
7278{
7279 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007280 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007281 {
Yilong Li71c43c52021-02-10 02:50:43 -08007282 sOnInvalidDynamicallyCheckedCall("vkCreateBufferWithRequirementsGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007283 }
7284 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007285 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007286 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007287 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007288 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
7289}
Lingfeng Yang4c542412020-02-04 18:18:32 -08007290static VkResult entry_vkGetMemoryHostAddressInfoGOOGLE(
7291 VkDevice device,
7292 VkDeviceMemory memory,
7293 uint64_t* pAddress,
7294 uint64_t* pSize,
7295 uint64_t* pHostmemId)
7296{
7297 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007298 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4c542412020-02-04 18:18:32 -08007299 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007300 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
Lingfeng Yang4c542412020-02-04 18:18:32 -08007301 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
7302}
7303static VkResult dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE(
7304 VkDevice device,
7305 VkDeviceMemory memory,
7306 uint64_t* pAddress,
7307 uint64_t* pSize,
7308 uint64_t* pHostmemId)
7309{
7310 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007311 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang4c542412020-02-04 18:18:32 -08007312 {
Yilong Li71c43c52021-02-10 02:50:43 -08007313 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostAddressInfoGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang4c542412020-02-04 18:18:32 -08007314 }
7315 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007316 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4c542412020-02-04 18:18:32 -08007317 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007318 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
Lingfeng Yang4c542412020-02-04 18:18:32 -08007319 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
7320}
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007321static VkResult entry_vkFreeMemorySyncGOOGLE(
7322 VkDevice device,
7323 VkDeviceMemory memory,
7324 const VkAllocationCallbacks* pAllocator)
7325{
7326 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007327 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007328 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007329 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007330 return vkFreeMemorySyncGOOGLE_VkResult_return;
7331}
7332static VkResult dynCheck_entry_vkFreeMemorySyncGOOGLE(
7333 VkDevice device,
7334 VkDeviceMemory memory,
7335 const VkAllocationCallbacks* pAllocator)
7336{
7337 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007338 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007339 {
Yilong Li71c43c52021-02-10 02:50:43 -08007340 sOnInvalidDynamicallyCheckedCall("vkFreeMemorySyncGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007341 }
7342 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007343 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007344 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007345 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07007346 return vkFreeMemorySyncGOOGLE_VkResult_return;
7347}
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007348static void entry_vkQueueHostSyncGOOGLE(
7349 VkQueue queue,
7350 uint32_t needHostSync,
7351 uint32_t sequenceNumber)
7352{
7353 AEMU_SCOPED_TRACE("vkQueueHostSyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007354 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007355 vkEnc->vkQueueHostSyncGOOGLE(queue, needHostSync, sequenceNumber, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007356}
7357static void entry_vkQueueSubmitAsyncGOOGLE(
7358 VkQueue queue,
7359 uint32_t submitCount,
7360 const VkSubmitInfo* pSubmits,
7361 VkFence fence)
7362{
7363 AEMU_SCOPED_TRACE("vkQueueSubmitAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007364 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007365 vkEnc->vkQueueSubmitAsyncGOOGLE(queue, submitCount, pSubmits, fence, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007366}
7367static void entry_vkQueueWaitIdleAsyncGOOGLE(
7368 VkQueue queue)
7369{
7370 AEMU_SCOPED_TRACE("vkQueueWaitIdleAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007371 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007372 vkEnc->vkQueueWaitIdleAsyncGOOGLE(queue, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007373}
7374static void entry_vkQueueBindSparseAsyncGOOGLE(
7375 VkQueue queue,
7376 uint32_t bindInfoCount,
7377 const VkBindSparseInfo* pBindInfo,
7378 VkFence fence)
7379{
7380 AEMU_SCOPED_TRACE("vkQueueBindSparseAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007381 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007382 vkEnc->vkQueueBindSparseAsyncGOOGLE(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07007383}
Yilong Lia48b0102020-09-15 15:08:28 -07007384static void entry_vkGetLinearImageLayoutGOOGLE(
7385 VkDevice device,
7386 VkFormat format,
7387 VkDeviceSize* pOffset,
7388 VkDeviceSize* pRowPitchAlignment)
7389{
7390 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007391 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007392 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
Yilong Lia48b0102020-09-15 15:08:28 -07007393}
7394static void dynCheck_entry_vkGetLinearImageLayoutGOOGLE(
7395 VkDevice device,
7396 VkFormat format,
7397 VkDeviceSize* pOffset,
7398 VkDeviceSize* pRowPitchAlignment)
7399{
7400 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08007401 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Yilong Lia48b0102020-09-15 15:08:28 -07007402 {
Yilong Li71c43c52021-02-10 02:50:43 -08007403 sOnInvalidDynamicallyCheckedCall("vkGetLinearImageLayoutGOOGLE", "VK_GOOGLE_gfxstream");
Yilong Lia48b0102020-09-15 15:08:28 -07007404 }
7405 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007406 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007407 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
Yilong Lia48b0102020-09-15 15:08:28 -07007408}
Lingfeng Yangded34672021-01-22 23:17:47 -08007409static void entry_vkQueueFlushCommandsGOOGLE(
7410 VkQueue queue,
7411 VkCommandBuffer commandBuffer,
7412 VkDeviceSize dataSize,
7413 const void* pData)
7414{
7415 AEMU_SCOPED_TRACE("vkQueueFlushCommandsGOOGLE");
7416 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
7417 vkEnc->vkQueueFlushCommandsGOOGLE(queue, commandBuffer, dataSize, pData, true /* do lock */);
7418}
Lingfeng Yang55676e02021-02-08 08:39:45 -08007419static void entry_vkQueueCommitDescriptorSetUpdatesGOOGLE(
7420 VkQueue queue,
7421 uint32_t descriptorPoolCount,
7422 const VkDescriptorPool* pDescriptorPools,
7423 uint32_t descriptorSetCount,
7424 const VkDescriptorSetLayout* pSetLayouts,
7425 const uint64_t* pDescriptorSetPoolIds,
7426 const uint32_t* pDescriptorSetWhichPool,
7427 const uint32_t* pDescriptorSetPendingAllocation,
7428 const uint32_t* pDescriptorWriteStartingIndices,
7429 uint32_t pendingDescriptorWriteCount,
7430 const VkWriteDescriptorSet* pPendingDescriptorWrites)
7431{
7432 AEMU_SCOPED_TRACE("vkQueueCommitDescriptorSetUpdatesGOOGLE");
7433 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
7434 vkEnc->vkQueueCommitDescriptorSetUpdatesGOOGLE(queue, descriptorPoolCount, pDescriptorPools, descriptorSetCount, pSetLayouts, pDescriptorSetPoolIds, pDescriptorSetWhichPool, pDescriptorSetPendingAllocation, pDescriptorWriteStartingIndices, pendingDescriptorWriteCount, pPendingDescriptorWrites, true /* do lock */);
7435}
7436static void entry_vkCollectDescriptorPoolIdsGOOGLE(
7437 VkDevice device,
7438 VkDescriptorPool descriptorPool,
7439 uint32_t* pPoolIdCount,
7440 uint64_t* pPoolIds)
7441{
7442 AEMU_SCOPED_TRACE("vkCollectDescriptorPoolIdsGOOGLE");
7443 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7444 vkEnc->vkCollectDescriptorPoolIdsGOOGLE(device, descriptorPool, pPoolIdCount, pPoolIds, true /* do lock */);
7445}
7446static void dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE(
7447 VkDevice device,
7448 VkDescriptorPool descriptorPool,
7449 uint32_t* pPoolIdCount,
7450 uint64_t* pPoolIds)
7451{
7452 auto resources = ResourceTracker::get();
7453 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
7454 {
7455 sOnInvalidDynamicallyCheckedCall("vkCollectDescriptorPoolIdsGOOGLE", "VK_GOOGLE_gfxstream");
7456 }
7457 AEMU_SCOPED_TRACE("vkCollectDescriptorPoolIdsGOOGLE");
7458 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7459 vkEnc->vkCollectDescriptorPoolIdsGOOGLE(device, descriptorPool, pPoolIdCount, pPoolIds, true /* do lock */);
7460}
Lingfeng Yang5678e1e2021-07-15 12:28:05 -07007461static void entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(
7462 VkQueue queue,
7463 uint32_t waitSemaphoreCount,
7464 const VkSemaphore* pWaitSemaphores,
7465 VkImage image)
7466{
7467 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROIDAsyncGOOGLE");
7468 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
7469 vkEnc->vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(queue, waitSemaphoreCount, pWaitSemaphores, image, true /* do lock */);
7470}
Lingfeng Yangded34672021-01-22 23:17:47 -08007471#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007472#ifdef VK_KHR_acceleration_structure
7473static VkResult entry_vkCreateAccelerationStructureKHR(
7474 VkDevice device,
7475 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
7476 const VkAllocationCallbacks* pAllocator,
7477 VkAccelerationStructureKHR* pAccelerationStructure)
7478{
7479 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
7480 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7481 VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
7482 vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
7483 return vkCreateAccelerationStructureKHR_VkResult_return;
7484}
7485static VkResult dynCheck_entry_vkCreateAccelerationStructureKHR(
7486 VkDevice device,
7487 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
7488 const VkAllocationCallbacks* pAllocator,
7489 VkAccelerationStructureKHR* pAccelerationStructure)
7490{
7491 auto resources = ResourceTracker::get();
7492 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7493 {
7494 sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7495 }
7496 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
7497 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7498 VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
7499 vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
7500 return vkCreateAccelerationStructureKHR_VkResult_return;
7501}
7502static void entry_vkDestroyAccelerationStructureKHR(
7503 VkDevice device,
7504 VkAccelerationStructureKHR accelerationStructure,
7505 const VkAllocationCallbacks* pAllocator)
7506{
7507 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
7508 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7509 vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
7510}
7511static void dynCheck_entry_vkDestroyAccelerationStructureKHR(
7512 VkDevice device,
7513 VkAccelerationStructureKHR accelerationStructure,
7514 const VkAllocationCallbacks* pAllocator)
7515{
7516 auto resources = ResourceTracker::get();
7517 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7518 {
7519 sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7520 }
7521 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
7522 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7523 vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
7524}
7525static void entry_vkCmdBuildAccelerationStructuresKHR(
7526 VkCommandBuffer commandBuffer,
7527 uint32_t infoCount,
7528 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7529 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
7530{
7531 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresKHR");
7532 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7533 vkEnc->vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
7534}
7535static void entry_vkCmdBuildAccelerationStructuresIndirectKHR(
7536 VkCommandBuffer commandBuffer,
7537 uint32_t infoCount,
7538 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7539 const VkDeviceAddress* pIndirectDeviceAddresses,
7540 const uint32_t* pIndirectStrides,
7541 const uint32_t* const* ppMaxPrimitiveCounts)
7542{
7543 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresIndirectKHR");
7544 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7545 vkEnc->vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, true /* do lock */);
7546}
7547static VkResult entry_vkBuildAccelerationStructuresKHR(
7548 VkDevice device,
7549 VkDeferredOperationKHR deferredOperation,
7550 uint32_t infoCount,
7551 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7552 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
7553{
7554 AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
7555 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7556 VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
7557 vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
7558 return vkBuildAccelerationStructuresKHR_VkResult_return;
7559}
7560static VkResult dynCheck_entry_vkBuildAccelerationStructuresKHR(
7561 VkDevice device,
7562 VkDeferredOperationKHR deferredOperation,
7563 uint32_t infoCount,
7564 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7565 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
7566{
7567 auto resources = ResourceTracker::get();
7568 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7569 {
7570 sOnInvalidDynamicallyCheckedCall("vkBuildAccelerationStructuresKHR", "VK_KHR_acceleration_structure");
7571 }
7572 AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
7573 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7574 VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
7575 vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
7576 return vkBuildAccelerationStructuresKHR_VkResult_return;
7577}
7578static VkResult entry_vkCopyAccelerationStructureKHR(
7579 VkDevice device,
7580 VkDeferredOperationKHR deferredOperation,
7581 const VkCopyAccelerationStructureInfoKHR* pInfo)
7582{
7583 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
7584 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7585 VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
7586 vkCopyAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7587 return vkCopyAccelerationStructureKHR_VkResult_return;
7588}
7589static VkResult dynCheck_entry_vkCopyAccelerationStructureKHR(
7590 VkDevice device,
7591 VkDeferredOperationKHR deferredOperation,
7592 const VkCopyAccelerationStructureInfoKHR* pInfo)
7593{
7594 auto resources = ResourceTracker::get();
7595 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7596 {
7597 sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7598 }
7599 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
7600 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7601 VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
7602 vkCopyAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7603 return vkCopyAccelerationStructureKHR_VkResult_return;
7604}
7605static VkResult entry_vkCopyAccelerationStructureToMemoryKHR(
7606 VkDevice device,
7607 VkDeferredOperationKHR deferredOperation,
7608 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
7609{
7610 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
7611 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7612 VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
7613 vkCopyAccelerationStructureToMemoryKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, true /* do lock */);
7614 return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
7615}
7616static VkResult dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR(
7617 VkDevice device,
7618 VkDeferredOperationKHR deferredOperation,
7619 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
7620{
7621 auto resources = ResourceTracker::get();
7622 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7623 {
7624 sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureToMemoryKHR", "VK_KHR_acceleration_structure");
7625 }
7626 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
7627 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7628 VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
7629 vkCopyAccelerationStructureToMemoryKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, true /* do lock */);
7630 return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
7631}
7632static VkResult entry_vkCopyMemoryToAccelerationStructureKHR(
7633 VkDevice device,
7634 VkDeferredOperationKHR deferredOperation,
7635 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
7636{
7637 AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
7638 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7639 VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
7640 vkCopyMemoryToAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7641 return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
7642}
7643static VkResult dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR(
7644 VkDevice device,
7645 VkDeferredOperationKHR deferredOperation,
7646 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
7647{
7648 auto resources = ResourceTracker::get();
7649 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7650 {
7651 sOnInvalidDynamicallyCheckedCall("vkCopyMemoryToAccelerationStructureKHR", "VK_KHR_acceleration_structure");
7652 }
7653 AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
7654 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7655 VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
7656 vkCopyMemoryToAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
7657 return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
7658}
7659static VkResult entry_vkWriteAccelerationStructuresPropertiesKHR(
7660 VkDevice device,
7661 uint32_t accelerationStructureCount,
7662 const VkAccelerationStructureKHR* pAccelerationStructures,
7663 VkQueryType queryType,
7664 size_t dataSize,
7665 void* pData,
7666 size_t stride)
7667{
7668 AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
7669 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7670 VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
7671 vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
7672 return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
7673}
7674static VkResult dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR(
7675 VkDevice device,
7676 uint32_t accelerationStructureCount,
7677 const VkAccelerationStructureKHR* pAccelerationStructures,
7678 VkQueryType queryType,
7679 size_t dataSize,
7680 void* pData,
7681 size_t stride)
7682{
7683 auto resources = ResourceTracker::get();
7684 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7685 {
7686 sOnInvalidDynamicallyCheckedCall("vkWriteAccelerationStructuresPropertiesKHR", "VK_KHR_acceleration_structure");
7687 }
7688 AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
7689 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7690 VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
7691 vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
7692 return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
7693}
7694static void entry_vkCmdCopyAccelerationStructureKHR(
7695 VkCommandBuffer commandBuffer,
7696 const VkCopyAccelerationStructureInfoKHR* pInfo)
7697{
7698 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureKHR");
7699 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7700 vkEnc->vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
7701}
7702static void entry_vkCmdCopyAccelerationStructureToMemoryKHR(
7703 VkCommandBuffer commandBuffer,
7704 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
7705{
7706 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureToMemoryKHR");
7707 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7708 vkEnc->vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, true /* do lock */);
7709}
7710static void entry_vkCmdCopyMemoryToAccelerationStructureKHR(
7711 VkCommandBuffer commandBuffer,
7712 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
7713{
7714 AEMU_SCOPED_TRACE("vkCmdCopyMemoryToAccelerationStructureKHR");
7715 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7716 vkEnc->vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
7717}
7718static VkDeviceAddress entry_vkGetAccelerationStructureDeviceAddressKHR(
7719 VkDevice device,
7720 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
7721{
7722 AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
7723 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7724 VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
7725 vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
7726 return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
7727}
7728static VkDeviceAddress dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR(
7729 VkDevice device,
7730 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
7731{
7732 auto resources = ResourceTracker::get();
7733 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7734 {
7735 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureDeviceAddressKHR", "VK_KHR_acceleration_structure");
7736 }
7737 AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
7738 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7739 VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
7740 vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
7741 return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
7742}
7743static void entry_vkCmdWriteAccelerationStructuresPropertiesKHR(
7744 VkCommandBuffer commandBuffer,
7745 uint32_t accelerationStructureCount,
7746 const VkAccelerationStructureKHR* pAccelerationStructures,
7747 VkQueryType queryType,
7748 VkQueryPool queryPool,
7749 uint32_t firstQuery)
7750{
7751 AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesKHR");
7752 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7753 vkEnc->vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
7754}
7755static void entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
7756 VkDevice device,
7757 const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
7758 VkAccelerationStructureCompatibilityKHR* pCompatibility)
7759{
7760 AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
7761 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7762 vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
7763}
7764static void dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
7765 VkDevice device,
7766 const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
7767 VkAccelerationStructureCompatibilityKHR* pCompatibility)
7768{
7769 auto resources = ResourceTracker::get();
7770 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7771 {
7772 sOnInvalidDynamicallyCheckedCall("vkGetDeviceAccelerationStructureCompatibilityKHR", "VK_KHR_acceleration_structure");
7773 }
7774 AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
7775 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7776 vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
7777}
7778static void entry_vkGetAccelerationStructureBuildSizesKHR(
7779 VkDevice device,
7780 VkAccelerationStructureBuildTypeKHR buildType,
7781 const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
7782 const uint32_t* pMaxPrimitiveCounts,
7783 VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
7784{
7785 AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
7786 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7787 vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
7788}
7789static void dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR(
7790 VkDevice device,
7791 VkAccelerationStructureBuildTypeKHR buildType,
7792 const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
7793 const uint32_t* pMaxPrimitiveCounts,
7794 VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
7795{
7796 auto resources = ResourceTracker::get();
7797 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
7798 {
7799 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureBuildSizesKHR", "VK_KHR_acceleration_structure");
7800 }
7801 AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
7802 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7803 vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
7804}
7805#endif
7806#ifdef VK_KHR_ray_tracing_pipeline
7807static void entry_vkCmdTraceRaysKHR(
7808 VkCommandBuffer commandBuffer,
7809 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
7810 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
7811 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
7812 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
7813 uint32_t width,
7814 uint32_t height,
7815 uint32_t depth)
7816{
7817 AEMU_SCOPED_TRACE("vkCmdTraceRaysKHR");
7818 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7819 vkEnc->vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, true /* do lock */);
7820}
7821static VkResult entry_vkCreateRayTracingPipelinesKHR(
7822 VkDevice device,
7823 VkDeferredOperationKHR deferredOperation,
7824 VkPipelineCache pipelineCache,
7825 uint32_t createInfoCount,
7826 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
7827 const VkAllocationCallbacks* pAllocator,
7828 VkPipeline* pPipelines)
7829{
7830 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
7831 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7832 VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
7833 vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
7834 return vkCreateRayTracingPipelinesKHR_VkResult_return;
7835}
7836static VkResult dynCheck_entry_vkCreateRayTracingPipelinesKHR(
7837 VkDevice device,
7838 VkDeferredOperationKHR deferredOperation,
7839 VkPipelineCache pipelineCache,
7840 uint32_t createInfoCount,
7841 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
7842 const VkAllocationCallbacks* pAllocator,
7843 VkPipeline* pPipelines)
7844{
7845 auto resources = ResourceTracker::get();
7846 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
7847 {
7848 sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesKHR", "VK_KHR_ray_tracing_pipeline");
7849 }
7850 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
7851 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7852 VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
7853 vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
7854 return vkCreateRayTracingPipelinesKHR_VkResult_return;
7855}
7856static VkResult entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
7857 VkDevice device,
7858 VkPipeline pipeline,
7859 uint32_t firstGroup,
7860 uint32_t groupCount,
7861 size_t dataSize,
7862 void* pData)
7863{
7864 AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
7865 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7866 VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
7867 vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
7868 return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
7869}
7870static VkResult dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
7871 VkDevice device,
7872 VkPipeline pipeline,
7873 uint32_t firstGroup,
7874 uint32_t groupCount,
7875 size_t dataSize,
7876 void* pData)
7877{
7878 auto resources = ResourceTracker::get();
7879 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
7880 {
7881 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR", "VK_KHR_ray_tracing_pipeline");
7882 }
7883 AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
7884 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7885 VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
7886 vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
7887 return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
7888}
7889static void entry_vkCmdTraceRaysIndirectKHR(
7890 VkCommandBuffer commandBuffer,
7891 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
7892 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
7893 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
7894 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
7895 VkDeviceAddress indirectDeviceAddress)
7896{
7897 AEMU_SCOPED_TRACE("vkCmdTraceRaysIndirectKHR");
7898 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7899 vkEnc->vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, true /* do lock */);
7900}
7901static VkDeviceSize entry_vkGetRayTracingShaderGroupStackSizeKHR(
7902 VkDevice device,
7903 VkPipeline pipeline,
7904 uint32_t group,
7905 VkShaderGroupShaderKHR groupShader)
7906{
7907 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
7908 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7909 VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
7910 vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
7911 return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
7912}
7913static VkDeviceSize dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR(
7914 VkDevice device,
7915 VkPipeline pipeline,
7916 uint32_t group,
7917 VkShaderGroupShaderKHR groupShader)
7918{
7919 auto resources = ResourceTracker::get();
7920 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
7921 {
7922 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupStackSizeKHR", "VK_KHR_ray_tracing_pipeline");
7923 }
7924 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
7925 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7926 VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
7927 vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
7928 return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
7929}
7930static void entry_vkCmdSetRayTracingPipelineStackSizeKHR(
7931 VkCommandBuffer commandBuffer,
7932 uint32_t pipelineStackSize)
7933{
7934 AEMU_SCOPED_TRACE("vkCmdSetRayTracingPipelineStackSizeKHR");
7935 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7936 vkEnc->vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, true /* do lock */);
7937}
7938#endif
7939#ifdef VK_KHR_ray_query
7940#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007941void* goldfish_vulkan_get_proc_address(const char* name){
7942#ifdef VK_VERSION_1_0
7943 if (!strcmp(name, "vkCreateInstance"))
7944 {
7945 return (void*)entry_vkCreateInstance;
7946 }
7947 if (!strcmp(name, "vkDestroyInstance"))
7948 {
7949 return (void*)entry_vkDestroyInstance;
7950 }
7951 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
7952 {
7953 return (void*)entry_vkEnumeratePhysicalDevices;
7954 }
7955 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
7956 {
7957 return (void*)entry_vkGetPhysicalDeviceFeatures;
7958 }
7959 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
7960 {
7961 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
7962 }
7963 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
7964 {
7965 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
7966 }
7967 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
7968 {
7969 return (void*)entry_vkGetPhysicalDeviceProperties;
7970 }
7971 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
7972 {
7973 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
7974 }
7975 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
7976 {
7977 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
7978 }
7979 if (!strcmp(name, "vkGetInstanceProcAddr"))
7980 {
7981 return (void*)entry_vkGetInstanceProcAddr;
7982 }
7983 if (!strcmp(name, "vkGetDeviceProcAddr"))
7984 {
7985 return (void*)entry_vkGetDeviceProcAddr;
7986 }
7987 if (!strcmp(name, "vkCreateDevice"))
7988 {
7989 return (void*)entry_vkCreateDevice;
7990 }
7991 if (!strcmp(name, "vkDestroyDevice"))
7992 {
7993 return (void*)entry_vkDestroyDevice;
7994 }
7995 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
7996 {
7997 return (void*)entry_vkEnumerateInstanceExtensionProperties;
7998 }
7999 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
8000 {
8001 return (void*)entry_vkEnumerateDeviceExtensionProperties;
8002 }
8003 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
8004 {
8005 return (void*)entry_vkEnumerateInstanceLayerProperties;
8006 }
8007 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
8008 {
8009 return (void*)entry_vkEnumerateDeviceLayerProperties;
8010 }
8011 if (!strcmp(name, "vkGetDeviceQueue"))
8012 {
8013 return (void*)entry_vkGetDeviceQueue;
8014 }
8015 if (!strcmp(name, "vkQueueSubmit"))
8016 {
8017 return (void*)entry_vkQueueSubmit;
8018 }
8019 if (!strcmp(name, "vkQueueWaitIdle"))
8020 {
8021 return (void*)entry_vkQueueWaitIdle;
8022 }
8023 if (!strcmp(name, "vkDeviceWaitIdle"))
8024 {
8025 return (void*)entry_vkDeviceWaitIdle;
8026 }
8027 if (!strcmp(name, "vkAllocateMemory"))
8028 {
8029 return (void*)entry_vkAllocateMemory;
8030 }
8031 if (!strcmp(name, "vkFreeMemory"))
8032 {
8033 return (void*)entry_vkFreeMemory;
8034 }
8035 if (!strcmp(name, "vkMapMemory"))
8036 {
8037 return (void*)entry_vkMapMemory;
8038 }
8039 if (!strcmp(name, "vkUnmapMemory"))
8040 {
8041 return (void*)entry_vkUnmapMemory;
8042 }
8043 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
8044 {
8045 return (void*)entry_vkFlushMappedMemoryRanges;
8046 }
8047 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
8048 {
8049 return (void*)entry_vkInvalidateMappedMemoryRanges;
8050 }
8051 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
8052 {
8053 return (void*)entry_vkGetDeviceMemoryCommitment;
8054 }
8055 if (!strcmp(name, "vkBindBufferMemory"))
8056 {
8057 return (void*)entry_vkBindBufferMemory;
8058 }
8059 if (!strcmp(name, "vkBindImageMemory"))
8060 {
8061 return (void*)entry_vkBindImageMemory;
8062 }
8063 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
8064 {
8065 return (void*)entry_vkGetBufferMemoryRequirements;
8066 }
8067 if (!strcmp(name, "vkGetImageMemoryRequirements"))
8068 {
8069 return (void*)entry_vkGetImageMemoryRequirements;
8070 }
8071 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
8072 {
8073 return (void*)entry_vkGetImageSparseMemoryRequirements;
8074 }
8075 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
8076 {
8077 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
8078 }
8079 if (!strcmp(name, "vkQueueBindSparse"))
8080 {
8081 return (void*)entry_vkQueueBindSparse;
8082 }
8083 if (!strcmp(name, "vkCreateFence"))
8084 {
8085 return (void*)entry_vkCreateFence;
8086 }
8087 if (!strcmp(name, "vkDestroyFence"))
8088 {
8089 return (void*)entry_vkDestroyFence;
8090 }
8091 if (!strcmp(name, "vkResetFences"))
8092 {
8093 return (void*)entry_vkResetFences;
8094 }
8095 if (!strcmp(name, "vkGetFenceStatus"))
8096 {
8097 return (void*)entry_vkGetFenceStatus;
8098 }
8099 if (!strcmp(name, "vkWaitForFences"))
8100 {
8101 return (void*)entry_vkWaitForFences;
8102 }
8103 if (!strcmp(name, "vkCreateSemaphore"))
8104 {
8105 return (void*)entry_vkCreateSemaphore;
8106 }
8107 if (!strcmp(name, "vkDestroySemaphore"))
8108 {
8109 return (void*)entry_vkDestroySemaphore;
8110 }
8111 if (!strcmp(name, "vkCreateEvent"))
8112 {
8113 return (void*)entry_vkCreateEvent;
8114 }
8115 if (!strcmp(name, "vkDestroyEvent"))
8116 {
8117 return (void*)entry_vkDestroyEvent;
8118 }
8119 if (!strcmp(name, "vkGetEventStatus"))
8120 {
8121 return (void*)entry_vkGetEventStatus;
8122 }
8123 if (!strcmp(name, "vkSetEvent"))
8124 {
8125 return (void*)entry_vkSetEvent;
8126 }
8127 if (!strcmp(name, "vkResetEvent"))
8128 {
8129 return (void*)entry_vkResetEvent;
8130 }
8131 if (!strcmp(name, "vkCreateQueryPool"))
8132 {
8133 return (void*)entry_vkCreateQueryPool;
8134 }
8135 if (!strcmp(name, "vkDestroyQueryPool"))
8136 {
8137 return (void*)entry_vkDestroyQueryPool;
8138 }
8139 if (!strcmp(name, "vkGetQueryPoolResults"))
8140 {
8141 return (void*)entry_vkGetQueryPoolResults;
8142 }
8143 if (!strcmp(name, "vkCreateBuffer"))
8144 {
8145 return (void*)entry_vkCreateBuffer;
8146 }
8147 if (!strcmp(name, "vkDestroyBuffer"))
8148 {
8149 return (void*)entry_vkDestroyBuffer;
8150 }
8151 if (!strcmp(name, "vkCreateBufferView"))
8152 {
8153 return (void*)entry_vkCreateBufferView;
8154 }
8155 if (!strcmp(name, "vkDestroyBufferView"))
8156 {
8157 return (void*)entry_vkDestroyBufferView;
8158 }
8159 if (!strcmp(name, "vkCreateImage"))
8160 {
8161 return (void*)entry_vkCreateImage;
8162 }
8163 if (!strcmp(name, "vkDestroyImage"))
8164 {
8165 return (void*)entry_vkDestroyImage;
8166 }
8167 if (!strcmp(name, "vkGetImageSubresourceLayout"))
8168 {
8169 return (void*)entry_vkGetImageSubresourceLayout;
8170 }
8171 if (!strcmp(name, "vkCreateImageView"))
8172 {
8173 return (void*)entry_vkCreateImageView;
8174 }
8175 if (!strcmp(name, "vkDestroyImageView"))
8176 {
8177 return (void*)entry_vkDestroyImageView;
8178 }
8179 if (!strcmp(name, "vkCreateShaderModule"))
8180 {
8181 return (void*)entry_vkCreateShaderModule;
8182 }
8183 if (!strcmp(name, "vkDestroyShaderModule"))
8184 {
8185 return (void*)entry_vkDestroyShaderModule;
8186 }
8187 if (!strcmp(name, "vkCreatePipelineCache"))
8188 {
8189 return (void*)entry_vkCreatePipelineCache;
8190 }
8191 if (!strcmp(name, "vkDestroyPipelineCache"))
8192 {
8193 return (void*)entry_vkDestroyPipelineCache;
8194 }
8195 if (!strcmp(name, "vkGetPipelineCacheData"))
8196 {
8197 return (void*)entry_vkGetPipelineCacheData;
8198 }
8199 if (!strcmp(name, "vkMergePipelineCaches"))
8200 {
8201 return (void*)entry_vkMergePipelineCaches;
8202 }
8203 if (!strcmp(name, "vkCreateGraphicsPipelines"))
8204 {
8205 return (void*)entry_vkCreateGraphicsPipelines;
8206 }
8207 if (!strcmp(name, "vkCreateComputePipelines"))
8208 {
8209 return (void*)entry_vkCreateComputePipelines;
8210 }
8211 if (!strcmp(name, "vkDestroyPipeline"))
8212 {
8213 return (void*)entry_vkDestroyPipeline;
8214 }
8215 if (!strcmp(name, "vkCreatePipelineLayout"))
8216 {
8217 return (void*)entry_vkCreatePipelineLayout;
8218 }
8219 if (!strcmp(name, "vkDestroyPipelineLayout"))
8220 {
8221 return (void*)entry_vkDestroyPipelineLayout;
8222 }
8223 if (!strcmp(name, "vkCreateSampler"))
8224 {
8225 return (void*)entry_vkCreateSampler;
8226 }
8227 if (!strcmp(name, "vkDestroySampler"))
8228 {
8229 return (void*)entry_vkDestroySampler;
8230 }
8231 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
8232 {
8233 return (void*)entry_vkCreateDescriptorSetLayout;
8234 }
8235 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
8236 {
8237 return (void*)entry_vkDestroyDescriptorSetLayout;
8238 }
8239 if (!strcmp(name, "vkCreateDescriptorPool"))
8240 {
8241 return (void*)entry_vkCreateDescriptorPool;
8242 }
8243 if (!strcmp(name, "vkDestroyDescriptorPool"))
8244 {
8245 return (void*)entry_vkDestroyDescriptorPool;
8246 }
8247 if (!strcmp(name, "vkResetDescriptorPool"))
8248 {
8249 return (void*)entry_vkResetDescriptorPool;
8250 }
8251 if (!strcmp(name, "vkAllocateDescriptorSets"))
8252 {
8253 return (void*)entry_vkAllocateDescriptorSets;
8254 }
8255 if (!strcmp(name, "vkFreeDescriptorSets"))
8256 {
8257 return (void*)entry_vkFreeDescriptorSets;
8258 }
8259 if (!strcmp(name, "vkUpdateDescriptorSets"))
8260 {
8261 return (void*)entry_vkUpdateDescriptorSets;
8262 }
8263 if (!strcmp(name, "vkCreateFramebuffer"))
8264 {
8265 return (void*)entry_vkCreateFramebuffer;
8266 }
8267 if (!strcmp(name, "vkDestroyFramebuffer"))
8268 {
8269 return (void*)entry_vkDestroyFramebuffer;
8270 }
8271 if (!strcmp(name, "vkCreateRenderPass"))
8272 {
8273 return (void*)entry_vkCreateRenderPass;
8274 }
8275 if (!strcmp(name, "vkDestroyRenderPass"))
8276 {
8277 return (void*)entry_vkDestroyRenderPass;
8278 }
8279 if (!strcmp(name, "vkGetRenderAreaGranularity"))
8280 {
8281 return (void*)entry_vkGetRenderAreaGranularity;
8282 }
8283 if (!strcmp(name, "vkCreateCommandPool"))
8284 {
8285 return (void*)entry_vkCreateCommandPool;
8286 }
8287 if (!strcmp(name, "vkDestroyCommandPool"))
8288 {
8289 return (void*)entry_vkDestroyCommandPool;
8290 }
8291 if (!strcmp(name, "vkResetCommandPool"))
8292 {
8293 return (void*)entry_vkResetCommandPool;
8294 }
8295 if (!strcmp(name, "vkAllocateCommandBuffers"))
8296 {
8297 return (void*)entry_vkAllocateCommandBuffers;
8298 }
8299 if (!strcmp(name, "vkFreeCommandBuffers"))
8300 {
8301 return (void*)entry_vkFreeCommandBuffers;
8302 }
8303 if (!strcmp(name, "vkBeginCommandBuffer"))
8304 {
8305 return (void*)entry_vkBeginCommandBuffer;
8306 }
8307 if (!strcmp(name, "vkEndCommandBuffer"))
8308 {
8309 return (void*)entry_vkEndCommandBuffer;
8310 }
8311 if (!strcmp(name, "vkResetCommandBuffer"))
8312 {
8313 return (void*)entry_vkResetCommandBuffer;
8314 }
8315 if (!strcmp(name, "vkCmdBindPipeline"))
8316 {
8317 return (void*)entry_vkCmdBindPipeline;
8318 }
8319 if (!strcmp(name, "vkCmdSetViewport"))
8320 {
8321 return (void*)entry_vkCmdSetViewport;
8322 }
8323 if (!strcmp(name, "vkCmdSetScissor"))
8324 {
8325 return (void*)entry_vkCmdSetScissor;
8326 }
8327 if (!strcmp(name, "vkCmdSetLineWidth"))
8328 {
8329 return (void*)entry_vkCmdSetLineWidth;
8330 }
8331 if (!strcmp(name, "vkCmdSetDepthBias"))
8332 {
8333 return (void*)entry_vkCmdSetDepthBias;
8334 }
8335 if (!strcmp(name, "vkCmdSetBlendConstants"))
8336 {
8337 return (void*)entry_vkCmdSetBlendConstants;
8338 }
8339 if (!strcmp(name, "vkCmdSetDepthBounds"))
8340 {
8341 return (void*)entry_vkCmdSetDepthBounds;
8342 }
8343 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
8344 {
8345 return (void*)entry_vkCmdSetStencilCompareMask;
8346 }
8347 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
8348 {
8349 return (void*)entry_vkCmdSetStencilWriteMask;
8350 }
8351 if (!strcmp(name, "vkCmdSetStencilReference"))
8352 {
8353 return (void*)entry_vkCmdSetStencilReference;
8354 }
8355 if (!strcmp(name, "vkCmdBindDescriptorSets"))
8356 {
8357 return (void*)entry_vkCmdBindDescriptorSets;
8358 }
8359 if (!strcmp(name, "vkCmdBindIndexBuffer"))
8360 {
8361 return (void*)entry_vkCmdBindIndexBuffer;
8362 }
8363 if (!strcmp(name, "vkCmdBindVertexBuffers"))
8364 {
8365 return (void*)entry_vkCmdBindVertexBuffers;
8366 }
8367 if (!strcmp(name, "vkCmdDraw"))
8368 {
8369 return (void*)entry_vkCmdDraw;
8370 }
8371 if (!strcmp(name, "vkCmdDrawIndexed"))
8372 {
8373 return (void*)entry_vkCmdDrawIndexed;
8374 }
8375 if (!strcmp(name, "vkCmdDrawIndirect"))
8376 {
8377 return (void*)entry_vkCmdDrawIndirect;
8378 }
8379 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
8380 {
8381 return (void*)entry_vkCmdDrawIndexedIndirect;
8382 }
8383 if (!strcmp(name, "vkCmdDispatch"))
8384 {
8385 return (void*)entry_vkCmdDispatch;
8386 }
8387 if (!strcmp(name, "vkCmdDispatchIndirect"))
8388 {
8389 return (void*)entry_vkCmdDispatchIndirect;
8390 }
8391 if (!strcmp(name, "vkCmdCopyBuffer"))
8392 {
8393 return (void*)entry_vkCmdCopyBuffer;
8394 }
8395 if (!strcmp(name, "vkCmdCopyImage"))
8396 {
8397 return (void*)entry_vkCmdCopyImage;
8398 }
8399 if (!strcmp(name, "vkCmdBlitImage"))
8400 {
8401 return (void*)entry_vkCmdBlitImage;
8402 }
8403 if (!strcmp(name, "vkCmdCopyBufferToImage"))
8404 {
8405 return (void*)entry_vkCmdCopyBufferToImage;
8406 }
8407 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
8408 {
8409 return (void*)entry_vkCmdCopyImageToBuffer;
8410 }
8411 if (!strcmp(name, "vkCmdUpdateBuffer"))
8412 {
8413 return (void*)entry_vkCmdUpdateBuffer;
8414 }
8415 if (!strcmp(name, "vkCmdFillBuffer"))
8416 {
8417 return (void*)entry_vkCmdFillBuffer;
8418 }
8419 if (!strcmp(name, "vkCmdClearColorImage"))
8420 {
8421 return (void*)entry_vkCmdClearColorImage;
8422 }
8423 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
8424 {
8425 return (void*)entry_vkCmdClearDepthStencilImage;
8426 }
8427 if (!strcmp(name, "vkCmdClearAttachments"))
8428 {
8429 return (void*)entry_vkCmdClearAttachments;
8430 }
8431 if (!strcmp(name, "vkCmdResolveImage"))
8432 {
8433 return (void*)entry_vkCmdResolveImage;
8434 }
8435 if (!strcmp(name, "vkCmdSetEvent"))
8436 {
8437 return (void*)entry_vkCmdSetEvent;
8438 }
8439 if (!strcmp(name, "vkCmdResetEvent"))
8440 {
8441 return (void*)entry_vkCmdResetEvent;
8442 }
8443 if (!strcmp(name, "vkCmdWaitEvents"))
8444 {
8445 return (void*)entry_vkCmdWaitEvents;
8446 }
8447 if (!strcmp(name, "vkCmdPipelineBarrier"))
8448 {
8449 return (void*)entry_vkCmdPipelineBarrier;
8450 }
8451 if (!strcmp(name, "vkCmdBeginQuery"))
8452 {
8453 return (void*)entry_vkCmdBeginQuery;
8454 }
8455 if (!strcmp(name, "vkCmdEndQuery"))
8456 {
8457 return (void*)entry_vkCmdEndQuery;
8458 }
8459 if (!strcmp(name, "vkCmdResetQueryPool"))
8460 {
8461 return (void*)entry_vkCmdResetQueryPool;
8462 }
8463 if (!strcmp(name, "vkCmdWriteTimestamp"))
8464 {
8465 return (void*)entry_vkCmdWriteTimestamp;
8466 }
8467 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
8468 {
8469 return (void*)entry_vkCmdCopyQueryPoolResults;
8470 }
8471 if (!strcmp(name, "vkCmdPushConstants"))
8472 {
8473 return (void*)entry_vkCmdPushConstants;
8474 }
8475 if (!strcmp(name, "vkCmdBeginRenderPass"))
8476 {
8477 return (void*)entry_vkCmdBeginRenderPass;
8478 }
8479 if (!strcmp(name, "vkCmdNextSubpass"))
8480 {
8481 return (void*)entry_vkCmdNextSubpass;
8482 }
8483 if (!strcmp(name, "vkCmdEndRenderPass"))
8484 {
8485 return (void*)entry_vkCmdEndRenderPass;
8486 }
8487 if (!strcmp(name, "vkCmdExecuteCommands"))
8488 {
8489 return (void*)entry_vkCmdExecuteCommands;
8490 }
8491#endif
8492#ifdef VK_VERSION_1_1
8493 if (!strcmp(name, "vkEnumerateInstanceVersion"))
8494 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008495 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008496 }
8497 if (!strcmp(name, "vkBindBufferMemory2"))
8498 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008499 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008500 }
8501 if (!strcmp(name, "vkBindImageMemory2"))
8502 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008503 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008504 }
8505 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
8506 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008507 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008508 }
8509 if (!strcmp(name, "vkCmdSetDeviceMask"))
8510 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008511 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008512 }
8513 if (!strcmp(name, "vkCmdDispatchBase"))
8514 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008515 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008516 }
8517 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
8518 {
Lingfeng Yang113689e2018-11-11 16:48:50 -08008519 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008520 }
8521 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
8522 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008523 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008524 }
8525 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
8526 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008527 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008528 }
8529 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
8530 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008531 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008532 }
8533 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
8534 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008535 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008536 }
8537 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
8538 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008539 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008540 }
8541 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
8542 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008543 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008544 }
8545 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
8546 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008547 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008548 }
8549 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
8550 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008551 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008552 }
8553 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
8554 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008555 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008556 }
8557 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
8558 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008559 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008560 }
8561 if (!strcmp(name, "vkTrimCommandPool"))
8562 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008563 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008564 }
8565 if (!strcmp(name, "vkGetDeviceQueue2"))
8566 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008567 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008568 }
8569 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
8570 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008571 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008572 }
8573 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
8574 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008575 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008576 }
8577 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
8578 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008579 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008580 }
8581 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
8582 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008583 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008584 }
8585 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
8586 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008587 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008588 }
8589 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
8590 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008591 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008592 }
8593 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
8594 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008595 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008596 }
8597 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
8598 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008599 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008600 }
8601 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
8602 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008603 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008604 }
8605#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008606#ifdef VK_VERSION_1_2
8607 if (!strcmp(name, "vkCmdDrawIndirectCount"))
8608 {
8609 return nullptr;
8610 }
8611 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
8612 {
8613 return nullptr;
8614 }
8615 if (!strcmp(name, "vkCreateRenderPass2"))
8616 {
8617 return nullptr;
8618 }
8619 if (!strcmp(name, "vkCmdBeginRenderPass2"))
8620 {
8621 return nullptr;
8622 }
8623 if (!strcmp(name, "vkCmdNextSubpass2"))
8624 {
8625 return nullptr;
8626 }
8627 if (!strcmp(name, "vkCmdEndRenderPass2"))
8628 {
8629 return nullptr;
8630 }
8631 if (!strcmp(name, "vkResetQueryPool"))
8632 {
8633 return nullptr;
8634 }
8635 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
8636 {
8637 return nullptr;
8638 }
8639 if (!strcmp(name, "vkWaitSemaphores"))
8640 {
8641 return nullptr;
8642 }
8643 if (!strcmp(name, "vkSignalSemaphore"))
8644 {
8645 return nullptr;
8646 }
8647 if (!strcmp(name, "vkGetBufferDeviceAddress"))
8648 {
8649 return nullptr;
8650 }
8651 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
8652 {
8653 return nullptr;
8654 }
8655 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
8656 {
8657 return nullptr;
8658 }
8659#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008660#ifdef VK_KHR_surface
8661 if (!strcmp(name, "vkDestroySurfaceKHR"))
8662 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008663 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008664 }
8665 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
8666 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008667 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008668 }
8669 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
8670 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008671 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008672 }
8673 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
8674 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008675 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008676 }
8677 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
8678 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008679 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008680 }
8681#endif
8682#ifdef VK_KHR_swapchain
8683 if (!strcmp(name, "vkCreateSwapchainKHR"))
8684 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008685 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008686 }
8687 if (!strcmp(name, "vkDestroySwapchainKHR"))
8688 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008689 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008690 }
8691 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
8692 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008693 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008694 }
8695 if (!strcmp(name, "vkAcquireNextImageKHR"))
8696 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008697 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008698 }
8699 if (!strcmp(name, "vkQueuePresentKHR"))
8700 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008701 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008702 }
8703 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
8704 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008705 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008706 }
8707 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
8708 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008709 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008710 }
8711 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
8712 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008713 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008714 }
8715 if (!strcmp(name, "vkAcquireNextImage2KHR"))
8716 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008717 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008718 }
8719#endif
8720#ifdef VK_KHR_display
8721 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
8722 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008723 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008724 }
8725 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
8726 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008727 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008728 }
8729 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
8730 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008731 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008732 }
8733 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
8734 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008735 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008736 }
8737 if (!strcmp(name, "vkCreateDisplayModeKHR"))
8738 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008739 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008740 }
8741 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
8742 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008743 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008744 }
8745 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
8746 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008747 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008748 }
8749#endif
8750#ifdef VK_KHR_display_swapchain
8751 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
8752 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008753 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008754 }
8755#endif
8756#ifdef VK_KHR_xlib_surface
8757 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
8758 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008759 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008760 }
8761 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
8762 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008763 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008764 }
8765#endif
8766#ifdef VK_KHR_xcb_surface
8767 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
8768 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008769 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008770 }
8771 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
8772 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008773 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008774 }
8775#endif
8776#ifdef VK_KHR_wayland_surface
8777 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
8778 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008779 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008780 }
8781 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
8782 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008783 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008784 }
8785#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008786#ifdef VK_KHR_android_surface
8787 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
8788 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008789 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008790 }
8791#endif
8792#ifdef VK_KHR_win32_surface
8793 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
8794 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008795 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008796 }
8797 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
8798 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008799 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008800 }
8801#endif
8802#ifdef VK_KHR_get_physical_device_properties2
8803 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
8804 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008805 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008806 }
8807 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
8808 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008809 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008810 }
8811 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
8812 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008813 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008814 }
8815 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
8816 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008817 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008818 }
8819 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
8820 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008821 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008822 }
8823 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
8824 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008825 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008826 }
8827 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
8828 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008829 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008830 }
8831#endif
8832#ifdef VK_KHR_device_group
8833 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
8834 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008835 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008836 }
8837 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
8838 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008839 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008840 }
8841 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
8842 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008843 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008844 }
8845#endif
8846#ifdef VK_KHR_maintenance1
8847 if (!strcmp(name, "vkTrimCommandPoolKHR"))
8848 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008849 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008850 }
8851#endif
8852#ifdef VK_KHR_device_group_creation
8853 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
8854 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008855 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008856 }
8857#endif
8858#ifdef VK_KHR_external_memory_capabilities
8859 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
8860 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008861 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008862 }
8863#endif
8864#ifdef VK_KHR_external_memory_win32
8865 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
8866 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008867 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008868 }
8869 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
8870 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008871 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008872 }
8873#endif
8874#ifdef VK_KHR_external_memory_fd
8875 if (!strcmp(name, "vkGetMemoryFdKHR"))
8876 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008877 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008878 }
8879 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
8880 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008881 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008882 }
8883#endif
8884#ifdef VK_KHR_external_semaphore_capabilities
8885 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
8886 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008887 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008888 }
8889#endif
8890#ifdef VK_KHR_external_semaphore_win32
8891 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
8892 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008893 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008894 }
8895 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
8896 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008897 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008898 }
8899#endif
8900#ifdef VK_KHR_external_semaphore_fd
8901 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
8902 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008903 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008904 }
8905 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
8906 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008907 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008908 }
8909#endif
8910#ifdef VK_KHR_push_descriptor
8911 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
8912 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008913 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008914 }
8915 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
8916 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008917 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008918 }
8919#endif
8920#ifdef VK_KHR_descriptor_update_template
8921 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
8922 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008923 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008924 }
8925 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
8926 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008927 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008928 }
8929 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
8930 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008931 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008932 }
8933#endif
8934#ifdef VK_KHR_create_renderpass2
8935 if (!strcmp(name, "vkCreateRenderPass2KHR"))
8936 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008937 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008938 }
8939 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
8940 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008941 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008942 }
8943 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
8944 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008945 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008946 }
8947 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
8948 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008949 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008950 }
8951#endif
8952#ifdef VK_KHR_shared_presentable_image
8953 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
8954 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008955 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008956 }
8957#endif
8958#ifdef VK_KHR_external_fence_capabilities
8959 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
8960 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008961 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008962 }
8963#endif
8964#ifdef VK_KHR_external_fence_win32
8965 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
8966 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008967 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008968 }
8969 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
8970 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008971 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008972 }
8973#endif
8974#ifdef VK_KHR_external_fence_fd
8975 if (!strcmp(name, "vkImportFenceFdKHR"))
8976 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008977 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008978 }
8979 if (!strcmp(name, "vkGetFenceFdKHR"))
8980 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008981 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008982 }
8983#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008984#ifdef VK_KHR_performance_query
8985 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
8986 {
8987 return nullptr;
8988 }
8989 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
8990 {
8991 return nullptr;
8992 }
8993 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
8994 {
8995 return nullptr;
8996 }
8997 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
8998 {
8999 return nullptr;
9000 }
9001#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009002#ifdef VK_KHR_get_surface_capabilities2
9003 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
9004 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009005 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009006 }
9007 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
9008 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009009 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009010 }
9011#endif
9012#ifdef VK_KHR_get_display_properties2
9013 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
9014 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009015 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009016 }
9017 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
9018 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009019 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009020 }
9021 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
9022 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009023 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009024 }
9025 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
9026 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009027 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009028 }
9029#endif
9030#ifdef VK_KHR_get_memory_requirements2
9031 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
9032 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009033 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009034 }
9035 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
9036 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009037 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009038 }
9039 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
9040 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009041 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009042 }
9043#endif
9044#ifdef VK_KHR_sampler_ycbcr_conversion
9045 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
9046 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009047 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009048 }
9049 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
9050 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009051 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009052 }
9053#endif
9054#ifdef VK_KHR_bind_memory2
9055 if (!strcmp(name, "vkBindBufferMemory2KHR"))
9056 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009057 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009058 }
9059 if (!strcmp(name, "vkBindImageMemory2KHR"))
9060 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009061 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009062 }
9063#endif
9064#ifdef VK_KHR_maintenance3
9065 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
9066 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009067 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009068 }
9069#endif
9070#ifdef VK_KHR_draw_indirect_count
9071 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
9072 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009073 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009074 }
9075 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
9076 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009077 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009078 }
9079#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009080#ifdef VK_KHR_timeline_semaphore
9081 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
9082 {
9083 return nullptr;
9084 }
9085 if (!strcmp(name, "vkWaitSemaphoresKHR"))
9086 {
9087 return nullptr;
9088 }
9089 if (!strcmp(name, "vkSignalSemaphoreKHR"))
9090 {
9091 return nullptr;
9092 }
9093#endif
9094#ifdef VK_KHR_fragment_shading_rate
9095 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
9096 {
9097 return nullptr;
9098 }
9099 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
9100 {
9101 return nullptr;
9102 }
9103#endif
9104#ifdef VK_KHR_buffer_device_address
9105 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
9106 {
9107 return nullptr;
9108 }
9109 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
9110 {
9111 return nullptr;
9112 }
9113 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
9114 {
9115 return nullptr;
9116 }
9117#endif
9118#ifdef VK_KHR_deferred_host_operations
9119 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
9120 {
9121 return nullptr;
9122 }
9123 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
9124 {
9125 return nullptr;
9126 }
9127 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
9128 {
9129 return nullptr;
9130 }
9131 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
9132 {
9133 return nullptr;
9134 }
9135 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
9136 {
9137 return nullptr;
9138 }
9139#endif
9140#ifdef VK_KHR_pipeline_executable_properties
9141 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
9142 {
9143 return nullptr;
9144 }
9145 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
9146 {
9147 return nullptr;
9148 }
9149 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
9150 {
9151 return nullptr;
9152 }
9153#endif
9154#ifdef VK_KHR_copy_commands2
9155 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
9156 {
9157 return nullptr;
9158 }
9159 if (!strcmp(name, "vkCmdCopyImage2KHR"))
9160 {
9161 return nullptr;
9162 }
9163 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
9164 {
9165 return nullptr;
9166 }
9167 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
9168 {
9169 return nullptr;
9170 }
9171 if (!strcmp(name, "vkCmdBlitImage2KHR"))
9172 {
9173 return nullptr;
9174 }
9175 if (!strcmp(name, "vkCmdResolveImage2KHR"))
9176 {
9177 return nullptr;
9178 }
9179#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08009180#ifdef VK_ANDROID_native_buffer
9181 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
9182 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009183 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08009184 }
9185 if (!strcmp(name, "vkAcquireImageANDROID"))
9186 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009187 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08009188 }
9189 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
9190 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009191 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08009192 }
9193#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009194#ifdef VK_EXT_debug_report
9195 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
9196 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009197 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009198 }
9199 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
9200 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009201 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009202 }
9203 if (!strcmp(name, "vkDebugReportMessageEXT"))
9204 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009205 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009206 }
9207#endif
9208#ifdef VK_EXT_debug_marker
9209 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
9210 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009211 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009212 }
9213 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
9214 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009215 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009216 }
9217 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
9218 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009219 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009220 }
9221 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
9222 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009223 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009224 }
9225 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
9226 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009227 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009228 }
9229#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009230#ifdef VK_EXT_transform_feedback
9231 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
9232 {
9233 return nullptr;
9234 }
9235 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
9236 {
9237 return nullptr;
9238 }
9239 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
9240 {
9241 return nullptr;
9242 }
9243 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
9244 {
9245 return nullptr;
9246 }
9247 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
9248 {
9249 return nullptr;
9250 }
9251 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
9252 {
9253 return nullptr;
9254 }
9255#endif
9256#ifdef VK_NVX_image_view_handle
9257 if (!strcmp(name, "vkGetImageViewHandleNVX"))
9258 {
9259 return nullptr;
9260 }
9261 if (!strcmp(name, "vkGetImageViewAddressNVX"))
9262 {
9263 return nullptr;
9264 }
9265#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009266#ifdef VK_AMD_draw_indirect_count
9267 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
9268 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009269 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009270 }
9271 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
9272 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009273 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009274 }
9275#endif
9276#ifdef VK_AMD_shader_info
9277 if (!strcmp(name, "vkGetShaderInfoAMD"))
9278 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009279 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009280 }
9281#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009282#ifdef VK_GGP_stream_descriptor_surface
9283 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
9284 {
9285 return nullptr;
9286 }
9287#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009288#ifdef VK_NV_external_memory_capabilities
9289 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
9290 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009291 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009292 }
9293#endif
9294#ifdef VK_NV_external_memory_win32
9295 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
9296 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009297 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009298 }
9299#endif
9300#ifdef VK_NN_vi_surface
9301 if (!strcmp(name, "vkCreateViSurfaceNN"))
9302 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009303 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009304 }
9305#endif
9306#ifdef VK_EXT_conditional_rendering
9307 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
9308 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009309 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009310 }
9311 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
9312 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009313 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009314 }
9315#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009316#ifdef VK_NV_clip_space_w_scaling
9317 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
9318 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009319 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009320 }
9321#endif
9322#ifdef VK_EXT_direct_mode_display
9323 if (!strcmp(name, "vkReleaseDisplayEXT"))
9324 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009325 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009326 }
9327#endif
9328#ifdef VK_EXT_acquire_xlib_display
9329 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
9330 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009331 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009332 }
9333 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
9334 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009335 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009336 }
9337#endif
9338#ifdef VK_EXT_display_surface_counter
9339 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
9340 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009341 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009342 }
9343#endif
9344#ifdef VK_EXT_display_control
9345 if (!strcmp(name, "vkDisplayPowerControlEXT"))
9346 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009347 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009348 }
9349 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
9350 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009351 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009352 }
9353 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
9354 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009355 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009356 }
9357 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
9358 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009359 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009360 }
9361#endif
9362#ifdef VK_GOOGLE_display_timing
9363 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
9364 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009365 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009366 }
9367 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
9368 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009369 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009370 }
9371#endif
9372#ifdef VK_EXT_discard_rectangles
9373 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
9374 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009375 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009376 }
9377#endif
9378#ifdef VK_EXT_hdr_metadata
9379 if (!strcmp(name, "vkSetHdrMetadataEXT"))
9380 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009381 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009382 }
9383#endif
9384#ifdef VK_MVK_ios_surface
9385 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
9386 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009387 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009388 }
9389#endif
9390#ifdef VK_MVK_macos_surface
9391 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
9392 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009393 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009394 }
9395#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009396#ifdef VK_MVK_moltenvk
9397 if (!strcmp(name, "vkGetMTLDeviceMVK"))
9398 {
9399 return nullptr;
9400 }
9401 if (!strcmp(name, "vkSetMTLTextureMVK"))
9402 {
9403 return nullptr;
9404 }
9405 if (!strcmp(name, "vkGetMTLTextureMVK"))
9406 {
9407 return nullptr;
9408 }
9409 if (!strcmp(name, "vkGetMTLBufferMVK"))
9410 {
9411 return nullptr;
9412 }
9413 if (!strcmp(name, "vkUseIOSurfaceMVK"))
9414 {
9415 return nullptr;
9416 }
9417 if (!strcmp(name, "vkGetIOSurfaceMVK"))
9418 {
9419 return nullptr;
9420 }
9421#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009422#ifdef VK_EXT_debug_utils
9423 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
9424 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009425 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009426 }
9427 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
9428 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009429 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009430 }
9431 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
9432 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009433 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009434 }
9435 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
9436 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009437 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009438 }
9439 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
9440 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009441 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009442 }
9443 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
9444 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009445 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009446 }
9447 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
9448 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009449 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009450 }
9451 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
9452 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009453 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009454 }
9455 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
9456 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009457 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009458 }
9459 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
9460 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009461 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009462 }
9463 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
9464 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009465 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009466 }
9467#endif
9468#ifdef VK_ANDROID_external_memory_android_hardware_buffer
9469 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
9470 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009471 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009472 }
9473 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
9474 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009475 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009476 }
9477#endif
9478#ifdef VK_EXT_sample_locations
9479 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
9480 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009481 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009482 }
9483 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
9484 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009485 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009486 }
9487#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009488#ifdef VK_EXT_image_drm_format_modifier
9489 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
9490 {
9491 return nullptr;
9492 }
9493#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009494#ifdef VK_EXT_validation_cache
9495 if (!strcmp(name, "vkCreateValidationCacheEXT"))
9496 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009497 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009498 }
9499 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
9500 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009501 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009502 }
9503 if (!strcmp(name, "vkMergeValidationCachesEXT"))
9504 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009505 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009506 }
9507 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
9508 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009509 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009510 }
9511#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009512#ifdef VK_NV_shading_rate_image
9513 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
9514 {
9515 return nullptr;
9516 }
9517 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
9518 {
9519 return nullptr;
9520 }
9521 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
9522 {
9523 return nullptr;
9524 }
9525#endif
9526#ifdef VK_NV_ray_tracing
9527 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
9528 {
9529 return nullptr;
9530 }
9531 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
9532 {
9533 return nullptr;
9534 }
9535 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
9536 {
9537 return nullptr;
9538 }
9539 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
9540 {
9541 return nullptr;
9542 }
9543 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
9544 {
9545 return nullptr;
9546 }
9547 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
9548 {
9549 return nullptr;
9550 }
9551 if (!strcmp(name, "vkCmdTraceRaysNV"))
9552 {
9553 return nullptr;
9554 }
9555 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
9556 {
9557 return nullptr;
9558 }
9559 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
9560 {
9561 return nullptr;
9562 }
9563 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
9564 {
9565 return nullptr;
9566 }
9567 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
9568 {
9569 return nullptr;
9570 }
9571 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
9572 {
9573 return nullptr;
9574 }
9575 if (!strcmp(name, "vkCompileDeferredNV"))
9576 {
9577 return nullptr;
9578 }
9579#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009580#ifdef VK_EXT_external_memory_host
9581 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
9582 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009583 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009584 }
9585#endif
9586#ifdef VK_AMD_buffer_marker
9587 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
9588 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009589 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009590 }
9591#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009592#ifdef VK_EXT_calibrated_timestamps
9593 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
9594 {
9595 return nullptr;
9596 }
9597 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
9598 {
9599 return nullptr;
9600 }
9601#endif
9602#ifdef VK_NV_mesh_shader
9603 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
9604 {
9605 return nullptr;
9606 }
9607 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
9608 {
9609 return nullptr;
9610 }
9611 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
9612 {
9613 return nullptr;
9614 }
9615#endif
9616#ifdef VK_NV_scissor_exclusive
9617 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
9618 {
9619 return nullptr;
9620 }
9621#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009622#ifdef VK_NV_device_diagnostic_checkpoints
9623 if (!strcmp(name, "vkCmdSetCheckpointNV"))
9624 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009625 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009626 }
9627 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
9628 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009629 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009630 }
9631#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009632#ifdef VK_INTEL_performance_query
9633 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
9634 {
9635 return nullptr;
9636 }
9637 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
9638 {
9639 return nullptr;
9640 }
9641 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
9642 {
9643 return nullptr;
9644 }
9645 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
9646 {
9647 return nullptr;
9648 }
9649 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
9650 {
9651 return nullptr;
9652 }
9653 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
9654 {
9655 return nullptr;
9656 }
9657 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
9658 {
9659 return nullptr;
9660 }
9661 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
9662 {
9663 return nullptr;
9664 }
9665 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
9666 {
9667 return nullptr;
9668 }
9669#endif
9670#ifdef VK_AMD_display_native_hdr
9671 if (!strcmp(name, "vkSetLocalDimmingAMD"))
9672 {
9673 return nullptr;
9674 }
9675#endif
9676#ifdef VK_FUCHSIA_imagepipe_surface
9677 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
9678 {
9679 return nullptr;
9680 }
9681#endif
9682#ifdef VK_EXT_metal_surface
9683 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08009684 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08009685 return nullptr;
9686 }
9687#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009688#ifdef VK_EXT_buffer_device_address
9689 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
9690 {
9691 return nullptr;
9692 }
9693#endif
9694#ifdef VK_EXT_tooling_info
9695 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
9696 {
9697 return nullptr;
9698 }
9699#endif
9700#ifdef VK_NV_cooperative_matrix
9701 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
9702 {
9703 return nullptr;
9704 }
9705#endif
9706#ifdef VK_NV_coverage_reduction_mode
9707 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
9708 {
9709 return nullptr;
9710 }
9711#endif
9712#ifdef VK_EXT_full_screen_exclusive
9713 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
9714 {
9715 return nullptr;
9716 }
9717 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
9718 {
9719 return nullptr;
9720 }
9721 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
9722 {
9723 return nullptr;
9724 }
9725 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
9726 {
9727 return nullptr;
9728 }
9729#endif
9730#ifdef VK_EXT_headless_surface
9731 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
9732 {
9733 return nullptr;
9734 }
9735#endif
9736#ifdef VK_EXT_line_rasterization
9737 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
9738 {
9739 return nullptr;
9740 }
9741#endif
9742#ifdef VK_EXT_host_query_reset
9743 if (!strcmp(name, "vkResetQueryPoolEXT"))
9744 {
9745 return nullptr;
9746 }
9747#endif
9748#ifdef VK_EXT_extended_dynamic_state
9749 if (!strcmp(name, "vkCmdSetCullModeEXT"))
9750 {
9751 return nullptr;
9752 }
9753 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
9754 {
9755 return nullptr;
9756 }
9757 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
9758 {
9759 return nullptr;
9760 }
9761 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
9762 {
9763 return nullptr;
9764 }
9765 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
9766 {
9767 return nullptr;
9768 }
9769 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
9770 {
9771 return nullptr;
9772 }
9773 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
9774 {
9775 return nullptr;
9776 }
9777 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
9778 {
9779 return nullptr;
9780 }
9781 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
9782 {
9783 return nullptr;
9784 }
9785 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
9786 {
9787 return nullptr;
9788 }
9789 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
9790 {
9791 return nullptr;
9792 }
9793 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
9794 {
9795 return nullptr;
9796 }
9797#endif
9798#ifdef VK_NV_device_generated_commands
9799 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
9800 {
9801 return nullptr;
9802 }
9803 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
9804 {
9805 return nullptr;
9806 }
9807 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
9808 {
9809 return nullptr;
9810 }
9811 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
9812 {
9813 return nullptr;
9814 }
9815 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
9816 {
9817 return nullptr;
9818 }
9819 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
9820 {
9821 return nullptr;
9822 }
9823#endif
9824#ifdef VK_EXT_private_data
9825 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
9826 {
9827 return nullptr;
9828 }
9829 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
9830 {
9831 return nullptr;
9832 }
9833 if (!strcmp(name, "vkSetPrivateDataEXT"))
9834 {
9835 return nullptr;
9836 }
9837 if (!strcmp(name, "vkGetPrivateDataEXT"))
9838 {
9839 return nullptr;
9840 }
9841#endif
9842#ifdef VK_NV_fragment_shading_rate_enums
9843 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
9844 {
9845 return nullptr;
9846 }
9847#endif
9848#ifdef VK_EXT_directfb_surface
9849 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
9850 {
9851 return nullptr;
9852 }
9853 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
9854 {
9855 return nullptr;
9856 }
9857#endif
Yilong Li71c43c52021-02-10 02:50:43 -08009858#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -07009859 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
9860 {
9861 return nullptr;
9862 }
9863 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
9864 {
9865 return nullptr;
9866 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009867 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
9868 {
9869 return nullptr;
9870 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07009871 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
9872 {
9873 return nullptr;
9874 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009875 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
9876 {
9877 return nullptr;
9878 }
9879 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
9880 {
9881 return nullptr;
9882 }
9883 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
9884 {
9885 return nullptr;
9886 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07009887 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
9888 {
9889 return nullptr;
9890 }
Lingfeng Yang87f11962019-06-27 16:28:53 +00009891 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
9892 {
9893 return nullptr;
9894 }
9895 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
9896 {
9897 return nullptr;
9898 }
Lingfeng Yang4c542412020-02-04 18:18:32 -08009899 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
9900 {
9901 return nullptr;
9902 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07009903 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
9904 {
9905 return nullptr;
9906 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07009907 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
9908 {
9909 return nullptr;
9910 }
9911 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
9912 {
9913 return nullptr;
9914 }
9915 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
9916 {
9917 return nullptr;
9918 }
9919 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
9920 {
9921 return nullptr;
9922 }
Yilong Lia48b0102020-09-15 15:08:28 -07009923 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
9924 {
9925 return nullptr;
9926 }
Yilong Lia8d45f12021-02-07 02:30:21 -08009927 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
Lingfeng Yang2178dc72021-01-08 14:01:47 -08009928 {
9929 return nullptr;
9930 }
Lingfeng Yang55676e02021-02-08 08:39:45 -08009931 if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
9932 {
9933 return nullptr;
9934 }
9935 if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
9936 {
9937 return nullptr;
9938 }
Lingfeng Yang5678e1e2021-07-15 12:28:05 -07009939 if (!strcmp(name, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE"))
9940 {
9941 return nullptr;
9942 }
Lingfeng Yang2178dc72021-01-08 14:01:47 -08009943#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009944#ifdef VK_KHR_acceleration_structure
9945 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
9946 {
9947 return nullptr;
9948 }
9949 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
9950 {
9951 return nullptr;
9952 }
9953 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
9954 {
9955 return nullptr;
9956 }
9957 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
9958 {
9959 return nullptr;
9960 }
9961 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
9962 {
9963 return nullptr;
9964 }
9965 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
9966 {
9967 return nullptr;
9968 }
9969 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
9970 {
9971 return nullptr;
9972 }
9973 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
9974 {
9975 return nullptr;
9976 }
9977 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
9978 {
9979 return nullptr;
9980 }
9981 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
9982 {
9983 return nullptr;
9984 }
9985 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
9986 {
9987 return nullptr;
9988 }
9989 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
9990 {
9991 return nullptr;
9992 }
9993 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
9994 {
9995 return nullptr;
9996 }
9997 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
9998 {
9999 return nullptr;
10000 }
10001 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
10002 {
10003 return nullptr;
10004 }
10005 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
10006 {
10007 return nullptr;
10008 }
10009#endif
10010#ifdef VK_KHR_ray_tracing_pipeline
10011 if (!strcmp(name, "vkCmdTraceRaysKHR"))
10012 {
10013 return nullptr;
10014 }
10015 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
10016 {
10017 return nullptr;
10018 }
10019 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
10020 {
10021 return nullptr;
10022 }
10023 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
10024 {
10025 return nullptr;
10026 }
10027 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
10028 {
10029 return nullptr;
10030 }
10031 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
Lingfeng Yangded34672021-01-22 23:17:47 -080010032 {
10033 return nullptr;
10034 }
10035#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010036 return nullptr;
10037}
10038void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
10039 auto resources = ResourceTracker::get();
10040 bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
10041#ifdef VK_VERSION_1_0
10042 if (!strcmp(name, "vkCreateInstance"))
10043 {
10044 return (void*)entry_vkCreateInstance;
10045 }
10046 if (!strcmp(name, "vkDestroyInstance"))
10047 {
10048 return (void*)entry_vkDestroyInstance;
10049 }
10050 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
10051 {
10052 return (void*)entry_vkEnumeratePhysicalDevices;
10053 }
10054 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
10055 {
10056 return (void*)entry_vkGetPhysicalDeviceFeatures;
10057 }
10058 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
10059 {
10060 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
10061 }
10062 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
10063 {
10064 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
10065 }
10066 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
10067 {
10068 return (void*)entry_vkGetPhysicalDeviceProperties;
10069 }
10070 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
10071 {
10072 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
10073 }
10074 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
10075 {
10076 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
10077 }
10078 if (!strcmp(name, "vkGetInstanceProcAddr"))
10079 {
10080 return (void*)entry_vkGetInstanceProcAddr;
10081 }
10082 if (!strcmp(name, "vkGetDeviceProcAddr"))
10083 {
10084 return (void*)entry_vkGetDeviceProcAddr;
10085 }
10086 if (!strcmp(name, "vkCreateDevice"))
10087 {
10088 return (void*)entry_vkCreateDevice;
10089 }
10090 if (!strcmp(name, "vkDestroyDevice"))
10091 {
10092 return (void*)entry_vkDestroyDevice;
10093 }
10094 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
10095 {
10096 return (void*)entry_vkEnumerateInstanceExtensionProperties;
10097 }
10098 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
10099 {
10100 return (void*)entry_vkEnumerateDeviceExtensionProperties;
10101 }
10102 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
10103 {
10104 return (void*)entry_vkEnumerateInstanceLayerProperties;
10105 }
10106 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
10107 {
10108 return (void*)entry_vkEnumerateDeviceLayerProperties;
10109 }
10110 if (!strcmp(name, "vkGetDeviceQueue"))
10111 {
10112 return (void*)entry_vkGetDeviceQueue;
10113 }
10114 if (!strcmp(name, "vkQueueSubmit"))
10115 {
10116 return (void*)entry_vkQueueSubmit;
10117 }
10118 if (!strcmp(name, "vkQueueWaitIdle"))
10119 {
10120 return (void*)entry_vkQueueWaitIdle;
10121 }
10122 if (!strcmp(name, "vkDeviceWaitIdle"))
10123 {
10124 return (void*)entry_vkDeviceWaitIdle;
10125 }
10126 if (!strcmp(name, "vkAllocateMemory"))
10127 {
10128 return (void*)entry_vkAllocateMemory;
10129 }
10130 if (!strcmp(name, "vkFreeMemory"))
10131 {
10132 return (void*)entry_vkFreeMemory;
10133 }
10134 if (!strcmp(name, "vkMapMemory"))
10135 {
10136 return (void*)entry_vkMapMemory;
10137 }
10138 if (!strcmp(name, "vkUnmapMemory"))
10139 {
10140 return (void*)entry_vkUnmapMemory;
10141 }
10142 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
10143 {
10144 return (void*)entry_vkFlushMappedMemoryRanges;
10145 }
10146 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
10147 {
10148 return (void*)entry_vkInvalidateMappedMemoryRanges;
10149 }
10150 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
10151 {
10152 return (void*)entry_vkGetDeviceMemoryCommitment;
10153 }
10154 if (!strcmp(name, "vkBindBufferMemory"))
10155 {
10156 return (void*)entry_vkBindBufferMemory;
10157 }
10158 if (!strcmp(name, "vkBindImageMemory"))
10159 {
10160 return (void*)entry_vkBindImageMemory;
10161 }
10162 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
10163 {
10164 return (void*)entry_vkGetBufferMemoryRequirements;
10165 }
10166 if (!strcmp(name, "vkGetImageMemoryRequirements"))
10167 {
10168 return (void*)entry_vkGetImageMemoryRequirements;
10169 }
10170 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
10171 {
10172 return (void*)entry_vkGetImageSparseMemoryRequirements;
10173 }
10174 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
10175 {
10176 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
10177 }
10178 if (!strcmp(name, "vkQueueBindSparse"))
10179 {
10180 return (void*)entry_vkQueueBindSparse;
10181 }
10182 if (!strcmp(name, "vkCreateFence"))
10183 {
10184 return (void*)entry_vkCreateFence;
10185 }
10186 if (!strcmp(name, "vkDestroyFence"))
10187 {
10188 return (void*)entry_vkDestroyFence;
10189 }
10190 if (!strcmp(name, "vkResetFences"))
10191 {
10192 return (void*)entry_vkResetFences;
10193 }
10194 if (!strcmp(name, "vkGetFenceStatus"))
10195 {
10196 return (void*)entry_vkGetFenceStatus;
10197 }
10198 if (!strcmp(name, "vkWaitForFences"))
10199 {
10200 return (void*)entry_vkWaitForFences;
10201 }
10202 if (!strcmp(name, "vkCreateSemaphore"))
10203 {
10204 return (void*)entry_vkCreateSemaphore;
10205 }
10206 if (!strcmp(name, "vkDestroySemaphore"))
10207 {
10208 return (void*)entry_vkDestroySemaphore;
10209 }
10210 if (!strcmp(name, "vkCreateEvent"))
10211 {
10212 return (void*)entry_vkCreateEvent;
10213 }
10214 if (!strcmp(name, "vkDestroyEvent"))
10215 {
10216 return (void*)entry_vkDestroyEvent;
10217 }
10218 if (!strcmp(name, "vkGetEventStatus"))
10219 {
10220 return (void*)entry_vkGetEventStatus;
10221 }
10222 if (!strcmp(name, "vkSetEvent"))
10223 {
10224 return (void*)entry_vkSetEvent;
10225 }
10226 if (!strcmp(name, "vkResetEvent"))
10227 {
10228 return (void*)entry_vkResetEvent;
10229 }
10230 if (!strcmp(name, "vkCreateQueryPool"))
10231 {
10232 return (void*)entry_vkCreateQueryPool;
10233 }
10234 if (!strcmp(name, "vkDestroyQueryPool"))
10235 {
10236 return (void*)entry_vkDestroyQueryPool;
10237 }
10238 if (!strcmp(name, "vkGetQueryPoolResults"))
10239 {
10240 return (void*)entry_vkGetQueryPoolResults;
10241 }
10242 if (!strcmp(name, "vkCreateBuffer"))
10243 {
10244 return (void*)entry_vkCreateBuffer;
10245 }
10246 if (!strcmp(name, "vkDestroyBuffer"))
10247 {
10248 return (void*)entry_vkDestroyBuffer;
10249 }
10250 if (!strcmp(name, "vkCreateBufferView"))
10251 {
10252 return (void*)entry_vkCreateBufferView;
10253 }
10254 if (!strcmp(name, "vkDestroyBufferView"))
10255 {
10256 return (void*)entry_vkDestroyBufferView;
10257 }
10258 if (!strcmp(name, "vkCreateImage"))
10259 {
10260 return (void*)entry_vkCreateImage;
10261 }
10262 if (!strcmp(name, "vkDestroyImage"))
10263 {
10264 return (void*)entry_vkDestroyImage;
10265 }
10266 if (!strcmp(name, "vkGetImageSubresourceLayout"))
10267 {
10268 return (void*)entry_vkGetImageSubresourceLayout;
10269 }
10270 if (!strcmp(name, "vkCreateImageView"))
10271 {
10272 return (void*)entry_vkCreateImageView;
10273 }
10274 if (!strcmp(name, "vkDestroyImageView"))
10275 {
10276 return (void*)entry_vkDestroyImageView;
10277 }
10278 if (!strcmp(name, "vkCreateShaderModule"))
10279 {
10280 return (void*)entry_vkCreateShaderModule;
10281 }
10282 if (!strcmp(name, "vkDestroyShaderModule"))
10283 {
10284 return (void*)entry_vkDestroyShaderModule;
10285 }
10286 if (!strcmp(name, "vkCreatePipelineCache"))
10287 {
10288 return (void*)entry_vkCreatePipelineCache;
10289 }
10290 if (!strcmp(name, "vkDestroyPipelineCache"))
10291 {
10292 return (void*)entry_vkDestroyPipelineCache;
10293 }
10294 if (!strcmp(name, "vkGetPipelineCacheData"))
10295 {
10296 return (void*)entry_vkGetPipelineCacheData;
10297 }
10298 if (!strcmp(name, "vkMergePipelineCaches"))
10299 {
10300 return (void*)entry_vkMergePipelineCaches;
10301 }
10302 if (!strcmp(name, "vkCreateGraphicsPipelines"))
10303 {
10304 return (void*)entry_vkCreateGraphicsPipelines;
10305 }
10306 if (!strcmp(name, "vkCreateComputePipelines"))
10307 {
10308 return (void*)entry_vkCreateComputePipelines;
10309 }
10310 if (!strcmp(name, "vkDestroyPipeline"))
10311 {
10312 return (void*)entry_vkDestroyPipeline;
10313 }
10314 if (!strcmp(name, "vkCreatePipelineLayout"))
10315 {
10316 return (void*)entry_vkCreatePipelineLayout;
10317 }
10318 if (!strcmp(name, "vkDestroyPipelineLayout"))
10319 {
10320 return (void*)entry_vkDestroyPipelineLayout;
10321 }
10322 if (!strcmp(name, "vkCreateSampler"))
10323 {
10324 return (void*)entry_vkCreateSampler;
10325 }
10326 if (!strcmp(name, "vkDestroySampler"))
10327 {
10328 return (void*)entry_vkDestroySampler;
10329 }
10330 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
10331 {
10332 return (void*)entry_vkCreateDescriptorSetLayout;
10333 }
10334 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
10335 {
10336 return (void*)entry_vkDestroyDescriptorSetLayout;
10337 }
10338 if (!strcmp(name, "vkCreateDescriptorPool"))
10339 {
10340 return (void*)entry_vkCreateDescriptorPool;
10341 }
10342 if (!strcmp(name, "vkDestroyDescriptorPool"))
10343 {
10344 return (void*)entry_vkDestroyDescriptorPool;
10345 }
10346 if (!strcmp(name, "vkResetDescriptorPool"))
10347 {
10348 return (void*)entry_vkResetDescriptorPool;
10349 }
10350 if (!strcmp(name, "vkAllocateDescriptorSets"))
10351 {
10352 return (void*)entry_vkAllocateDescriptorSets;
10353 }
10354 if (!strcmp(name, "vkFreeDescriptorSets"))
10355 {
10356 return (void*)entry_vkFreeDescriptorSets;
10357 }
10358 if (!strcmp(name, "vkUpdateDescriptorSets"))
10359 {
10360 return (void*)entry_vkUpdateDescriptorSets;
10361 }
10362 if (!strcmp(name, "vkCreateFramebuffer"))
10363 {
10364 return (void*)entry_vkCreateFramebuffer;
10365 }
10366 if (!strcmp(name, "vkDestroyFramebuffer"))
10367 {
10368 return (void*)entry_vkDestroyFramebuffer;
10369 }
10370 if (!strcmp(name, "vkCreateRenderPass"))
10371 {
10372 return (void*)entry_vkCreateRenderPass;
10373 }
10374 if (!strcmp(name, "vkDestroyRenderPass"))
10375 {
10376 return (void*)entry_vkDestroyRenderPass;
10377 }
10378 if (!strcmp(name, "vkGetRenderAreaGranularity"))
10379 {
10380 return (void*)entry_vkGetRenderAreaGranularity;
10381 }
10382 if (!strcmp(name, "vkCreateCommandPool"))
10383 {
10384 return (void*)entry_vkCreateCommandPool;
10385 }
10386 if (!strcmp(name, "vkDestroyCommandPool"))
10387 {
10388 return (void*)entry_vkDestroyCommandPool;
10389 }
10390 if (!strcmp(name, "vkResetCommandPool"))
10391 {
10392 return (void*)entry_vkResetCommandPool;
10393 }
10394 if (!strcmp(name, "vkAllocateCommandBuffers"))
10395 {
10396 return (void*)entry_vkAllocateCommandBuffers;
10397 }
10398 if (!strcmp(name, "vkFreeCommandBuffers"))
10399 {
10400 return (void*)entry_vkFreeCommandBuffers;
10401 }
10402 if (!strcmp(name, "vkBeginCommandBuffer"))
10403 {
10404 return (void*)entry_vkBeginCommandBuffer;
10405 }
10406 if (!strcmp(name, "vkEndCommandBuffer"))
10407 {
10408 return (void*)entry_vkEndCommandBuffer;
10409 }
10410 if (!strcmp(name, "vkResetCommandBuffer"))
10411 {
10412 return (void*)entry_vkResetCommandBuffer;
10413 }
10414 if (!strcmp(name, "vkCmdBindPipeline"))
10415 {
10416 return (void*)entry_vkCmdBindPipeline;
10417 }
10418 if (!strcmp(name, "vkCmdSetViewport"))
10419 {
10420 return (void*)entry_vkCmdSetViewport;
10421 }
10422 if (!strcmp(name, "vkCmdSetScissor"))
10423 {
10424 return (void*)entry_vkCmdSetScissor;
10425 }
10426 if (!strcmp(name, "vkCmdSetLineWidth"))
10427 {
10428 return (void*)entry_vkCmdSetLineWidth;
10429 }
10430 if (!strcmp(name, "vkCmdSetDepthBias"))
10431 {
10432 return (void*)entry_vkCmdSetDepthBias;
10433 }
10434 if (!strcmp(name, "vkCmdSetBlendConstants"))
10435 {
10436 return (void*)entry_vkCmdSetBlendConstants;
10437 }
10438 if (!strcmp(name, "vkCmdSetDepthBounds"))
10439 {
10440 return (void*)entry_vkCmdSetDepthBounds;
10441 }
10442 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
10443 {
10444 return (void*)entry_vkCmdSetStencilCompareMask;
10445 }
10446 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
10447 {
10448 return (void*)entry_vkCmdSetStencilWriteMask;
10449 }
10450 if (!strcmp(name, "vkCmdSetStencilReference"))
10451 {
10452 return (void*)entry_vkCmdSetStencilReference;
10453 }
10454 if (!strcmp(name, "vkCmdBindDescriptorSets"))
10455 {
10456 return (void*)entry_vkCmdBindDescriptorSets;
10457 }
10458 if (!strcmp(name, "vkCmdBindIndexBuffer"))
10459 {
10460 return (void*)entry_vkCmdBindIndexBuffer;
10461 }
10462 if (!strcmp(name, "vkCmdBindVertexBuffers"))
10463 {
10464 return (void*)entry_vkCmdBindVertexBuffers;
10465 }
10466 if (!strcmp(name, "vkCmdDraw"))
10467 {
10468 return (void*)entry_vkCmdDraw;
10469 }
10470 if (!strcmp(name, "vkCmdDrawIndexed"))
10471 {
10472 return (void*)entry_vkCmdDrawIndexed;
10473 }
10474 if (!strcmp(name, "vkCmdDrawIndirect"))
10475 {
10476 return (void*)entry_vkCmdDrawIndirect;
10477 }
10478 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
10479 {
10480 return (void*)entry_vkCmdDrawIndexedIndirect;
10481 }
10482 if (!strcmp(name, "vkCmdDispatch"))
10483 {
10484 return (void*)entry_vkCmdDispatch;
10485 }
10486 if (!strcmp(name, "vkCmdDispatchIndirect"))
10487 {
10488 return (void*)entry_vkCmdDispatchIndirect;
10489 }
10490 if (!strcmp(name, "vkCmdCopyBuffer"))
10491 {
10492 return (void*)entry_vkCmdCopyBuffer;
10493 }
10494 if (!strcmp(name, "vkCmdCopyImage"))
10495 {
10496 return (void*)entry_vkCmdCopyImage;
10497 }
10498 if (!strcmp(name, "vkCmdBlitImage"))
10499 {
10500 return (void*)entry_vkCmdBlitImage;
10501 }
10502 if (!strcmp(name, "vkCmdCopyBufferToImage"))
10503 {
10504 return (void*)entry_vkCmdCopyBufferToImage;
10505 }
10506 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
10507 {
10508 return (void*)entry_vkCmdCopyImageToBuffer;
10509 }
10510 if (!strcmp(name, "vkCmdUpdateBuffer"))
10511 {
10512 return (void*)entry_vkCmdUpdateBuffer;
10513 }
10514 if (!strcmp(name, "vkCmdFillBuffer"))
10515 {
10516 return (void*)entry_vkCmdFillBuffer;
10517 }
10518 if (!strcmp(name, "vkCmdClearColorImage"))
10519 {
10520 return (void*)entry_vkCmdClearColorImage;
10521 }
10522 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
10523 {
10524 return (void*)entry_vkCmdClearDepthStencilImage;
10525 }
10526 if (!strcmp(name, "vkCmdClearAttachments"))
10527 {
10528 return (void*)entry_vkCmdClearAttachments;
10529 }
10530 if (!strcmp(name, "vkCmdResolveImage"))
10531 {
10532 return (void*)entry_vkCmdResolveImage;
10533 }
10534 if (!strcmp(name, "vkCmdSetEvent"))
10535 {
10536 return (void*)entry_vkCmdSetEvent;
10537 }
10538 if (!strcmp(name, "vkCmdResetEvent"))
10539 {
10540 return (void*)entry_vkCmdResetEvent;
10541 }
10542 if (!strcmp(name, "vkCmdWaitEvents"))
10543 {
10544 return (void*)entry_vkCmdWaitEvents;
10545 }
10546 if (!strcmp(name, "vkCmdPipelineBarrier"))
10547 {
10548 return (void*)entry_vkCmdPipelineBarrier;
10549 }
10550 if (!strcmp(name, "vkCmdBeginQuery"))
10551 {
10552 return (void*)entry_vkCmdBeginQuery;
10553 }
10554 if (!strcmp(name, "vkCmdEndQuery"))
10555 {
10556 return (void*)entry_vkCmdEndQuery;
10557 }
10558 if (!strcmp(name, "vkCmdResetQueryPool"))
10559 {
10560 return (void*)entry_vkCmdResetQueryPool;
10561 }
10562 if (!strcmp(name, "vkCmdWriteTimestamp"))
10563 {
10564 return (void*)entry_vkCmdWriteTimestamp;
10565 }
10566 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
10567 {
10568 return (void*)entry_vkCmdCopyQueryPoolResults;
10569 }
10570 if (!strcmp(name, "vkCmdPushConstants"))
10571 {
10572 return (void*)entry_vkCmdPushConstants;
10573 }
10574 if (!strcmp(name, "vkCmdBeginRenderPass"))
10575 {
10576 return (void*)entry_vkCmdBeginRenderPass;
10577 }
10578 if (!strcmp(name, "vkCmdNextSubpass"))
10579 {
10580 return (void*)entry_vkCmdNextSubpass;
10581 }
10582 if (!strcmp(name, "vkCmdEndRenderPass"))
10583 {
10584 return (void*)entry_vkCmdEndRenderPass;
10585 }
10586 if (!strcmp(name, "vkCmdExecuteCommands"))
10587 {
10588 return (void*)entry_vkCmdExecuteCommands;
10589 }
10590#endif
10591#ifdef VK_VERSION_1_1
10592 if (!strcmp(name, "vkEnumerateInstanceVersion"))
10593 {
10594 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
10595 }
10596 if (!strcmp(name, "vkBindBufferMemory2"))
10597 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010598 return (void*)dynCheck_entry_vkBindBufferMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010599 }
10600 if (!strcmp(name, "vkBindImageMemory2"))
10601 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010602 return (void*)dynCheck_entry_vkBindImageMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010603 }
10604 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
10605 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010606 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010607 }
10608 if (!strcmp(name, "vkCmdSetDeviceMask"))
10609 {
10610 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
10611 }
10612 if (!strcmp(name, "vkCmdDispatchBase"))
10613 {
10614 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
10615 }
10616 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
10617 {
10618 return nullptr;
10619 }
10620 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
10621 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010622 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010623 }
10624 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
10625 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010626 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010627 }
10628 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
10629 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010630 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010631 }
10632 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
10633 {
10634 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
10635 }
10636 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
10637 {
10638 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
10639 }
10640 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
10641 {
10642 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
10643 }
10644 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
10645 {
10646 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
10647 }
10648 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
10649 {
10650 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
10651 }
10652 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
10653 {
10654 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
10655 }
10656 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
10657 {
10658 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
10659 }
10660 if (!strcmp(name, "vkTrimCommandPool"))
10661 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010662 return (void*)dynCheck_entry_vkTrimCommandPool;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010663 }
10664 if (!strcmp(name, "vkGetDeviceQueue2"))
10665 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010666 return (void*)dynCheck_entry_vkGetDeviceQueue2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010667 }
10668 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
10669 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010670 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010671 }
10672 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
10673 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010674 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010675 }
10676 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
10677 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010678 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010679 }
10680 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
10681 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010682 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010683 }
10684 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
10685 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010686 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010687 }
10688 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
10689 {
10690 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
10691 }
10692 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
10693 {
10694 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
10695 }
10696 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
10697 {
10698 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
10699 }
10700 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
10701 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010702 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010703 }
10704#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010705#ifdef VK_VERSION_1_2
10706 if (!strcmp(name, "vkCmdDrawIndirectCount"))
10707 {
10708 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10709 return hasExt ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
10710 }
10711 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
10712 {
10713 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10714 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
10715 }
10716 if (!strcmp(name, "vkCreateRenderPass2"))
10717 {
10718 return (void*)dynCheck_entry_vkCreateRenderPass2;
10719 }
10720 if (!strcmp(name, "vkCmdBeginRenderPass2"))
10721 {
10722 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10723 return hasExt ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
10724 }
10725 if (!strcmp(name, "vkCmdNextSubpass2"))
10726 {
10727 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10728 return hasExt ? (void*)entry_vkCmdNextSubpass2 : nullptr;
10729 }
10730 if (!strcmp(name, "vkCmdEndRenderPass2"))
10731 {
10732 bool hasExt = resources->hasInstanceExtension(instance, "VK_VERSION_1_2");
10733 return hasExt ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
10734 }
10735 if (!strcmp(name, "vkResetQueryPool"))
10736 {
10737 return (void*)dynCheck_entry_vkResetQueryPool;
10738 }
10739 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
10740 {
10741 return (void*)dynCheck_entry_vkGetSemaphoreCounterValue;
10742 }
10743 if (!strcmp(name, "vkWaitSemaphores"))
10744 {
10745 return (void*)dynCheck_entry_vkWaitSemaphores;
10746 }
10747 if (!strcmp(name, "vkSignalSemaphore"))
10748 {
10749 return (void*)dynCheck_entry_vkSignalSemaphore;
10750 }
10751 if (!strcmp(name, "vkGetBufferDeviceAddress"))
10752 {
10753 return (void*)dynCheck_entry_vkGetBufferDeviceAddress;
10754 }
10755 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
10756 {
10757 return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddress;
10758 }
10759 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
10760 {
10761 return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress;
10762 }
10763#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010764#ifdef VK_KHR_surface
10765 if (!strcmp(name, "vkDestroySurfaceKHR"))
10766 {
10767 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10768 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
10769 }
10770 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
10771 {
10772 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10773 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
10774 }
10775 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
10776 {
10777 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10778 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
10779 }
10780 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
10781 {
10782 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10783 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
10784 }
10785 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
10786 {
10787 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
10788 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
10789 }
10790#endif
10791#ifdef VK_KHR_swapchain
10792 if (!strcmp(name, "vkCreateSwapchainKHR"))
10793 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010794 return (void*)dynCheck_entry_vkCreateSwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010795 }
10796 if (!strcmp(name, "vkDestroySwapchainKHR"))
10797 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010798 return (void*)dynCheck_entry_vkDestroySwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010799 }
10800 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
10801 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010802 return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010803 }
10804 if (!strcmp(name, "vkAcquireNextImageKHR"))
10805 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010806 return (void*)dynCheck_entry_vkAcquireNextImageKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010807 }
10808 if (!strcmp(name, "vkQueuePresentKHR"))
10809 {
10810 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
10811 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
10812 }
10813 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
10814 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010815 return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010816 }
10817 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
10818 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010819 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010820 }
10821 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
10822 {
10823 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
10824 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
10825 }
10826 if (!strcmp(name, "vkAcquireNextImage2KHR"))
10827 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010828 return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010829 }
10830#endif
10831#ifdef VK_KHR_display
10832 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
10833 {
10834 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10835 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
10836 }
10837 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
10838 {
10839 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10840 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
10841 }
10842 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
10843 {
10844 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10845 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
10846 }
10847 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
10848 {
10849 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10850 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
10851 }
10852 if (!strcmp(name, "vkCreateDisplayModeKHR"))
10853 {
10854 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10855 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
10856 }
10857 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
10858 {
10859 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10860 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
10861 }
10862 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
10863 {
10864 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
10865 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
10866 }
10867#endif
10868#ifdef VK_KHR_display_swapchain
10869 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
10870 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010871 return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010872 }
10873#endif
10874#ifdef VK_KHR_xlib_surface
10875 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
10876 {
10877 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
10878 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
10879 }
10880 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
10881 {
10882 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
10883 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
10884 }
10885#endif
10886#ifdef VK_KHR_xcb_surface
10887 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
10888 {
10889 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
10890 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
10891 }
10892 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
10893 {
10894 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
10895 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
10896 }
10897#endif
10898#ifdef VK_KHR_wayland_surface
10899 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
10900 {
10901 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
10902 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
10903 }
10904 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
10905 {
10906 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
10907 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
10908 }
10909#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010910#ifdef VK_KHR_android_surface
10911 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
10912 {
10913 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
10914 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
10915 }
10916#endif
10917#ifdef VK_KHR_win32_surface
10918 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
10919 {
10920 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
10921 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
10922 }
10923 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
10924 {
10925 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
10926 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
10927 }
10928#endif
10929#ifdef VK_KHR_get_physical_device_properties2
10930 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
10931 {
10932 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10933 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
10934 }
10935 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
10936 {
10937 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10938 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
10939 }
10940 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
10941 {
10942 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10943 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
10944 }
10945 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
10946 {
10947 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10948 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
10949 }
10950 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
10951 {
10952 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10953 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
10954 }
10955 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
10956 {
10957 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10958 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
10959 }
10960 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
10961 {
10962 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
10963 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
10964 }
10965#endif
10966#ifdef VK_KHR_device_group
10967 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
10968 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010969 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010970 }
10971 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
10972 {
10973 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
10974 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
10975 }
10976 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
10977 {
10978 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
10979 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
10980 }
10981#endif
10982#ifdef VK_KHR_maintenance1
10983 if (!strcmp(name, "vkTrimCommandPoolKHR"))
10984 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070010985 return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080010986 }
10987#endif
10988#ifdef VK_KHR_device_group_creation
10989 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
10990 {
10991 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
10992 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
10993 }
10994#endif
10995#ifdef VK_KHR_external_memory_capabilities
10996 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
10997 {
10998 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
10999 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
11000 }
11001#endif
11002#ifdef VK_KHR_external_memory_win32
11003 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
11004 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011005 return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011006 }
11007 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
11008 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011009 return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011010 }
11011#endif
11012#ifdef VK_KHR_external_memory_fd
11013 if (!strcmp(name, "vkGetMemoryFdKHR"))
11014 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011015 return (void*)dynCheck_entry_vkGetMemoryFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011016 }
11017 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
11018 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011019 return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011020 }
11021#endif
11022#ifdef VK_KHR_external_semaphore_capabilities
11023 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
11024 {
11025 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
11026 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
11027 }
11028#endif
11029#ifdef VK_KHR_external_semaphore_win32
11030 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
11031 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011032 return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011033 }
11034 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
11035 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011036 return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011037 }
11038#endif
11039#ifdef VK_KHR_external_semaphore_fd
11040 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
11041 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011042 return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011043 }
11044 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
11045 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011046 return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011047 }
11048#endif
11049#ifdef VK_KHR_push_descriptor
11050 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
11051 {
11052 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
11053 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
11054 }
11055 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
11056 {
11057 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
11058 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
11059 }
11060#endif
11061#ifdef VK_KHR_descriptor_update_template
11062 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
11063 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011064 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011065 }
11066 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
11067 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011068 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011069 }
11070 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
11071 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011072 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011073 }
11074#endif
11075#ifdef VK_KHR_create_renderpass2
11076 if (!strcmp(name, "vkCreateRenderPass2KHR"))
11077 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011078 return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011079 }
11080 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
11081 {
11082 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
11083 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
11084 }
11085 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
11086 {
11087 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
11088 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
11089 }
11090 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
11091 {
11092 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
11093 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
11094 }
11095#endif
11096#ifdef VK_KHR_shared_presentable_image
11097 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
11098 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011099 return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011100 }
11101#endif
11102#ifdef VK_KHR_external_fence_capabilities
11103 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
11104 {
11105 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
11106 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
11107 }
11108#endif
11109#ifdef VK_KHR_external_fence_win32
11110 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
11111 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011112 return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011113 }
11114 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
11115 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011116 return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011117 }
11118#endif
11119#ifdef VK_KHR_external_fence_fd
11120 if (!strcmp(name, "vkImportFenceFdKHR"))
11121 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011122 return (void*)dynCheck_entry_vkImportFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011123 }
11124 if (!strcmp(name, "vkGetFenceFdKHR"))
11125 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011126 return (void*)dynCheck_entry_vkGetFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011127 }
11128#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011129#ifdef VK_KHR_performance_query
11130 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
11131 {
11132 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
11133 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
11134 }
11135 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
11136 {
11137 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
11138 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
11139 }
11140 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
11141 {
11142 return (void*)dynCheck_entry_vkAcquireProfilingLockKHR;
11143 }
11144 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
11145 {
11146 return (void*)dynCheck_entry_vkReleaseProfilingLockKHR;
11147 }
11148#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011149#ifdef VK_KHR_get_surface_capabilities2
11150 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
11151 {
11152 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
11153 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
11154 }
11155 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
11156 {
11157 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
11158 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
11159 }
11160#endif
11161#ifdef VK_KHR_get_display_properties2
11162 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
11163 {
11164 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11165 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
11166 }
11167 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
11168 {
11169 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11170 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
11171 }
11172 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
11173 {
11174 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11175 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
11176 }
11177 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
11178 {
11179 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
11180 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
11181 }
11182#endif
11183#ifdef VK_KHR_get_memory_requirements2
11184 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
11185 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011186 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011187 }
11188 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
11189 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011190 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011191 }
11192 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
11193 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011194 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011195 }
11196#endif
11197#ifdef VK_KHR_sampler_ycbcr_conversion
11198 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
11199 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011200 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011201 }
11202 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
11203 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011204 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011205 }
11206#endif
11207#ifdef VK_KHR_bind_memory2
11208 if (!strcmp(name, "vkBindBufferMemory2KHR"))
11209 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011210 return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011211 }
11212 if (!strcmp(name, "vkBindImageMemory2KHR"))
11213 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011214 return (void*)dynCheck_entry_vkBindImageMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011215 }
11216#endif
11217#ifdef VK_KHR_maintenance3
11218 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
11219 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011220 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011221 }
11222#endif
11223#ifdef VK_KHR_draw_indirect_count
11224 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
11225 {
11226 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
11227 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
11228 }
11229 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
11230 {
11231 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
11232 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
11233 }
11234#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011235#ifdef VK_KHR_timeline_semaphore
11236 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
11237 {
11238 return (void*)dynCheck_entry_vkGetSemaphoreCounterValueKHR;
11239 }
11240 if (!strcmp(name, "vkWaitSemaphoresKHR"))
11241 {
11242 return (void*)dynCheck_entry_vkWaitSemaphoresKHR;
11243 }
11244 if (!strcmp(name, "vkSignalSemaphoreKHR"))
11245 {
11246 return (void*)dynCheck_entry_vkSignalSemaphoreKHR;
11247 }
11248#endif
11249#ifdef VK_KHR_fragment_shading_rate
11250 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
11251 {
11252 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_fragment_shading_rate");
11253 return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
11254 }
11255 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
11256 {
11257 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_fragment_shading_rate");
11258 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateKHR : nullptr;
11259 }
11260#endif
11261#ifdef VK_KHR_buffer_device_address
11262 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
11263 {
11264 return (void*)dynCheck_entry_vkGetBufferDeviceAddressKHR;
11265 }
11266 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
11267 {
11268 return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR;
11269 }
11270 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
11271 {
11272 return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR;
11273 }
11274#endif
11275#ifdef VK_KHR_deferred_host_operations
11276 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
11277 {
11278 return (void*)dynCheck_entry_vkCreateDeferredOperationKHR;
11279 }
11280 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
11281 {
11282 return (void*)dynCheck_entry_vkDestroyDeferredOperationKHR;
11283 }
11284 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
11285 {
11286 return (void*)dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR;
11287 }
11288 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
11289 {
11290 return (void*)dynCheck_entry_vkGetDeferredOperationResultKHR;
11291 }
11292 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
11293 {
11294 return (void*)dynCheck_entry_vkDeferredOperationJoinKHR;
11295 }
11296#endif
11297#ifdef VK_KHR_pipeline_executable_properties
11298 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
11299 {
11300 return (void*)dynCheck_entry_vkGetPipelineExecutablePropertiesKHR;
11301 }
11302 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
11303 {
11304 return (void*)dynCheck_entry_vkGetPipelineExecutableStatisticsKHR;
11305 }
11306 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
11307 {
11308 return (void*)dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR;
11309 }
11310#endif
11311#ifdef VK_KHR_copy_commands2
11312 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
11313 {
11314 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11315 return hasExt ? (void*)entry_vkCmdCopyBuffer2KHR : nullptr;
11316 }
11317 if (!strcmp(name, "vkCmdCopyImage2KHR"))
11318 {
11319 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11320 return hasExt ? (void*)entry_vkCmdCopyImage2KHR : nullptr;
11321 }
11322 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
11323 {
11324 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11325 return hasExt ? (void*)entry_vkCmdCopyBufferToImage2KHR : nullptr;
11326 }
11327 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
11328 {
11329 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11330 return hasExt ? (void*)entry_vkCmdCopyImageToBuffer2KHR : nullptr;
11331 }
11332 if (!strcmp(name, "vkCmdBlitImage2KHR"))
11333 {
11334 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11335 return hasExt ? (void*)entry_vkCmdBlitImage2KHR : nullptr;
11336 }
11337 if (!strcmp(name, "vkCmdResolveImage2KHR"))
11338 {
11339 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_copy_commands2");
11340 return hasExt ? (void*)entry_vkCmdResolveImage2KHR : nullptr;
11341 }
11342#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011343#ifdef VK_ANDROID_native_buffer
11344 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
11345 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011346 return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011347 }
11348 if (!strcmp(name, "vkAcquireImageANDROID"))
11349 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011350 return (void*)dynCheck_entry_vkAcquireImageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011351 }
11352 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
11353 {
11354 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
11355 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
11356 }
11357#endif
11358#ifdef VK_EXT_debug_report
11359 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
11360 {
11361 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
11362 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
11363 }
11364 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
11365 {
11366 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
11367 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
11368 }
11369 if (!strcmp(name, "vkDebugReportMessageEXT"))
11370 {
11371 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
11372 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
11373 }
11374#endif
11375#ifdef VK_EXT_debug_marker
11376 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
11377 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011378 return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011379 }
11380 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
11381 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011382 return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011383 }
11384 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
11385 {
11386 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
11387 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
11388 }
11389 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
11390 {
11391 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
11392 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
11393 }
11394 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
11395 {
11396 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
11397 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
11398 }
11399#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011400#ifdef VK_EXT_transform_feedback
11401 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
11402 {
11403 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11404 return hasExt ? (void*)entry_vkCmdBindTransformFeedbackBuffersEXT : nullptr;
11405 }
11406 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
11407 {
11408 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11409 return hasExt ? (void*)entry_vkCmdBeginTransformFeedbackEXT : nullptr;
11410 }
11411 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
11412 {
11413 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11414 return hasExt ? (void*)entry_vkCmdEndTransformFeedbackEXT : nullptr;
11415 }
11416 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
11417 {
11418 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11419 return hasExt ? (void*)entry_vkCmdBeginQueryIndexedEXT : nullptr;
11420 }
11421 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
11422 {
11423 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11424 return hasExt ? (void*)entry_vkCmdEndQueryIndexedEXT : nullptr;
11425 }
11426 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
11427 {
11428 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_transform_feedback");
11429 return hasExt ? (void*)entry_vkCmdDrawIndirectByteCountEXT : nullptr;
11430 }
11431#endif
11432#ifdef VK_NVX_image_view_handle
11433 if (!strcmp(name, "vkGetImageViewHandleNVX"))
11434 {
11435 return (void*)dynCheck_entry_vkGetImageViewHandleNVX;
11436 }
11437 if (!strcmp(name, "vkGetImageViewAddressNVX"))
11438 {
11439 return (void*)dynCheck_entry_vkGetImageViewAddressNVX;
11440 }
11441#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011442#ifdef VK_AMD_draw_indirect_count
11443 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
11444 {
11445 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
11446 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
11447 }
11448 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
11449 {
11450 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
11451 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
11452 }
11453#endif
11454#ifdef VK_AMD_shader_info
11455 if (!strcmp(name, "vkGetShaderInfoAMD"))
11456 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011457 return (void*)dynCheck_entry_vkGetShaderInfoAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011458 }
11459#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011460#ifdef VK_GGP_stream_descriptor_surface
11461 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
11462 {
11463 bool hasExt = resources->hasInstanceExtension(instance, "VK_GGP_stream_descriptor_surface");
11464 return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
11465 }
11466#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011467#ifdef VK_NV_external_memory_capabilities
11468 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
11469 {
11470 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
11471 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
11472 }
11473#endif
11474#ifdef VK_NV_external_memory_win32
11475 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
11476 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011477 return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011478 }
11479#endif
11480#ifdef VK_NN_vi_surface
11481 if (!strcmp(name, "vkCreateViSurfaceNN"))
11482 {
11483 bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
11484 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
11485 }
11486#endif
11487#ifdef VK_EXT_conditional_rendering
11488 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
11489 {
11490 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
11491 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
11492 }
11493 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
11494 {
11495 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
11496 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
11497 }
11498#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011499#ifdef VK_NV_clip_space_w_scaling
11500 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
11501 {
11502 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling");
11503 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
11504 }
11505#endif
11506#ifdef VK_EXT_direct_mode_display
11507 if (!strcmp(name, "vkReleaseDisplayEXT"))
11508 {
11509 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
11510 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
11511 }
11512#endif
11513#ifdef VK_EXT_acquire_xlib_display
11514 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
11515 {
11516 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
11517 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
11518 }
11519 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
11520 {
11521 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
11522 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
11523 }
11524#endif
11525#ifdef VK_EXT_display_surface_counter
11526 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
11527 {
11528 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
11529 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
11530 }
11531#endif
11532#ifdef VK_EXT_display_control
11533 if (!strcmp(name, "vkDisplayPowerControlEXT"))
11534 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011535 return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011536 }
11537 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
11538 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011539 return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011540 }
11541 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
11542 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011543 return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011544 }
11545 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
11546 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011547 return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011548 }
11549#endif
11550#ifdef VK_GOOGLE_display_timing
11551 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
11552 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011553 return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011554 }
11555 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
11556 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011557 return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011558 }
11559#endif
11560#ifdef VK_EXT_discard_rectangles
11561 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
11562 {
11563 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles");
11564 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
11565 }
11566#endif
11567#ifdef VK_EXT_hdr_metadata
11568 if (!strcmp(name, "vkSetHdrMetadataEXT"))
11569 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011570 return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011571 }
11572#endif
11573#ifdef VK_MVK_ios_surface
11574 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
11575 {
11576 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
11577 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
11578 }
11579#endif
11580#ifdef VK_MVK_macos_surface
11581 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
11582 {
11583 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
11584 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
11585 }
11586#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011587#ifdef VK_MVK_moltenvk
11588 if (!strcmp(name, "vkGetMTLDeviceMVK"))
11589 {
11590 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11591 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
11592 }
11593 if (!strcmp(name, "vkSetMTLTextureMVK"))
11594 {
11595 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11596 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
11597 }
11598 if (!strcmp(name, "vkGetMTLTextureMVK"))
11599 {
11600 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11601 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
11602 }
11603 if (!strcmp(name, "vkGetMTLBufferMVK"))
11604 {
11605 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11606 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
11607 }
11608 if (!strcmp(name, "vkUseIOSurfaceMVK"))
11609 {
11610 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11611 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
11612 }
11613 if (!strcmp(name, "vkGetIOSurfaceMVK"))
11614 {
11615 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
11616 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
11617 }
11618#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011619#ifdef VK_EXT_debug_utils
11620 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
11621 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011622 return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011623 }
11624 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
11625 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011626 return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011627 }
11628 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
11629 {
11630 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11631 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
11632 }
11633 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
11634 {
11635 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11636 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
11637 }
11638 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
11639 {
11640 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11641 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
11642 }
11643 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
11644 {
11645 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11646 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
11647 }
11648 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
11649 {
11650 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11651 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
11652 }
11653 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
11654 {
11655 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11656 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
11657 }
11658 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
11659 {
11660 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11661 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
11662 }
11663 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
11664 {
11665 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11666 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
11667 }
11668 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
11669 {
11670 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
11671 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
11672 }
11673#endif
11674#ifdef VK_ANDROID_external_memory_android_hardware_buffer
11675 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
11676 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011677 return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011678 }
11679 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
11680 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011681 return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011682 }
11683#endif
11684#ifdef VK_EXT_sample_locations
11685 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
11686 {
11687 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
11688 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
11689 }
11690 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
11691 {
11692 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
11693 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
11694 }
11695#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011696#ifdef VK_EXT_image_drm_format_modifier
11697 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
11698 {
11699 return (void*)dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT;
11700 }
11701#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011702#ifdef VK_EXT_validation_cache
11703 if (!strcmp(name, "vkCreateValidationCacheEXT"))
11704 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011705 return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011706 }
11707 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
11708 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011709 return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011710 }
11711 if (!strcmp(name, "vkMergeValidationCachesEXT"))
11712 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011713 return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011714 }
11715 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
11716 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011717 return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011718 }
11719#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011720#ifdef VK_NV_shading_rate_image
11721 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
11722 {
11723 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
11724 return hasExt ? (void*)entry_vkCmdBindShadingRateImageNV : nullptr;
11725 }
11726 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
11727 {
11728 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
11729 return hasExt ? (void*)entry_vkCmdSetViewportShadingRatePaletteNV : nullptr;
11730 }
11731 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
11732 {
11733 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_shading_rate_image");
11734 return hasExt ? (void*)entry_vkCmdSetCoarseSampleOrderNV : nullptr;
11735 }
11736#endif
11737#ifdef VK_NV_ray_tracing
11738 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
11739 {
11740 return (void*)dynCheck_entry_vkCreateAccelerationStructureNV;
11741 }
11742 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
11743 {
11744 return (void*)dynCheck_entry_vkDestroyAccelerationStructureNV;
11745 }
11746 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
11747 {
11748 return (void*)dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV;
11749 }
11750 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
11751 {
11752 return (void*)dynCheck_entry_vkBindAccelerationStructureMemoryNV;
11753 }
11754 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
11755 {
11756 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11757 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructureNV : nullptr;
11758 }
11759 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
11760 {
11761 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11762 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureNV : nullptr;
11763 }
11764 if (!strcmp(name, "vkCmdTraceRaysNV"))
11765 {
11766 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11767 return hasExt ? (void*)entry_vkCmdTraceRaysNV : nullptr;
11768 }
11769 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
11770 {
11771 return (void*)dynCheck_entry_vkCreateRayTracingPipelinesNV;
11772 }
11773 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
11774 {
11775 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR;
11776 }
11777 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
11778 {
11779 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV;
11780 }
11781 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
11782 {
11783 return (void*)dynCheck_entry_vkGetAccelerationStructureHandleNV;
11784 }
11785 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
11786 {
11787 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_ray_tracing");
11788 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesNV : nullptr;
11789 }
11790 if (!strcmp(name, "vkCompileDeferredNV"))
11791 {
11792 return (void*)dynCheck_entry_vkCompileDeferredNV;
11793 }
11794#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011795#ifdef VK_EXT_external_memory_host
11796 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
11797 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070011798 return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011799 }
11800#endif
11801#ifdef VK_AMD_buffer_marker
11802 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
11803 {
11804 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker");
11805 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
11806 }
11807#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011808#ifdef VK_EXT_calibrated_timestamps
11809 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
11810 {
11811 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_calibrated_timestamps");
11812 return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
11813 }
11814 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
11815 {
11816 return (void*)dynCheck_entry_vkGetCalibratedTimestampsEXT;
11817 }
11818#endif
11819#ifdef VK_NV_mesh_shader
11820 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
11821 {
11822 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
11823 return hasExt ? (void*)entry_vkCmdDrawMeshTasksNV : nullptr;
11824 }
11825 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
11826 {
11827 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
11828 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectNV : nullptr;
11829 }
11830 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
11831 {
11832 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_mesh_shader");
11833 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountNV : nullptr;
11834 }
11835#endif
11836#ifdef VK_NV_scissor_exclusive
11837 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
11838 {
11839 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_scissor_exclusive");
11840 return hasExt ? (void*)entry_vkCmdSetExclusiveScissorNV : nullptr;
11841 }
11842#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011843#ifdef VK_NV_device_diagnostic_checkpoints
11844 if (!strcmp(name, "vkCmdSetCheckpointNV"))
11845 {
11846 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
11847 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
11848 }
11849 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
11850 {
11851 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
11852 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
11853 }
11854#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011855#ifdef VK_INTEL_performance_query
11856 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011857 {
Yilong Lia8d45f12021-02-07 02:30:21 -080011858 return (void*)dynCheck_entry_vkInitializePerformanceApiINTEL;
11859 }
11860 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
11861 {
11862 return (void*)dynCheck_entry_vkUninitializePerformanceApiINTEL;
11863 }
11864 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
11865 {
11866 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11867 return hasExt ? (void*)entry_vkCmdSetPerformanceMarkerINTEL : nullptr;
11868 }
11869 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
11870 {
11871 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11872 return hasExt ? (void*)entry_vkCmdSetPerformanceStreamMarkerINTEL : nullptr;
11873 }
11874 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
11875 {
11876 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11877 return hasExt ? (void*)entry_vkCmdSetPerformanceOverrideINTEL : nullptr;
11878 }
11879 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
11880 {
11881 return (void*)dynCheck_entry_vkAcquirePerformanceConfigurationINTEL;
11882 }
11883 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
11884 {
11885 return (void*)dynCheck_entry_vkReleasePerformanceConfigurationINTEL;
11886 }
11887 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
11888 {
11889 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
11890 return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
11891 }
11892 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
11893 {
11894 return (void*)dynCheck_entry_vkGetPerformanceParameterINTEL;
11895 }
11896#endif
11897#ifdef VK_AMD_display_native_hdr
11898 if (!strcmp(name, "vkSetLocalDimmingAMD"))
11899 {
11900 return (void*)dynCheck_entry_vkSetLocalDimmingAMD;
11901 }
11902#endif
11903#ifdef VK_FUCHSIA_imagepipe_surface
11904 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
11905 {
11906 bool hasExt = resources->hasInstanceExtension(instance, "VK_FUCHSIA_imagepipe_surface");
11907 return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
11908 }
11909#endif
11910#ifdef VK_EXT_metal_surface
11911 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
11912 {
11913 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_metal_surface");
11914 return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011915 }
11916#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011917#ifdef VK_EXT_buffer_device_address
11918 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
11919 {
11920 return (void*)dynCheck_entry_vkGetBufferDeviceAddressEXT;
11921 }
11922#endif
11923#ifdef VK_EXT_tooling_info
11924 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
11925 {
11926 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_tooling_info");
11927 return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
11928 }
11929#endif
11930#ifdef VK_NV_cooperative_matrix
11931 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
11932 {
11933 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_cooperative_matrix");
11934 return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
11935 }
11936#endif
11937#ifdef VK_NV_coverage_reduction_mode
11938 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
11939 {
11940 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_coverage_reduction_mode");
11941 return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
11942 }
11943#endif
11944#ifdef VK_EXT_full_screen_exclusive
11945 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
11946 {
11947 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_full_screen_exclusive");
11948 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
11949 }
11950 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
11951 {
11952 return (void*)dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT;
11953 }
11954 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
11955 {
11956 return (void*)dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT;
11957 }
11958 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
11959 {
11960 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT;
11961 }
11962#endif
11963#ifdef VK_EXT_headless_surface
11964 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
11965 {
11966 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_headless_surface");
11967 return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
11968 }
11969#endif
11970#ifdef VK_EXT_line_rasterization
11971 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
11972 {
11973 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_line_rasterization");
11974 return hasExt ? (void*)entry_vkCmdSetLineStippleEXT : nullptr;
11975 }
11976#endif
11977#ifdef VK_EXT_host_query_reset
11978 if (!strcmp(name, "vkResetQueryPoolEXT"))
11979 {
11980 return (void*)dynCheck_entry_vkResetQueryPoolEXT;
11981 }
11982#endif
11983#ifdef VK_EXT_extended_dynamic_state
11984 if (!strcmp(name, "vkCmdSetCullModeEXT"))
11985 {
11986 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11987 return hasExt ? (void*)entry_vkCmdSetCullModeEXT : nullptr;
11988 }
11989 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
11990 {
11991 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11992 return hasExt ? (void*)entry_vkCmdSetFrontFaceEXT : nullptr;
11993 }
11994 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
11995 {
11996 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
11997 return hasExt ? (void*)entry_vkCmdSetPrimitiveTopologyEXT : nullptr;
11998 }
11999 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
12000 {
12001 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12002 return hasExt ? (void*)entry_vkCmdSetViewportWithCountEXT : nullptr;
12003 }
12004 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
12005 {
12006 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12007 return hasExt ? (void*)entry_vkCmdSetScissorWithCountEXT : nullptr;
12008 }
12009 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
12010 {
12011 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12012 return hasExt ? (void*)entry_vkCmdBindVertexBuffers2EXT : nullptr;
12013 }
12014 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
12015 {
12016 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12017 return hasExt ? (void*)entry_vkCmdSetDepthTestEnableEXT : nullptr;
12018 }
12019 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
12020 {
12021 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12022 return hasExt ? (void*)entry_vkCmdSetDepthWriteEnableEXT : nullptr;
12023 }
12024 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
12025 {
12026 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12027 return hasExt ? (void*)entry_vkCmdSetDepthCompareOpEXT : nullptr;
12028 }
12029 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
12030 {
12031 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12032 return hasExt ? (void*)entry_vkCmdSetDepthBoundsTestEnableEXT : nullptr;
12033 }
12034 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
12035 {
12036 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12037 return hasExt ? (void*)entry_vkCmdSetStencilTestEnableEXT : nullptr;
12038 }
12039 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
12040 {
12041 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_extended_dynamic_state");
12042 return hasExt ? (void*)entry_vkCmdSetStencilOpEXT : nullptr;
12043 }
12044#endif
12045#ifdef VK_NV_device_generated_commands
12046 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
12047 {
12048 return (void*)dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV;
12049 }
12050 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
12051 {
12052 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
12053 return hasExt ? (void*)entry_vkCmdPreprocessGeneratedCommandsNV : nullptr;
12054 }
12055 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
12056 {
12057 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
12058 return hasExt ? (void*)entry_vkCmdExecuteGeneratedCommandsNV : nullptr;
12059 }
12060 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
12061 {
12062 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_generated_commands");
12063 return hasExt ? (void*)entry_vkCmdBindPipelineShaderGroupNV : nullptr;
12064 }
12065 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
12066 {
12067 return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNV;
12068 }
12069 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
12070 {
12071 return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNV;
12072 }
12073#endif
12074#ifdef VK_EXT_private_data
12075 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
12076 {
12077 return (void*)dynCheck_entry_vkCreatePrivateDataSlotEXT;
12078 }
12079 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
12080 {
12081 return (void*)dynCheck_entry_vkDestroyPrivateDataSlotEXT;
12082 }
12083 if (!strcmp(name, "vkSetPrivateDataEXT"))
12084 {
12085 return (void*)dynCheck_entry_vkSetPrivateDataEXT;
12086 }
12087 if (!strcmp(name, "vkGetPrivateDataEXT"))
12088 {
12089 return (void*)dynCheck_entry_vkGetPrivateDataEXT;
12090 }
12091#endif
12092#ifdef VK_NV_fragment_shading_rate_enums
12093 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
12094 {
12095 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_fragment_shading_rate_enums");
12096 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateEnumNV : nullptr;
12097 }
12098#endif
12099#ifdef VK_EXT_directfb_surface
12100 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
12101 {
12102 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
12103 return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
12104 }
12105 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
12106 {
12107 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
12108 return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
12109 }
12110#endif
Yilong Li71c43c52021-02-10 02:50:43 -080012111#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -070012112 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
12113 {
12114 return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
12115 }
12116 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
12117 {
12118 return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
12119 }
Yilong Lia8d45f12021-02-07 02:30:21 -080012120 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
12121 {
12122 return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
12123 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070012124 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
12125 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012126 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070012127 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012128 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
12129 {
Yilong Li71c43c52021-02-10 02:50:43 -080012130 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012131 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
12132 }
12133 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
12134 {
Yilong Li71c43c52021-02-10 02:50:43 -080012135 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012136 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
12137 }
12138 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
12139 {
Yilong Li71c43c52021-02-10 02:50:43 -080012140 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070012141 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
12142 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070012143 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
12144 {
Yilong Li71c43c52021-02-10 02:50:43 -080012145 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yang39a276e2019-06-17 13:27:22 -070012146 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
12147 }
Lingfeng Yang87f11962019-06-27 16:28:53 +000012148 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
12149 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012150 return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +000012151 }
12152 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
12153 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070012154 return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +000012155 }
Lingfeng Yang4c542412020-02-04 18:18:32 -080012156 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
12157 {
12158 return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE;
12159 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070012160 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
12161 {
12162 return (void*)dynCheck_entry_vkFreeMemorySyncGOOGLE;
12163 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012164 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
12165 {
Yilong Li71c43c52021-02-10 02:50:43 -080012166 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012167 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
12168 }
12169 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
12170 {
Yilong Li71c43c52021-02-10 02:50:43 -080012171 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012172 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
12173 }
12174 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
12175 {
Yilong Li71c43c52021-02-10 02:50:43 -080012176 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012177 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
12178 }
12179 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
12180 {
Yilong Li71c43c52021-02-10 02:50:43 -080012181 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070012182 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
12183 }
Yilong Lia48b0102020-09-15 15:08:28 -070012184 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
12185 {
12186 return (void*)dynCheck_entry_vkGetLinearImageLayoutGOOGLE;
12187 }
Lingfeng Yangded34672021-01-22 23:17:47 -080012188 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
12189 {
Yilong Li71c43c52021-02-10 02:50:43 -080012190 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangded34672021-01-22 23:17:47 -080012191 return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
12192 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080012193 if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
12194 {
12195 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
12196 return hasExt ? (void*)entry_vkQueueCommitDescriptorSetUpdatesGOOGLE : nullptr;
12197 }
12198 if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
12199 {
12200 return (void*)dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE;
12201 }
Lingfeng Yang5678e1e2021-07-15 12:28:05 -070012202 if (!strcmp(name, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE"))
12203 {
12204 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
12205 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE : nullptr;
12206 }
Lingfeng Yangded34672021-01-22 23:17:47 -080012207#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012208#ifdef VK_KHR_acceleration_structure
12209 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
12210 {
12211 return (void*)dynCheck_entry_vkCreateAccelerationStructureKHR;
12212 }
12213 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
12214 {
12215 return (void*)dynCheck_entry_vkDestroyAccelerationStructureKHR;
12216 }
12217 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
12218 {
12219 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12220 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresKHR : nullptr;
12221 }
12222 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
12223 {
12224 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12225 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresIndirectKHR : nullptr;
12226 }
12227 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
12228 {
12229 return (void*)dynCheck_entry_vkBuildAccelerationStructuresKHR;
12230 }
12231 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
12232 {
12233 return (void*)dynCheck_entry_vkCopyAccelerationStructureKHR;
12234 }
12235 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
12236 {
12237 return (void*)dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR;
12238 }
12239 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
12240 {
12241 return (void*)dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR;
12242 }
12243 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
12244 {
12245 return (void*)dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR;
12246 }
12247 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
12248 {
12249 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12250 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureKHR : nullptr;
12251 }
12252 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
12253 {
12254 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12255 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureToMemoryKHR : nullptr;
12256 }
12257 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
12258 {
12259 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12260 return hasExt ? (void*)entry_vkCmdCopyMemoryToAccelerationStructureKHR : nullptr;
12261 }
12262 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
12263 {
12264 return (void*)dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR;
12265 }
12266 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
12267 {
12268 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_acceleration_structure");
12269 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesKHR : nullptr;
12270 }
12271 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
12272 {
12273 return (void*)dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR;
12274 }
12275 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
12276 {
12277 return (void*)dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR;
12278 }
12279#endif
12280#ifdef VK_KHR_ray_tracing_pipeline
12281 if (!strcmp(name, "vkCmdTraceRaysKHR"))
12282 {
12283 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
12284 return hasExt ? (void*)entry_vkCmdTraceRaysKHR : nullptr;
12285 }
12286 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
12287 {
12288 return (void*)dynCheck_entry_vkCreateRayTracingPipelinesKHR;
12289 }
12290 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
12291 {
12292 return (void*)dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR;
12293 }
12294 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
12295 {
12296 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
12297 return hasExt ? (void*)entry_vkCmdTraceRaysIndirectKHR : nullptr;
12298 }
12299 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
12300 {
12301 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR;
12302 }
12303 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
12304 {
12305 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_ray_tracing_pipeline");
12306 return hasExt ? (void*)entry_vkCmdSetRayTracingPipelineStackSizeKHR : nullptr;
12307 }
12308#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012309 return nullptr;
12310}
12311void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
12312 auto resources = ResourceTracker::get();
12313 bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
12314#ifdef VK_VERSION_1_0
12315 if (!strcmp(name, "vkCreateInstance"))
12316 {
12317 return (void*)entry_vkCreateInstance;
12318 }
12319 if (!strcmp(name, "vkDestroyInstance"))
12320 {
12321 return (void*)entry_vkDestroyInstance;
12322 }
12323 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
12324 {
12325 return (void*)entry_vkEnumeratePhysicalDevices;
12326 }
12327 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
12328 {
12329 return (void*)entry_vkGetPhysicalDeviceFeatures;
12330 }
12331 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
12332 {
12333 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
12334 }
12335 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
12336 {
12337 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
12338 }
12339 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
12340 {
12341 return (void*)entry_vkGetPhysicalDeviceProperties;
12342 }
12343 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
12344 {
12345 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
12346 }
12347 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
12348 {
12349 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
12350 }
12351 if (!strcmp(name, "vkGetInstanceProcAddr"))
12352 {
12353 return (void*)entry_vkGetInstanceProcAddr;
12354 }
12355 if (!strcmp(name, "vkGetDeviceProcAddr"))
12356 {
12357 return (void*)entry_vkGetDeviceProcAddr;
12358 }
12359 if (!strcmp(name, "vkCreateDevice"))
12360 {
12361 return (void*)entry_vkCreateDevice;
12362 }
12363 if (!strcmp(name, "vkDestroyDevice"))
12364 {
12365 return (void*)entry_vkDestroyDevice;
12366 }
12367 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
12368 {
12369 return (void*)entry_vkEnumerateInstanceExtensionProperties;
12370 }
12371 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
12372 {
12373 return (void*)entry_vkEnumerateDeviceExtensionProperties;
12374 }
12375 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
12376 {
12377 return (void*)entry_vkEnumerateInstanceLayerProperties;
12378 }
12379 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
12380 {
12381 return (void*)entry_vkEnumerateDeviceLayerProperties;
12382 }
12383 if (!strcmp(name, "vkGetDeviceQueue"))
12384 {
12385 return (void*)entry_vkGetDeviceQueue;
12386 }
12387 if (!strcmp(name, "vkQueueSubmit"))
12388 {
12389 return (void*)entry_vkQueueSubmit;
12390 }
12391 if (!strcmp(name, "vkQueueWaitIdle"))
12392 {
12393 return (void*)entry_vkQueueWaitIdle;
12394 }
12395 if (!strcmp(name, "vkDeviceWaitIdle"))
12396 {
12397 return (void*)entry_vkDeviceWaitIdle;
12398 }
12399 if (!strcmp(name, "vkAllocateMemory"))
12400 {
12401 return (void*)entry_vkAllocateMemory;
12402 }
12403 if (!strcmp(name, "vkFreeMemory"))
12404 {
12405 return (void*)entry_vkFreeMemory;
12406 }
12407 if (!strcmp(name, "vkMapMemory"))
12408 {
12409 return (void*)entry_vkMapMemory;
12410 }
12411 if (!strcmp(name, "vkUnmapMemory"))
12412 {
12413 return (void*)entry_vkUnmapMemory;
12414 }
12415 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
12416 {
12417 return (void*)entry_vkFlushMappedMemoryRanges;
12418 }
12419 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
12420 {
12421 return (void*)entry_vkInvalidateMappedMemoryRanges;
12422 }
12423 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
12424 {
12425 return (void*)entry_vkGetDeviceMemoryCommitment;
12426 }
12427 if (!strcmp(name, "vkBindBufferMemory"))
12428 {
12429 return (void*)entry_vkBindBufferMemory;
12430 }
12431 if (!strcmp(name, "vkBindImageMemory"))
12432 {
12433 return (void*)entry_vkBindImageMemory;
12434 }
12435 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
12436 {
12437 return (void*)entry_vkGetBufferMemoryRequirements;
12438 }
12439 if (!strcmp(name, "vkGetImageMemoryRequirements"))
12440 {
12441 return (void*)entry_vkGetImageMemoryRequirements;
12442 }
12443 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
12444 {
12445 return (void*)entry_vkGetImageSparseMemoryRequirements;
12446 }
12447 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
12448 {
12449 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
12450 }
12451 if (!strcmp(name, "vkQueueBindSparse"))
12452 {
12453 return (void*)entry_vkQueueBindSparse;
12454 }
12455 if (!strcmp(name, "vkCreateFence"))
12456 {
12457 return (void*)entry_vkCreateFence;
12458 }
12459 if (!strcmp(name, "vkDestroyFence"))
12460 {
12461 return (void*)entry_vkDestroyFence;
12462 }
12463 if (!strcmp(name, "vkResetFences"))
12464 {
12465 return (void*)entry_vkResetFences;
12466 }
12467 if (!strcmp(name, "vkGetFenceStatus"))
12468 {
12469 return (void*)entry_vkGetFenceStatus;
12470 }
12471 if (!strcmp(name, "vkWaitForFences"))
12472 {
12473 return (void*)entry_vkWaitForFences;
12474 }
12475 if (!strcmp(name, "vkCreateSemaphore"))
12476 {
12477 return (void*)entry_vkCreateSemaphore;
12478 }
12479 if (!strcmp(name, "vkDestroySemaphore"))
12480 {
12481 return (void*)entry_vkDestroySemaphore;
12482 }
12483 if (!strcmp(name, "vkCreateEvent"))
12484 {
12485 return (void*)entry_vkCreateEvent;
12486 }
12487 if (!strcmp(name, "vkDestroyEvent"))
12488 {
12489 return (void*)entry_vkDestroyEvent;
12490 }
12491 if (!strcmp(name, "vkGetEventStatus"))
12492 {
12493 return (void*)entry_vkGetEventStatus;
12494 }
12495 if (!strcmp(name, "vkSetEvent"))
12496 {
12497 return (void*)entry_vkSetEvent;
12498 }
12499 if (!strcmp(name, "vkResetEvent"))
12500 {
12501 return (void*)entry_vkResetEvent;
12502 }
12503 if (!strcmp(name, "vkCreateQueryPool"))
12504 {
12505 return (void*)entry_vkCreateQueryPool;
12506 }
12507 if (!strcmp(name, "vkDestroyQueryPool"))
12508 {
12509 return (void*)entry_vkDestroyQueryPool;
12510 }
12511 if (!strcmp(name, "vkGetQueryPoolResults"))
12512 {
12513 return (void*)entry_vkGetQueryPoolResults;
12514 }
12515 if (!strcmp(name, "vkCreateBuffer"))
12516 {
12517 return (void*)entry_vkCreateBuffer;
12518 }
12519 if (!strcmp(name, "vkDestroyBuffer"))
12520 {
12521 return (void*)entry_vkDestroyBuffer;
12522 }
12523 if (!strcmp(name, "vkCreateBufferView"))
12524 {
12525 return (void*)entry_vkCreateBufferView;
12526 }
12527 if (!strcmp(name, "vkDestroyBufferView"))
12528 {
12529 return (void*)entry_vkDestroyBufferView;
12530 }
12531 if (!strcmp(name, "vkCreateImage"))
12532 {
12533 return (void*)entry_vkCreateImage;
12534 }
12535 if (!strcmp(name, "vkDestroyImage"))
12536 {
12537 return (void*)entry_vkDestroyImage;
12538 }
12539 if (!strcmp(name, "vkGetImageSubresourceLayout"))
12540 {
12541 return (void*)entry_vkGetImageSubresourceLayout;
12542 }
12543 if (!strcmp(name, "vkCreateImageView"))
12544 {
12545 return (void*)entry_vkCreateImageView;
12546 }
12547 if (!strcmp(name, "vkDestroyImageView"))
12548 {
12549 return (void*)entry_vkDestroyImageView;
12550 }
12551 if (!strcmp(name, "vkCreateShaderModule"))
12552 {
12553 return (void*)entry_vkCreateShaderModule;
12554 }
12555 if (!strcmp(name, "vkDestroyShaderModule"))
12556 {
12557 return (void*)entry_vkDestroyShaderModule;
12558 }
12559 if (!strcmp(name, "vkCreatePipelineCache"))
12560 {
12561 return (void*)entry_vkCreatePipelineCache;
12562 }
12563 if (!strcmp(name, "vkDestroyPipelineCache"))
12564 {
12565 return (void*)entry_vkDestroyPipelineCache;
12566 }
12567 if (!strcmp(name, "vkGetPipelineCacheData"))
12568 {
12569 return (void*)entry_vkGetPipelineCacheData;
12570 }
12571 if (!strcmp(name, "vkMergePipelineCaches"))
12572 {
12573 return (void*)entry_vkMergePipelineCaches;
12574 }
12575 if (!strcmp(name, "vkCreateGraphicsPipelines"))
12576 {
12577 return (void*)entry_vkCreateGraphicsPipelines;
12578 }
12579 if (!strcmp(name, "vkCreateComputePipelines"))
12580 {
12581 return (void*)entry_vkCreateComputePipelines;
12582 }
12583 if (!strcmp(name, "vkDestroyPipeline"))
12584 {
12585 return (void*)entry_vkDestroyPipeline;
12586 }
12587 if (!strcmp(name, "vkCreatePipelineLayout"))
12588 {
12589 return (void*)entry_vkCreatePipelineLayout;
12590 }
12591 if (!strcmp(name, "vkDestroyPipelineLayout"))
12592 {
12593 return (void*)entry_vkDestroyPipelineLayout;
12594 }
12595 if (!strcmp(name, "vkCreateSampler"))
12596 {
12597 return (void*)entry_vkCreateSampler;
12598 }
12599 if (!strcmp(name, "vkDestroySampler"))
12600 {
12601 return (void*)entry_vkDestroySampler;
12602 }
12603 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
12604 {
12605 return (void*)entry_vkCreateDescriptorSetLayout;
12606 }
12607 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
12608 {
12609 return (void*)entry_vkDestroyDescriptorSetLayout;
12610 }
12611 if (!strcmp(name, "vkCreateDescriptorPool"))
12612 {
12613 return (void*)entry_vkCreateDescriptorPool;
12614 }
12615 if (!strcmp(name, "vkDestroyDescriptorPool"))
12616 {
12617 return (void*)entry_vkDestroyDescriptorPool;
12618 }
12619 if (!strcmp(name, "vkResetDescriptorPool"))
12620 {
12621 return (void*)entry_vkResetDescriptorPool;
12622 }
12623 if (!strcmp(name, "vkAllocateDescriptorSets"))
12624 {
12625 return (void*)entry_vkAllocateDescriptorSets;
12626 }
12627 if (!strcmp(name, "vkFreeDescriptorSets"))
12628 {
12629 return (void*)entry_vkFreeDescriptorSets;
12630 }
12631 if (!strcmp(name, "vkUpdateDescriptorSets"))
12632 {
12633 return (void*)entry_vkUpdateDescriptorSets;
12634 }
12635 if (!strcmp(name, "vkCreateFramebuffer"))
12636 {
12637 return (void*)entry_vkCreateFramebuffer;
12638 }
12639 if (!strcmp(name, "vkDestroyFramebuffer"))
12640 {
12641 return (void*)entry_vkDestroyFramebuffer;
12642 }
12643 if (!strcmp(name, "vkCreateRenderPass"))
12644 {
12645 return (void*)entry_vkCreateRenderPass;
12646 }
12647 if (!strcmp(name, "vkDestroyRenderPass"))
12648 {
12649 return (void*)entry_vkDestroyRenderPass;
12650 }
12651 if (!strcmp(name, "vkGetRenderAreaGranularity"))
12652 {
12653 return (void*)entry_vkGetRenderAreaGranularity;
12654 }
12655 if (!strcmp(name, "vkCreateCommandPool"))
12656 {
12657 return (void*)entry_vkCreateCommandPool;
12658 }
12659 if (!strcmp(name, "vkDestroyCommandPool"))
12660 {
12661 return (void*)entry_vkDestroyCommandPool;
12662 }
12663 if (!strcmp(name, "vkResetCommandPool"))
12664 {
12665 return (void*)entry_vkResetCommandPool;
12666 }
12667 if (!strcmp(name, "vkAllocateCommandBuffers"))
12668 {
12669 return (void*)entry_vkAllocateCommandBuffers;
12670 }
12671 if (!strcmp(name, "vkFreeCommandBuffers"))
12672 {
12673 return (void*)entry_vkFreeCommandBuffers;
12674 }
12675 if (!strcmp(name, "vkBeginCommandBuffer"))
12676 {
12677 return (void*)entry_vkBeginCommandBuffer;
12678 }
12679 if (!strcmp(name, "vkEndCommandBuffer"))
12680 {
12681 return (void*)entry_vkEndCommandBuffer;
12682 }
12683 if (!strcmp(name, "vkResetCommandBuffer"))
12684 {
12685 return (void*)entry_vkResetCommandBuffer;
12686 }
12687 if (!strcmp(name, "vkCmdBindPipeline"))
12688 {
12689 return (void*)entry_vkCmdBindPipeline;
12690 }
12691 if (!strcmp(name, "vkCmdSetViewport"))
12692 {
12693 return (void*)entry_vkCmdSetViewport;
12694 }
12695 if (!strcmp(name, "vkCmdSetScissor"))
12696 {
12697 return (void*)entry_vkCmdSetScissor;
12698 }
12699 if (!strcmp(name, "vkCmdSetLineWidth"))
12700 {
12701 return (void*)entry_vkCmdSetLineWidth;
12702 }
12703 if (!strcmp(name, "vkCmdSetDepthBias"))
12704 {
12705 return (void*)entry_vkCmdSetDepthBias;
12706 }
12707 if (!strcmp(name, "vkCmdSetBlendConstants"))
12708 {
12709 return (void*)entry_vkCmdSetBlendConstants;
12710 }
12711 if (!strcmp(name, "vkCmdSetDepthBounds"))
12712 {
12713 return (void*)entry_vkCmdSetDepthBounds;
12714 }
12715 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
12716 {
12717 return (void*)entry_vkCmdSetStencilCompareMask;
12718 }
12719 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
12720 {
12721 return (void*)entry_vkCmdSetStencilWriteMask;
12722 }
12723 if (!strcmp(name, "vkCmdSetStencilReference"))
12724 {
12725 return (void*)entry_vkCmdSetStencilReference;
12726 }
12727 if (!strcmp(name, "vkCmdBindDescriptorSets"))
12728 {
12729 return (void*)entry_vkCmdBindDescriptorSets;
12730 }
12731 if (!strcmp(name, "vkCmdBindIndexBuffer"))
12732 {
12733 return (void*)entry_vkCmdBindIndexBuffer;
12734 }
12735 if (!strcmp(name, "vkCmdBindVertexBuffers"))
12736 {
12737 return (void*)entry_vkCmdBindVertexBuffers;
12738 }
12739 if (!strcmp(name, "vkCmdDraw"))
12740 {
12741 return (void*)entry_vkCmdDraw;
12742 }
12743 if (!strcmp(name, "vkCmdDrawIndexed"))
12744 {
12745 return (void*)entry_vkCmdDrawIndexed;
12746 }
12747 if (!strcmp(name, "vkCmdDrawIndirect"))
12748 {
12749 return (void*)entry_vkCmdDrawIndirect;
12750 }
12751 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
12752 {
12753 return (void*)entry_vkCmdDrawIndexedIndirect;
12754 }
12755 if (!strcmp(name, "vkCmdDispatch"))
12756 {
12757 return (void*)entry_vkCmdDispatch;
12758 }
12759 if (!strcmp(name, "vkCmdDispatchIndirect"))
12760 {
12761 return (void*)entry_vkCmdDispatchIndirect;
12762 }
12763 if (!strcmp(name, "vkCmdCopyBuffer"))
12764 {
12765 return (void*)entry_vkCmdCopyBuffer;
12766 }
12767 if (!strcmp(name, "vkCmdCopyImage"))
12768 {
12769 return (void*)entry_vkCmdCopyImage;
12770 }
12771 if (!strcmp(name, "vkCmdBlitImage"))
12772 {
12773 return (void*)entry_vkCmdBlitImage;
12774 }
12775 if (!strcmp(name, "vkCmdCopyBufferToImage"))
12776 {
12777 return (void*)entry_vkCmdCopyBufferToImage;
12778 }
12779 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
12780 {
12781 return (void*)entry_vkCmdCopyImageToBuffer;
12782 }
12783 if (!strcmp(name, "vkCmdUpdateBuffer"))
12784 {
12785 return (void*)entry_vkCmdUpdateBuffer;
12786 }
12787 if (!strcmp(name, "vkCmdFillBuffer"))
12788 {
12789 return (void*)entry_vkCmdFillBuffer;
12790 }
12791 if (!strcmp(name, "vkCmdClearColorImage"))
12792 {
12793 return (void*)entry_vkCmdClearColorImage;
12794 }
12795 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
12796 {
12797 return (void*)entry_vkCmdClearDepthStencilImage;
12798 }
12799 if (!strcmp(name, "vkCmdClearAttachments"))
12800 {
12801 return (void*)entry_vkCmdClearAttachments;
12802 }
12803 if (!strcmp(name, "vkCmdResolveImage"))
12804 {
12805 return (void*)entry_vkCmdResolveImage;
12806 }
12807 if (!strcmp(name, "vkCmdSetEvent"))
12808 {
12809 return (void*)entry_vkCmdSetEvent;
12810 }
12811 if (!strcmp(name, "vkCmdResetEvent"))
12812 {
12813 return (void*)entry_vkCmdResetEvent;
12814 }
12815 if (!strcmp(name, "vkCmdWaitEvents"))
12816 {
12817 return (void*)entry_vkCmdWaitEvents;
12818 }
12819 if (!strcmp(name, "vkCmdPipelineBarrier"))
12820 {
12821 return (void*)entry_vkCmdPipelineBarrier;
12822 }
12823 if (!strcmp(name, "vkCmdBeginQuery"))
12824 {
12825 return (void*)entry_vkCmdBeginQuery;
12826 }
12827 if (!strcmp(name, "vkCmdEndQuery"))
12828 {
12829 return (void*)entry_vkCmdEndQuery;
12830 }
12831 if (!strcmp(name, "vkCmdResetQueryPool"))
12832 {
12833 return (void*)entry_vkCmdResetQueryPool;
12834 }
12835 if (!strcmp(name, "vkCmdWriteTimestamp"))
12836 {
12837 return (void*)entry_vkCmdWriteTimestamp;
12838 }
12839 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
12840 {
12841 return (void*)entry_vkCmdCopyQueryPoolResults;
12842 }
12843 if (!strcmp(name, "vkCmdPushConstants"))
12844 {
12845 return (void*)entry_vkCmdPushConstants;
12846 }
12847 if (!strcmp(name, "vkCmdBeginRenderPass"))
12848 {
12849 return (void*)entry_vkCmdBeginRenderPass;
12850 }
12851 if (!strcmp(name, "vkCmdNextSubpass"))
12852 {
12853 return (void*)entry_vkCmdNextSubpass;
12854 }
12855 if (!strcmp(name, "vkCmdEndRenderPass"))
12856 {
12857 return (void*)entry_vkCmdEndRenderPass;
12858 }
12859 if (!strcmp(name, "vkCmdExecuteCommands"))
12860 {
12861 return (void*)entry_vkCmdExecuteCommands;
12862 }
12863#endif
12864#ifdef VK_VERSION_1_1
12865 if (!strcmp(name, "vkEnumerateInstanceVersion"))
12866 {
12867 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
12868 }
12869 if (!strcmp(name, "vkBindBufferMemory2"))
12870 {
12871 return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
12872 }
12873 if (!strcmp(name, "vkBindImageMemory2"))
12874 {
12875 return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
12876 }
12877 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
12878 {
12879 return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
12880 }
12881 if (!strcmp(name, "vkCmdSetDeviceMask"))
12882 {
12883 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
12884 }
12885 if (!strcmp(name, "vkCmdDispatchBase"))
12886 {
12887 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
12888 }
12889 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
12890 {
12891 return nullptr;
12892 }
12893 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
12894 {
12895 return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
12896 }
12897 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
12898 {
12899 return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
12900 }
12901 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
12902 {
12903 return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
12904 }
12905 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
12906 {
12907 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
12908 }
12909 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
12910 {
12911 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
12912 }
12913 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
12914 {
12915 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
12916 }
12917 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
12918 {
12919 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
12920 }
12921 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
12922 {
12923 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
12924 }
12925 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
12926 {
12927 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
12928 }
12929 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
12930 {
12931 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
12932 }
12933 if (!strcmp(name, "vkTrimCommandPool"))
12934 {
12935 return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
12936 }
12937 if (!strcmp(name, "vkGetDeviceQueue2"))
12938 {
12939 return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
12940 }
12941 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
12942 {
12943 return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
12944 }
12945 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
12946 {
12947 return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
12948 }
12949 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
12950 {
12951 return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
12952 }
12953 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
12954 {
12955 return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
12956 }
12957 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
12958 {
12959 return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
12960 }
12961 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
12962 {
12963 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
12964 }
12965 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
12966 {
12967 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
12968 }
12969 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
12970 {
12971 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
12972 }
12973 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
12974 {
12975 return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
12976 }
12977#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012978#ifdef VK_VERSION_1_2
12979 if (!strcmp(name, "vkCmdDrawIndirectCount"))
12980 {
12981 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12982 return hasExt ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
12983 }
12984 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
12985 {
12986 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12987 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
12988 }
12989 if (!strcmp(name, "vkCreateRenderPass2"))
12990 {
12991 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12992 return hasExt ? (void*)entry_vkCreateRenderPass2 : nullptr;
12993 }
12994 if (!strcmp(name, "vkCmdBeginRenderPass2"))
12995 {
12996 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
12997 return hasExt ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
12998 }
12999 if (!strcmp(name, "vkCmdNextSubpass2"))
13000 {
13001 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13002 return hasExt ? (void*)entry_vkCmdNextSubpass2 : nullptr;
13003 }
13004 if (!strcmp(name, "vkCmdEndRenderPass2"))
13005 {
13006 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13007 return hasExt ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
13008 }
13009 if (!strcmp(name, "vkResetQueryPool"))
13010 {
13011 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13012 return hasExt ? (void*)entry_vkResetQueryPool : nullptr;
13013 }
13014 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
13015 {
13016 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13017 return hasExt ? (void*)entry_vkGetSemaphoreCounterValue : nullptr;
13018 }
13019 if (!strcmp(name, "vkWaitSemaphores"))
13020 {
13021 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13022 return hasExt ? (void*)entry_vkWaitSemaphores : nullptr;
13023 }
13024 if (!strcmp(name, "vkSignalSemaphore"))
13025 {
13026 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13027 return hasExt ? (void*)entry_vkSignalSemaphore : nullptr;
13028 }
13029 if (!strcmp(name, "vkGetBufferDeviceAddress"))
13030 {
13031 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13032 return hasExt ? (void*)entry_vkGetBufferDeviceAddress : nullptr;
13033 }
13034 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
13035 {
13036 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13037 return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddress : nullptr;
13038 }
13039 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
13040 {
13041 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
13042 return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddress : nullptr;
13043 }
13044#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013045#ifdef VK_KHR_surface
13046 if (!strcmp(name, "vkDestroySurfaceKHR"))
13047 {
13048 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13049 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
13050 }
13051 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
13052 {
13053 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13054 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
13055 }
13056 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
13057 {
13058 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13059 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
13060 }
13061 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
13062 {
13063 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13064 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
13065 }
13066 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
13067 {
13068 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
13069 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
13070 }
13071#endif
13072#ifdef VK_KHR_swapchain
13073 if (!strcmp(name, "vkCreateSwapchainKHR"))
13074 {
13075 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13076 return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
13077 }
13078 if (!strcmp(name, "vkDestroySwapchainKHR"))
13079 {
13080 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13081 return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
13082 }
13083 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
13084 {
13085 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13086 return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
13087 }
13088 if (!strcmp(name, "vkAcquireNextImageKHR"))
13089 {
13090 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13091 return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
13092 }
13093 if (!strcmp(name, "vkQueuePresentKHR"))
13094 {
13095 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13096 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
13097 }
13098 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
13099 {
13100 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13101 return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
13102 }
13103 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
13104 {
13105 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13106 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
13107 }
13108 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
13109 {
13110 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13111 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
13112 }
13113 if (!strcmp(name, "vkAcquireNextImage2KHR"))
13114 {
13115 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
13116 return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
13117 }
13118#endif
13119#ifdef VK_KHR_display
13120 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
13121 {
13122 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13123 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
13124 }
13125 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
13126 {
13127 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13128 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
13129 }
13130 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
13131 {
13132 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13133 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
13134 }
13135 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
13136 {
13137 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13138 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
13139 }
13140 if (!strcmp(name, "vkCreateDisplayModeKHR"))
13141 {
13142 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13143 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
13144 }
13145 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
13146 {
13147 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13148 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
13149 }
13150 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
13151 {
13152 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
13153 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
13154 }
13155#endif
13156#ifdef VK_KHR_display_swapchain
13157 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
13158 {
13159 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
13160 return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
13161 }
13162#endif
13163#ifdef VK_KHR_xlib_surface
13164 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
13165 {
13166 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
13167 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
13168 }
13169 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
13170 {
13171 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
13172 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
13173 }
13174#endif
13175#ifdef VK_KHR_xcb_surface
13176 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
13177 {
13178 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
13179 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
13180 }
13181 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
13182 {
13183 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
13184 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
13185 }
13186#endif
13187#ifdef VK_KHR_wayland_surface
13188 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
13189 {
13190 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
13191 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
13192 }
13193 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
13194 {
13195 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
13196 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
13197 }
13198#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013199#ifdef VK_KHR_android_surface
13200 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
13201 {
13202 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
13203 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
13204 }
13205#endif
13206#ifdef VK_KHR_win32_surface
13207 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
13208 {
13209 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
13210 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
13211 }
13212 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
13213 {
13214 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
13215 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
13216 }
13217#endif
13218#ifdef VK_KHR_get_physical_device_properties2
13219 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
13220 {
13221 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13222 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
13223 }
13224 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
13225 {
13226 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13227 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
13228 }
13229 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
13230 {
13231 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13232 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
13233 }
13234 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
13235 {
13236 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13237 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
13238 }
13239 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
13240 {
13241 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13242 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
13243 }
13244 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
13245 {
13246 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13247 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
13248 }
13249 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
13250 {
13251 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
13252 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
13253 }
13254#endif
13255#ifdef VK_KHR_device_group
13256 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
13257 {
13258 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
13259 return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
13260 }
13261 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
13262 {
13263 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
13264 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
13265 }
13266 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
13267 {
13268 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
13269 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
13270 }
13271#endif
13272#ifdef VK_KHR_maintenance1
13273 if (!strcmp(name, "vkTrimCommandPoolKHR"))
13274 {
13275 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
13276 return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
13277 }
13278#endif
13279#ifdef VK_KHR_device_group_creation
13280 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
13281 {
13282 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
13283 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
13284 }
13285#endif
13286#ifdef VK_KHR_external_memory_capabilities
13287 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
13288 {
13289 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
13290 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
13291 }
13292#endif
13293#ifdef VK_KHR_external_memory_win32
13294 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
13295 {
13296 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
13297 return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
13298 }
13299 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
13300 {
13301 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
13302 return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
13303 }
13304#endif
13305#ifdef VK_KHR_external_memory_fd
13306 if (!strcmp(name, "vkGetMemoryFdKHR"))
13307 {
13308 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
13309 return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
13310 }
13311 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
13312 {
13313 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
13314 return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
13315 }
13316#endif
13317#ifdef VK_KHR_external_semaphore_capabilities
13318 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
13319 {
13320 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
13321 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
13322 }
13323#endif
13324#ifdef VK_KHR_external_semaphore_win32
13325 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
13326 {
13327 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
13328 return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
13329 }
13330 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
13331 {
13332 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
13333 return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
13334 }
13335#endif
13336#ifdef VK_KHR_external_semaphore_fd
13337 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
13338 {
13339 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
13340 return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
13341 }
13342 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
13343 {
13344 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
13345 return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
13346 }
13347#endif
13348#ifdef VK_KHR_push_descriptor
13349 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
13350 {
13351 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
13352 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
13353 }
13354 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
13355 {
13356 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
13357 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
13358 }
13359#endif
13360#ifdef VK_KHR_descriptor_update_template
13361 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
13362 {
13363 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
13364 return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
13365 }
13366 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
13367 {
13368 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
13369 return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
13370 }
13371 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
13372 {
13373 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
13374 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
13375 }
13376#endif
13377#ifdef VK_KHR_create_renderpass2
13378 if (!strcmp(name, "vkCreateRenderPass2KHR"))
13379 {
13380 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13381 return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
13382 }
13383 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
13384 {
13385 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13386 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
13387 }
13388 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
13389 {
13390 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13391 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
13392 }
13393 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
13394 {
13395 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
13396 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
13397 }
13398#endif
13399#ifdef VK_KHR_shared_presentable_image
13400 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
13401 {
13402 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
13403 return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
13404 }
13405#endif
13406#ifdef VK_KHR_external_fence_capabilities
13407 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
13408 {
13409 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
13410 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
13411 }
13412#endif
13413#ifdef VK_KHR_external_fence_win32
13414 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
13415 {
13416 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
13417 return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
13418 }
13419 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
13420 {
13421 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
13422 return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
13423 }
13424#endif
13425#ifdef VK_KHR_external_fence_fd
13426 if (!strcmp(name, "vkImportFenceFdKHR"))
13427 {
13428 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
13429 return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
13430 }
13431 if (!strcmp(name, "vkGetFenceFdKHR"))
13432 {
13433 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
13434 return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
13435 }
13436#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013437#ifdef VK_KHR_performance_query
13438 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
13439 {
13440 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13441 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
13442 }
13443 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
13444 {
13445 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13446 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
13447 }
13448 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
13449 {
13450 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13451 return hasExt ? (void*)entry_vkAcquireProfilingLockKHR : nullptr;
13452 }
13453 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
13454 {
13455 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
13456 return hasExt ? (void*)entry_vkReleaseProfilingLockKHR : nullptr;
13457 }
13458#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013459#ifdef VK_KHR_get_surface_capabilities2
13460 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
13461 {
13462 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
13463 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
13464 }
13465 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
13466 {
13467 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
13468 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
13469 }
13470#endif
13471#ifdef VK_KHR_get_display_properties2
13472 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
13473 {
13474 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13475 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
13476 }
13477 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
13478 {
13479 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13480 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
13481 }
13482 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
13483 {
13484 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13485 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
13486 }
13487 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
13488 {
13489 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
13490 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
13491 }
13492#endif
13493#ifdef VK_KHR_get_memory_requirements2
13494 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
13495 {
13496 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
13497 return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
13498 }
13499 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
13500 {
13501 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
13502 return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
13503 }
13504 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
13505 {
13506 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
13507 return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
13508 }
13509#endif
13510#ifdef VK_KHR_sampler_ycbcr_conversion
13511 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
13512 {
13513 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
13514 return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
13515 }
13516 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
13517 {
13518 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
13519 return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
13520 }
13521#endif
13522#ifdef VK_KHR_bind_memory2
13523 if (!strcmp(name, "vkBindBufferMemory2KHR"))
13524 {
13525 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
13526 return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
13527 }
13528 if (!strcmp(name, "vkBindImageMemory2KHR"))
13529 {
13530 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
13531 return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
13532 }
13533#endif
13534#ifdef VK_KHR_maintenance3
13535 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
13536 {
13537 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
13538 return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
13539 }
13540#endif
13541#ifdef VK_KHR_draw_indirect_count
13542 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
13543 {
13544 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
13545 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
13546 }
13547 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
13548 {
13549 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
13550 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
13551 }
13552#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013553#ifdef VK_KHR_timeline_semaphore
13554 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
13555 {
13556 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
13557 return hasExt ? (void*)entry_vkGetSemaphoreCounterValueKHR : nullptr;
13558 }
13559 if (!strcmp(name, "vkWaitSemaphoresKHR"))
13560 {
13561 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
13562 return hasExt ? (void*)entry_vkWaitSemaphoresKHR : nullptr;
13563 }
13564 if (!strcmp(name, "vkSignalSemaphoreKHR"))
13565 {
13566 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
13567 return hasExt ? (void*)entry_vkSignalSemaphoreKHR : nullptr;
13568 }
13569#endif
13570#ifdef VK_KHR_fragment_shading_rate
13571 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
13572 {
13573 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
13574 return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
13575 }
13576 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
13577 {
13578 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
13579 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateKHR : nullptr;
13580 }
13581#endif
13582#ifdef VK_KHR_buffer_device_address
13583 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
13584 {
13585 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
13586 return hasExt ? (void*)entry_vkGetBufferDeviceAddressKHR : nullptr;
13587 }
13588 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
13589 {
13590 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
13591 return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddressKHR : nullptr;
13592 }
13593 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
13594 {
13595 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
13596 return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR : nullptr;
13597 }
13598#endif
13599#ifdef VK_KHR_deferred_host_operations
13600 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
13601 {
13602 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13603 return hasExt ? (void*)entry_vkCreateDeferredOperationKHR : nullptr;
13604 }
13605 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
13606 {
13607 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13608 return hasExt ? (void*)entry_vkDestroyDeferredOperationKHR : nullptr;
13609 }
13610 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
13611 {
13612 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13613 return hasExt ? (void*)entry_vkGetDeferredOperationMaxConcurrencyKHR : nullptr;
13614 }
13615 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
13616 {
13617 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13618 return hasExt ? (void*)entry_vkGetDeferredOperationResultKHR : nullptr;
13619 }
13620 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
13621 {
13622 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
13623 return hasExt ? (void*)entry_vkDeferredOperationJoinKHR : nullptr;
13624 }
13625#endif
13626#ifdef VK_KHR_pipeline_executable_properties
13627 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
13628 {
13629 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
13630 return hasExt ? (void*)entry_vkGetPipelineExecutablePropertiesKHR : nullptr;
13631 }
13632 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
13633 {
13634 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
13635 return hasExt ? (void*)entry_vkGetPipelineExecutableStatisticsKHR : nullptr;
13636 }
13637 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
13638 {
13639 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
13640 return hasExt ? (void*)entry_vkGetPipelineExecutableInternalRepresentationsKHR : nullptr;
13641 }
13642#endif
13643#ifdef VK_KHR_copy_commands2
13644 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
13645 {
13646 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13647 return hasExt ? (void*)entry_vkCmdCopyBuffer2KHR : nullptr;
13648 }
13649 if (!strcmp(name, "vkCmdCopyImage2KHR"))
13650 {
13651 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13652 return hasExt ? (void*)entry_vkCmdCopyImage2KHR : nullptr;
13653 }
13654 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
13655 {
13656 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13657 return hasExt ? (void*)entry_vkCmdCopyBufferToImage2KHR : nullptr;
13658 }
13659 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
13660 {
13661 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13662 return hasExt ? (void*)entry_vkCmdCopyImageToBuffer2KHR : nullptr;
13663 }
13664 if (!strcmp(name, "vkCmdBlitImage2KHR"))
13665 {
13666 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13667 return hasExt ? (void*)entry_vkCmdBlitImage2KHR : nullptr;
13668 }
13669 if (!strcmp(name, "vkCmdResolveImage2KHR"))
13670 {
13671 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
13672 return hasExt ? (void*)entry_vkCmdResolveImage2KHR : nullptr;
13673 }
13674#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013675#ifdef VK_ANDROID_native_buffer
13676 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
13677 {
13678 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
13679 return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
13680 }
13681 if (!strcmp(name, "vkAcquireImageANDROID"))
13682 {
13683 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
13684 return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
13685 }
13686 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
13687 {
13688 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
13689 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
13690 }
13691#endif
13692#ifdef VK_EXT_debug_report
13693 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
13694 {
13695 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
13696 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
13697 }
13698 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
13699 {
13700 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
13701 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
13702 }
13703 if (!strcmp(name, "vkDebugReportMessageEXT"))
13704 {
13705 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
13706 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
13707 }
13708#endif
13709#ifdef VK_EXT_debug_marker
13710 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
13711 {
13712 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13713 return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
13714 }
13715 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
13716 {
13717 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13718 return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
13719 }
13720 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
13721 {
13722 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13723 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
13724 }
13725 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
13726 {
13727 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13728 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
13729 }
13730 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
13731 {
13732 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
13733 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
13734 }
13735#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013736#ifdef VK_EXT_transform_feedback
13737 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
13738 {
13739 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13740 return hasExt ? (void*)entry_vkCmdBindTransformFeedbackBuffersEXT : nullptr;
13741 }
13742 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
13743 {
13744 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13745 return hasExt ? (void*)entry_vkCmdBeginTransformFeedbackEXT : nullptr;
13746 }
13747 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
13748 {
13749 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13750 return hasExt ? (void*)entry_vkCmdEndTransformFeedbackEXT : nullptr;
13751 }
13752 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
13753 {
13754 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13755 return hasExt ? (void*)entry_vkCmdBeginQueryIndexedEXT : nullptr;
13756 }
13757 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
13758 {
13759 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13760 return hasExt ? (void*)entry_vkCmdEndQueryIndexedEXT : nullptr;
13761 }
13762 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
13763 {
13764 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
13765 return hasExt ? (void*)entry_vkCmdDrawIndirectByteCountEXT : nullptr;
13766 }
13767#endif
13768#ifdef VK_NVX_image_view_handle
13769 if (!strcmp(name, "vkGetImageViewHandleNVX"))
13770 {
13771 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
13772 return hasExt ? (void*)entry_vkGetImageViewHandleNVX : nullptr;
13773 }
13774 if (!strcmp(name, "vkGetImageViewAddressNVX"))
13775 {
13776 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
13777 return hasExt ? (void*)entry_vkGetImageViewAddressNVX : nullptr;
13778 }
13779#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013780#ifdef VK_AMD_draw_indirect_count
13781 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
13782 {
13783 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
13784 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
13785 }
13786 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
13787 {
13788 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
13789 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
13790 }
13791#endif
13792#ifdef VK_AMD_shader_info
13793 if (!strcmp(name, "vkGetShaderInfoAMD"))
13794 {
13795 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
13796 return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
13797 }
13798#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013799#ifdef VK_GGP_stream_descriptor_surface
13800 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
13801 {
13802 bool hasExt = resources->hasDeviceExtension(device, "VK_GGP_stream_descriptor_surface");
13803 return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
13804 }
13805#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013806#ifdef VK_NV_external_memory_capabilities
13807 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
13808 {
13809 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
13810 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
13811 }
13812#endif
13813#ifdef VK_NV_external_memory_win32
13814 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
13815 {
13816 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
13817 return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
13818 }
13819#endif
13820#ifdef VK_NN_vi_surface
13821 if (!strcmp(name, "vkCreateViSurfaceNN"))
13822 {
13823 bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
13824 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
13825 }
13826#endif
13827#ifdef VK_EXT_conditional_rendering
13828 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
13829 {
13830 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
13831 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
13832 }
13833 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
13834 {
13835 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
13836 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
13837 }
13838#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013839#ifdef VK_NV_clip_space_w_scaling
13840 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
13841 {
13842 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
13843 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
13844 }
13845#endif
13846#ifdef VK_EXT_direct_mode_display
13847 if (!strcmp(name, "vkReleaseDisplayEXT"))
13848 {
13849 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
13850 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
13851 }
13852#endif
13853#ifdef VK_EXT_acquire_xlib_display
13854 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
13855 {
13856 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
13857 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
13858 }
13859 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
13860 {
13861 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
13862 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
13863 }
13864#endif
13865#ifdef VK_EXT_display_surface_counter
13866 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
13867 {
13868 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
13869 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
13870 }
13871#endif
13872#ifdef VK_EXT_display_control
13873 if (!strcmp(name, "vkDisplayPowerControlEXT"))
13874 {
13875 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13876 return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
13877 }
13878 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
13879 {
13880 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13881 return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
13882 }
13883 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
13884 {
13885 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13886 return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
13887 }
13888 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
13889 {
13890 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
13891 return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
13892 }
13893#endif
13894#ifdef VK_GOOGLE_display_timing
13895 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
13896 {
13897 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
13898 return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
13899 }
13900 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
13901 {
13902 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
13903 return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
13904 }
13905#endif
13906#ifdef VK_EXT_discard_rectangles
13907 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
13908 {
13909 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
13910 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
13911 }
13912#endif
13913#ifdef VK_EXT_hdr_metadata
13914 if (!strcmp(name, "vkSetHdrMetadataEXT"))
13915 {
13916 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
13917 return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
13918 }
13919#endif
13920#ifdef VK_MVK_ios_surface
13921 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
13922 {
13923 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
13924 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
13925 }
13926#endif
13927#ifdef VK_MVK_macos_surface
13928 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
13929 {
13930 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
13931 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
13932 }
13933#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013934#ifdef VK_MVK_moltenvk
13935 if (!strcmp(name, "vkGetMTLDeviceMVK"))
13936 {
13937 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13938 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
13939 }
13940 if (!strcmp(name, "vkSetMTLTextureMVK"))
13941 {
13942 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13943 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
13944 }
13945 if (!strcmp(name, "vkGetMTLTextureMVK"))
13946 {
13947 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13948 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
13949 }
13950 if (!strcmp(name, "vkGetMTLBufferMVK"))
13951 {
13952 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13953 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
13954 }
13955 if (!strcmp(name, "vkUseIOSurfaceMVK"))
13956 {
13957 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13958 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
13959 }
13960 if (!strcmp(name, "vkGetIOSurfaceMVK"))
13961 {
13962 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
13963 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
13964 }
13965#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013966#ifdef VK_EXT_debug_utils
13967 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
13968 {
13969 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13970 return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
13971 }
13972 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
13973 {
13974 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13975 return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
13976 }
13977 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
13978 {
13979 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13980 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
13981 }
13982 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
13983 {
13984 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13985 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
13986 }
13987 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
13988 {
13989 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13990 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
13991 }
13992 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
13993 {
13994 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
13995 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
13996 }
13997 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
13998 {
13999 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
14000 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
14001 }
14002 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
14003 {
14004 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
14005 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
14006 }
14007 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
14008 {
14009 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
14010 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
14011 }
14012 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
14013 {
14014 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
14015 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
14016 }
14017 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
14018 {
14019 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
14020 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
14021 }
14022#endif
14023#ifdef VK_ANDROID_external_memory_android_hardware_buffer
14024 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
14025 {
14026 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
14027 return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
14028 }
14029 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
14030 {
14031 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
14032 return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
14033 }
14034#endif
14035#ifdef VK_EXT_sample_locations
14036 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
14037 {
14038 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
14039 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
14040 }
14041 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
14042 {
14043 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
14044 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
14045 }
14046#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014047#ifdef VK_EXT_image_drm_format_modifier
14048 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
14049 {
14050 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier");
14051 return hasExt ? (void*)entry_vkGetImageDrmFormatModifierPropertiesEXT : nullptr;
14052 }
14053#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014054#ifdef VK_EXT_validation_cache
14055 if (!strcmp(name, "vkCreateValidationCacheEXT"))
14056 {
14057 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14058 return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
14059 }
14060 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
14061 {
14062 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14063 return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
14064 }
14065 if (!strcmp(name, "vkMergeValidationCachesEXT"))
14066 {
14067 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14068 return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
14069 }
14070 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
14071 {
14072 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
14073 return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
14074 }
14075#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014076#ifdef VK_NV_shading_rate_image
14077 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
14078 {
14079 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
14080 return hasExt ? (void*)entry_vkCmdBindShadingRateImageNV : nullptr;
14081 }
14082 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
14083 {
14084 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
14085 return hasExt ? (void*)entry_vkCmdSetViewportShadingRatePaletteNV : nullptr;
14086 }
14087 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
14088 {
14089 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
14090 return hasExt ? (void*)entry_vkCmdSetCoarseSampleOrderNV : nullptr;
14091 }
14092#endif
14093#ifdef VK_NV_ray_tracing
14094 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
14095 {
14096 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14097 return hasExt ? (void*)entry_vkCreateAccelerationStructureNV : nullptr;
14098 }
14099 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
14100 {
14101 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14102 return hasExt ? (void*)entry_vkDestroyAccelerationStructureNV : nullptr;
14103 }
14104 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
14105 {
14106 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14107 return hasExt ? (void*)entry_vkGetAccelerationStructureMemoryRequirementsNV : nullptr;
14108 }
14109 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
14110 {
14111 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14112 return hasExt ? (void*)entry_vkBindAccelerationStructureMemoryNV : nullptr;
14113 }
14114 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
14115 {
14116 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14117 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructureNV : nullptr;
14118 }
14119 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
14120 {
14121 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14122 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureNV : nullptr;
14123 }
14124 if (!strcmp(name, "vkCmdTraceRaysNV"))
14125 {
14126 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14127 return hasExt ? (void*)entry_vkCmdTraceRaysNV : nullptr;
14128 }
14129 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
14130 {
14131 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14132 return hasExt ? (void*)entry_vkCreateRayTracingPipelinesNV : nullptr;
14133 }
14134 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
14135 {
14136 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14137 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesKHR : nullptr;
14138 }
14139 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
14140 {
14141 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14142 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesNV : nullptr;
14143 }
14144 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
14145 {
14146 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14147 return hasExt ? (void*)entry_vkGetAccelerationStructureHandleNV : nullptr;
14148 }
14149 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
14150 {
14151 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14152 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesNV : nullptr;
14153 }
14154 if (!strcmp(name, "vkCompileDeferredNV"))
14155 {
14156 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
14157 return hasExt ? (void*)entry_vkCompileDeferredNV : nullptr;
14158 }
14159#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014160#ifdef VK_EXT_external_memory_host
14161 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
14162 {
14163 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
14164 return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
14165 }
14166#endif
14167#ifdef VK_AMD_buffer_marker
14168 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
14169 {
14170 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
14171 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
14172 }
14173#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014174#ifdef VK_EXT_calibrated_timestamps
14175 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
14176 {
14177 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
14178 return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
14179 }
14180 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
14181 {
14182 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
14183 return hasExt ? (void*)entry_vkGetCalibratedTimestampsEXT : nullptr;
14184 }
14185#endif
14186#ifdef VK_NV_mesh_shader
14187 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
14188 {
14189 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
14190 return hasExt ? (void*)entry_vkCmdDrawMeshTasksNV : nullptr;
14191 }
14192 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
14193 {
14194 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
14195 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectNV : nullptr;
14196 }
14197 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
14198 {
14199 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
14200 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountNV : nullptr;
14201 }
14202#endif
14203#ifdef VK_NV_scissor_exclusive
14204 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
14205 {
14206 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_scissor_exclusive");
14207 return hasExt ? (void*)entry_vkCmdSetExclusiveScissorNV : nullptr;
14208 }
14209#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014210#ifdef VK_NV_device_diagnostic_checkpoints
14211 if (!strcmp(name, "vkCmdSetCheckpointNV"))
14212 {
14213 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
14214 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
14215 }
14216 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
14217 {
14218 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
14219 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
14220 }
14221#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014222#ifdef VK_INTEL_performance_query
14223 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014224 {
Yilong Lia8d45f12021-02-07 02:30:21 -080014225 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14226 return hasExt ? (void*)entry_vkInitializePerformanceApiINTEL : nullptr;
14227 }
14228 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
14229 {
14230 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14231 return hasExt ? (void*)entry_vkUninitializePerformanceApiINTEL : nullptr;
14232 }
14233 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
14234 {
14235 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14236 return hasExt ? (void*)entry_vkCmdSetPerformanceMarkerINTEL : nullptr;
14237 }
14238 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
14239 {
14240 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14241 return hasExt ? (void*)entry_vkCmdSetPerformanceStreamMarkerINTEL : nullptr;
14242 }
14243 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
14244 {
14245 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14246 return hasExt ? (void*)entry_vkCmdSetPerformanceOverrideINTEL : nullptr;
14247 }
14248 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
14249 {
14250 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14251 return hasExt ? (void*)entry_vkAcquirePerformanceConfigurationINTEL : nullptr;
14252 }
14253 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
14254 {
14255 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14256 return hasExt ? (void*)entry_vkReleasePerformanceConfigurationINTEL : nullptr;
14257 }
14258 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
14259 {
14260 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14261 return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
14262 }
14263 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
14264 {
14265 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
14266 return hasExt ? (void*)entry_vkGetPerformanceParameterINTEL : nullptr;
14267 }
14268#endif
14269#ifdef VK_AMD_display_native_hdr
14270 if (!strcmp(name, "vkSetLocalDimmingAMD"))
14271 {
14272 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr");
14273 return hasExt ? (void*)entry_vkSetLocalDimmingAMD : nullptr;
14274 }
14275#endif
14276#ifdef VK_FUCHSIA_imagepipe_surface
14277 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
14278 {
14279 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_imagepipe_surface");
14280 return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
14281 }
14282#endif
14283#ifdef VK_EXT_metal_surface
14284 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
14285 {
14286 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_metal_surface");
14287 return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080014288 }
14289#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014290#ifdef VK_EXT_buffer_device_address
14291 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
14292 {
14293 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address");
14294 return hasExt ? (void*)entry_vkGetBufferDeviceAddressEXT : nullptr;
14295 }
14296#endif
14297#ifdef VK_EXT_tooling_info
14298 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
14299 {
14300 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_tooling_info");
14301 return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
14302 }
14303#endif
14304#ifdef VK_NV_cooperative_matrix
14305 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
14306 {
14307 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_cooperative_matrix");
14308 return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
14309 }
14310#endif
14311#ifdef VK_NV_coverage_reduction_mode
14312 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
14313 {
14314 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_coverage_reduction_mode");
14315 return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
14316 }
14317#endif
14318#ifdef VK_EXT_full_screen_exclusive
14319 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
14320 {
14321 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14322 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
14323 }
14324 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
14325 {
14326 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14327 return hasExt ? (void*)entry_vkAcquireFullScreenExclusiveModeEXT : nullptr;
14328 }
14329 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
14330 {
14331 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14332 return hasExt ? (void*)entry_vkReleaseFullScreenExclusiveModeEXT : nullptr;
14333 }
14334 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
14335 {
14336 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
14337 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModes2EXT : nullptr;
14338 }
14339#endif
14340#ifdef VK_EXT_headless_surface
14341 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
14342 {
14343 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_headless_surface");
14344 return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
14345 }
14346#endif
14347#ifdef VK_EXT_line_rasterization
14348 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
14349 {
14350 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_line_rasterization");
14351 return hasExt ? (void*)entry_vkCmdSetLineStippleEXT : nullptr;
14352 }
14353#endif
14354#ifdef VK_EXT_host_query_reset
14355 if (!strcmp(name, "vkResetQueryPoolEXT"))
14356 {
14357 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_host_query_reset");
14358 return hasExt ? (void*)entry_vkResetQueryPoolEXT : nullptr;
14359 }
14360#endif
14361#ifdef VK_EXT_extended_dynamic_state
14362 if (!strcmp(name, "vkCmdSetCullModeEXT"))
14363 {
14364 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14365 return hasExt ? (void*)entry_vkCmdSetCullModeEXT : nullptr;
14366 }
14367 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
14368 {
14369 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14370 return hasExt ? (void*)entry_vkCmdSetFrontFaceEXT : nullptr;
14371 }
14372 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
14373 {
14374 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14375 return hasExt ? (void*)entry_vkCmdSetPrimitiveTopologyEXT : nullptr;
14376 }
14377 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
14378 {
14379 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14380 return hasExt ? (void*)entry_vkCmdSetViewportWithCountEXT : nullptr;
14381 }
14382 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
14383 {
14384 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14385 return hasExt ? (void*)entry_vkCmdSetScissorWithCountEXT : nullptr;
14386 }
14387 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
14388 {
14389 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14390 return hasExt ? (void*)entry_vkCmdBindVertexBuffers2EXT : nullptr;
14391 }
14392 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
14393 {
14394 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14395 return hasExt ? (void*)entry_vkCmdSetDepthTestEnableEXT : nullptr;
14396 }
14397 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
14398 {
14399 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14400 return hasExt ? (void*)entry_vkCmdSetDepthWriteEnableEXT : nullptr;
14401 }
14402 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
14403 {
14404 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14405 return hasExt ? (void*)entry_vkCmdSetDepthCompareOpEXT : nullptr;
14406 }
14407 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
14408 {
14409 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14410 return hasExt ? (void*)entry_vkCmdSetDepthBoundsTestEnableEXT : nullptr;
14411 }
14412 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
14413 {
14414 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14415 return hasExt ? (void*)entry_vkCmdSetStencilTestEnableEXT : nullptr;
14416 }
14417 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
14418 {
14419 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
14420 return hasExt ? (void*)entry_vkCmdSetStencilOpEXT : nullptr;
14421 }
14422#endif
14423#ifdef VK_NV_device_generated_commands
14424 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
14425 {
14426 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14427 return hasExt ? (void*)entry_vkGetGeneratedCommandsMemoryRequirementsNV : nullptr;
14428 }
14429 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
14430 {
14431 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14432 return hasExt ? (void*)entry_vkCmdPreprocessGeneratedCommandsNV : nullptr;
14433 }
14434 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
14435 {
14436 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14437 return hasExt ? (void*)entry_vkCmdExecuteGeneratedCommandsNV : nullptr;
14438 }
14439 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
14440 {
14441 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14442 return hasExt ? (void*)entry_vkCmdBindPipelineShaderGroupNV : nullptr;
14443 }
14444 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
14445 {
14446 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14447 return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNV : nullptr;
14448 }
14449 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
14450 {
14451 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
14452 return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNV : nullptr;
14453 }
14454#endif
14455#ifdef VK_EXT_private_data
14456 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
14457 {
14458 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14459 return hasExt ? (void*)entry_vkCreatePrivateDataSlotEXT : nullptr;
14460 }
14461 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
14462 {
14463 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14464 return hasExt ? (void*)entry_vkDestroyPrivateDataSlotEXT : nullptr;
14465 }
14466 if (!strcmp(name, "vkSetPrivateDataEXT"))
14467 {
14468 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14469 return hasExt ? (void*)entry_vkSetPrivateDataEXT : nullptr;
14470 }
14471 if (!strcmp(name, "vkGetPrivateDataEXT"))
14472 {
14473 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
14474 return hasExt ? (void*)entry_vkGetPrivateDataEXT : nullptr;
14475 }
14476#endif
14477#ifdef VK_NV_fragment_shading_rate_enums
14478 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
14479 {
14480 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_fragment_shading_rate_enums");
14481 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateEnumNV : nullptr;
14482 }
14483#endif
14484#ifdef VK_EXT_directfb_surface
14485 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
14486 {
14487 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
14488 return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
14489 }
14490 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
14491 {
14492 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
14493 return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
14494 }
14495#endif
Yilong Li71c43c52021-02-10 02:50:43 -080014496#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -070014497 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
14498 {
14499 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14500 return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
14501 }
14502 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
14503 {
14504 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14505 return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
14506 }
Yilong Lia8d45f12021-02-07 02:30:21 -080014507 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
14508 {
Yilong Li71c43c52021-02-10 02:50:43 -080014509 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Yilong Lia8d45f12021-02-07 02:30:21 -080014510 return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
14511 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070014512 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
14513 {
Yilong Li71c43c52021-02-10 02:50:43 -080014514 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070014515 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
14516 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014517 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
14518 {
Yilong Li71c43c52021-02-10 02:50:43 -080014519 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014520 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
14521 }
14522 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
14523 {
Yilong Li71c43c52021-02-10 02:50:43 -080014524 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014525 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
14526 }
14527 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
14528 {
Yilong Li71c43c52021-02-10 02:50:43 -080014529 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070014530 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
14531 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070014532 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
14533 {
Yilong Li71c43c52021-02-10 02:50:43 -080014534 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang39a276e2019-06-17 13:27:22 -070014535 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
14536 }
Lingfeng Yang87f11962019-06-27 16:28:53 +000014537 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
14538 {
Yilong Li71c43c52021-02-10 02:50:43 -080014539 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang87f11962019-06-27 16:28:53 +000014540 return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
14541 }
14542 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
14543 {
Yilong Li71c43c52021-02-10 02:50:43 -080014544 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang87f11962019-06-27 16:28:53 +000014545 return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
14546 }
Lingfeng Yang4c542412020-02-04 18:18:32 -080014547 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
14548 {
Yilong Li71c43c52021-02-10 02:50:43 -080014549 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang4c542412020-02-04 18:18:32 -080014550 return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
14551 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070014552 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
14553 {
Yilong Li71c43c52021-02-10 02:50:43 -080014554 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070014555 return hasExt ? (void*)entry_vkFreeMemorySyncGOOGLE : nullptr;
14556 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014557 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
14558 {
Yilong Li71c43c52021-02-10 02:50:43 -080014559 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014560 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
14561 }
14562 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
14563 {
Yilong Li71c43c52021-02-10 02:50:43 -080014564 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014565 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
14566 }
14567 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
14568 {
Yilong Li71c43c52021-02-10 02:50:43 -080014569 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014570 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
14571 }
14572 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
14573 {
Yilong Li71c43c52021-02-10 02:50:43 -080014574 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070014575 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
14576 }
Yilong Lia48b0102020-09-15 15:08:28 -070014577 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
14578 {
Yilong Li71c43c52021-02-10 02:50:43 -080014579 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Yilong Lia48b0102020-09-15 15:08:28 -070014580 return hasExt ? (void*)entry_vkGetLinearImageLayoutGOOGLE : nullptr;
14581 }
Lingfeng Yangded34672021-01-22 23:17:47 -080014582 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
14583 {
Yilong Li71c43c52021-02-10 02:50:43 -080014584 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangded34672021-01-22 23:17:47 -080014585 return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
14586 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080014587 if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
14588 {
14589 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14590 return hasExt ? (void*)entry_vkQueueCommitDescriptorSetUpdatesGOOGLE : nullptr;
14591 }
14592 if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
14593 {
14594 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14595 return hasExt ? (void*)entry_vkCollectDescriptorPoolIdsGOOGLE : nullptr;
14596 }
Lingfeng Yang5678e1e2021-07-15 12:28:05 -070014597 if (!strcmp(name, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE"))
14598 {
14599 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
14600 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE : nullptr;
14601 }
Lingfeng Yangded34672021-01-22 23:17:47 -080014602#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014603#ifdef VK_KHR_acceleration_structure
14604 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
14605 {
14606 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14607 return hasExt ? (void*)entry_vkCreateAccelerationStructureKHR : nullptr;
14608 }
14609 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
14610 {
14611 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14612 return hasExt ? (void*)entry_vkDestroyAccelerationStructureKHR : nullptr;
14613 }
14614 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
14615 {
14616 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14617 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresKHR : nullptr;
14618 }
14619 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
14620 {
14621 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14622 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresIndirectKHR : nullptr;
14623 }
14624 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
14625 {
14626 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14627 return hasExt ? (void*)entry_vkBuildAccelerationStructuresKHR : nullptr;
14628 }
14629 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
14630 {
14631 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14632 return hasExt ? (void*)entry_vkCopyAccelerationStructureKHR : nullptr;
14633 }
14634 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
14635 {
14636 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14637 return hasExt ? (void*)entry_vkCopyAccelerationStructureToMemoryKHR : nullptr;
14638 }
14639 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
14640 {
14641 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14642 return hasExt ? (void*)entry_vkCopyMemoryToAccelerationStructureKHR : nullptr;
14643 }
14644 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
14645 {
14646 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14647 return hasExt ? (void*)entry_vkWriteAccelerationStructuresPropertiesKHR : nullptr;
14648 }
14649 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
14650 {
14651 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14652 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureKHR : nullptr;
14653 }
14654 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
14655 {
14656 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14657 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureToMemoryKHR : nullptr;
14658 }
14659 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
14660 {
14661 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14662 return hasExt ? (void*)entry_vkCmdCopyMemoryToAccelerationStructureKHR : nullptr;
14663 }
14664 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
14665 {
14666 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14667 return hasExt ? (void*)entry_vkGetAccelerationStructureDeviceAddressKHR : nullptr;
14668 }
14669 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
14670 {
14671 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14672 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesKHR : nullptr;
14673 }
14674 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
14675 {
14676 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14677 return hasExt ? (void*)entry_vkGetDeviceAccelerationStructureCompatibilityKHR : nullptr;
14678 }
14679 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
14680 {
14681 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
14682 return hasExt ? (void*)entry_vkGetAccelerationStructureBuildSizesKHR : nullptr;
14683 }
14684#endif
14685#ifdef VK_KHR_ray_tracing_pipeline
14686 if (!strcmp(name, "vkCmdTraceRaysKHR"))
14687 {
14688 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14689 return hasExt ? (void*)entry_vkCmdTraceRaysKHR : nullptr;
14690 }
14691 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
14692 {
14693 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14694 return hasExt ? (void*)entry_vkCreateRayTracingPipelinesKHR : nullptr;
14695 }
14696 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
14697 {
14698 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14699 return hasExt ? (void*)entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR : nullptr;
14700 }
14701 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
14702 {
14703 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14704 return hasExt ? (void*)entry_vkCmdTraceRaysIndirectKHR : nullptr;
14705 }
14706 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
14707 {
14708 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14709 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupStackSizeKHR : nullptr;
14710 }
14711 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
14712 {
14713 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
14714 return hasExt ? (void*)entry_vkCmdSetRayTracingPipelineStackSizeKHR : nullptr;
14715 }
14716#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080014717 return nullptr;
14718}
14719
14720} // namespace goldfish_vk