blob: 4e17d42e9a8c8b5a0cbd06e941a0a475ccffdce9 [file] [log] [blame]
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001// Copyright (C) 2018 The Android Open Source Project
2// Copyright (C) 2018 Google Inc.
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16// Autogenerated module func_table
Yahan Zhoub851b7e2022-04-13 10:46:34 -070017// (impl) generated by registry/vulkan/scripts/genvk.py -registry registry/vulkan/xml/vk.xml cereal -o ../qemu/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
Lingfeng Yang0b81df22018-11-05 21:40:30 -080018// Please do not modify directly;
Yahan Zhoub851b7e2022-04-13 10:46:34 -070019// re-run gfxstream-protocols/scripts/generate-vulkan-sources.sh,
Lingfeng Yang0b81df22018-11-05 21:40:30 -080020// or directly from Python by defining:
Yahan Zhoub851b7e2022-04-13 10:46:34 -070021// VULKAN_REGISTRY_XML_DIR : Directory containing vk.xml
22// VULKAN_REGISTRY_SCRIPTS_DIR : Directory containing genvk.py
Lingfeng Yang0b81df22018-11-05 21:40:30 -080023// CEREAL_OUTPUT_DIR: Where to put the generated sources.
Yahan Zhoub851b7e2022-04-13 10:46:34 -070024// python3 $VULKAN_REGISTRY_SCRIPTS_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
Lingfeng Yang0b81df22018-11-05 21:40:30 -080025
26#include "func_table.h"
27
28
29#include "VkEncoder.h"
Lingfeng Yang239cd602021-01-22 22:57:35 -080030#include "../OpenglSystemCommon/HostConnection.h"
Lingfeng Yange9979522018-12-25 14:44:52 -080031#include "ResourceTracker.h"
Lingfeng Yang0b81df22018-11-05 21:40:30 -080032
Lingfeng Yang808a6312018-11-13 21:06:15 -080033#include "goldfish_vk_private_defs.h"
34
Lingfeng Yang2f51a332019-10-30 09:25:25 -070035#include <log/log.h>
Gurchetan Singha1292d92021-10-22 16:02:25 -070036#include <cstring>
Lingfeng Yang2f51a332019-10-30 09:25:25 -070037
Lingfeng Yang0b81df22018-11-05 21:40:30 -080038// Stuff we are not going to use but if included,
39// will cause compile errors. These are Android Vulkan
40// required extensions, but the approach will be to
41// implement them completely on the guest side.
42#undef VK_KHR_android_surface
Lingfeng Yang0b81df22018-11-05 21:40:30 -080043
44
45namespace goldfish_vk {
46
Lingfeng Yang2f51a332019-10-30 09:25:25 -070047static void sOnInvalidDynamicallyCheckedCall(const char* apiname, const char* neededFeature)
48{
49 ALOGE("invalid call to %s: %s not supported", apiname, neededFeature);
50 abort();
51}
Lingfeng Yang0b81df22018-11-05 21:40:30 -080052#ifdef VK_VERSION_1_0
53static VkResult entry_vkCreateInstance(
54 const VkInstanceCreateInfo* pCreateInfo,
55 const VkAllocationCallbacks* pAllocator,
56 VkInstance* pInstance)
57{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080058 AEMU_SCOPED_TRACE("vkCreateInstance");
Lingfeng Yang4f539502021-01-22 23:01:57 -080059 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -080060 VkResult vkCreateInstance_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080061 vkCreateInstance_VkResult_return = vkEnc->vkCreateInstance(pCreateInfo, pAllocator, pInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080062 return vkCreateInstance_VkResult_return;
63}
64static void entry_vkDestroyInstance(
65 VkInstance instance,
66 const VkAllocationCallbacks* pAllocator)
67{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080068 AEMU_SCOPED_TRACE("vkDestroyInstance");
Lingfeng Yang4f539502021-01-22 23:01:57 -080069 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080070 vkEnc->vkDestroyInstance(instance, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080071}
72static VkResult entry_vkEnumeratePhysicalDevices(
73 VkInstance instance,
74 uint32_t* pPhysicalDeviceCount,
75 VkPhysicalDevice* pPhysicalDevices)
76{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080077 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices");
Lingfeng Yang4f539502021-01-22 23:01:57 -080078 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -080079 VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
Lingfeng Yangb64ca452019-02-14 22:04:28 -080080 auto resources = ResourceTracker::get();
81 vkEnumeratePhysicalDevices_VkResult_return = resources->on_vkEnumeratePhysicalDevices(vkEnc, VK_SUCCESS, instance, pPhysicalDeviceCount, pPhysicalDevices);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080082 return vkEnumeratePhysicalDevices_VkResult_return;
83}
84static void entry_vkGetPhysicalDeviceFeatures(
85 VkPhysicalDevice physicalDevice,
86 VkPhysicalDeviceFeatures* pFeatures)
87{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080088 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -080089 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080090 vkEnc->vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080091}
92static void entry_vkGetPhysicalDeviceFormatProperties(
93 VkPhysicalDevice physicalDevice,
94 VkFormat format,
95 VkFormatProperties* pFormatProperties)
96{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080097 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -080098 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080099 vkEnc->vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800100}
101static VkResult entry_vkGetPhysicalDeviceImageFormatProperties(
102 VkPhysicalDevice physicalDevice,
103 VkFormat format,
104 VkImageType type,
105 VkImageTiling tiling,
106 VkImageUsageFlags usage,
107 VkImageCreateFlags flags,
108 VkImageFormatProperties* pImageFormatProperties)
109{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800110 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800111 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800112 VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800113 vkGetPhysicalDeviceImageFormatProperties_VkResult_return = vkEnc->vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800114 return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
115}
116static void entry_vkGetPhysicalDeviceProperties(
117 VkPhysicalDevice physicalDevice,
118 VkPhysicalDeviceProperties* pProperties)
119{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800120 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800121 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800122 vkEnc->vkGetPhysicalDeviceProperties(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800123}
124static void entry_vkGetPhysicalDeviceQueueFamilyProperties(
125 VkPhysicalDevice physicalDevice,
126 uint32_t* pQueueFamilyPropertyCount,
127 VkQueueFamilyProperties* pQueueFamilyProperties)
128{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800129 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800130 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800131 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800132}
133static void entry_vkGetPhysicalDeviceMemoryProperties(
134 VkPhysicalDevice physicalDevice,
135 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
136{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800137 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800138 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800139 vkEnc->vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800140}
141static PFN_vkVoidFunction entry_vkGetInstanceProcAddr(
142 VkInstance instance,
143 const char* pName)
144{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800145 AEMU_SCOPED_TRACE("vkGetInstanceProcAddr");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800146 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800147 PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800148 vkGetInstanceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetInstanceProcAddr(instance, pName, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800149 return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
150}
151static PFN_vkVoidFunction entry_vkGetDeviceProcAddr(
152 VkDevice device,
153 const char* pName)
154{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800155 AEMU_SCOPED_TRACE("vkGetDeviceProcAddr");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800156 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800157 PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800158 vkGetDeviceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetDeviceProcAddr(device, pName, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800159 return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
160}
161static VkResult entry_vkCreateDevice(
162 VkPhysicalDevice physicalDevice,
163 const VkDeviceCreateInfo* pCreateInfo,
164 const VkAllocationCallbacks* pAllocator,
165 VkDevice* pDevice)
166{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800167 AEMU_SCOPED_TRACE("vkCreateDevice");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800168 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800169 VkResult vkCreateDevice_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800170 vkCreateDevice_VkResult_return = vkEnc->vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800171 return vkCreateDevice_VkResult_return;
172}
173static void entry_vkDestroyDevice(
174 VkDevice device,
175 const VkAllocationCallbacks* pAllocator)
176{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800177 AEMU_SCOPED_TRACE("vkDestroyDevice");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800178 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800179 vkEnc->vkDestroyDevice(device, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800180}
181static VkResult entry_vkEnumerateInstanceExtensionProperties(
182 const char* pLayerName,
183 uint32_t* pPropertyCount,
184 VkExtensionProperties* pProperties)
185{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800186 AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800187 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800188 VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -0800189 auto resources = ResourceTracker::get();
190 vkEnumerateInstanceExtensionProperties_VkResult_return = resources->on_vkEnumerateInstanceExtensionProperties(vkEnc, VK_SUCCESS, pLayerName, pPropertyCount, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800191 return vkEnumerateInstanceExtensionProperties_VkResult_return;
192}
193static VkResult entry_vkEnumerateDeviceExtensionProperties(
194 VkPhysicalDevice physicalDevice,
195 const char* pLayerName,
196 uint32_t* pPropertyCount,
197 VkExtensionProperties* pProperties)
198{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800199 AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800200 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800201 VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -0800202 auto resources = ResourceTracker::get();
203 vkEnumerateDeviceExtensionProperties_VkResult_return = resources->on_vkEnumerateDeviceExtensionProperties(vkEnc, VK_SUCCESS, physicalDevice, pLayerName, pPropertyCount, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800204 return vkEnumerateDeviceExtensionProperties_VkResult_return;
205}
206static VkResult entry_vkEnumerateInstanceLayerProperties(
207 uint32_t* pPropertyCount,
208 VkLayerProperties* pProperties)
209{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800210 AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800211 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800212 VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800213 vkEnumerateInstanceLayerProperties_VkResult_return = vkEnc->vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800214 return vkEnumerateInstanceLayerProperties_VkResult_return;
215}
216static VkResult entry_vkEnumerateDeviceLayerProperties(
217 VkPhysicalDevice physicalDevice,
218 uint32_t* pPropertyCount,
219 VkLayerProperties* pProperties)
220{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800221 AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800222 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800223 VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800224 vkEnumerateDeviceLayerProperties_VkResult_return = vkEnc->vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800225 return vkEnumerateDeviceLayerProperties_VkResult_return;
226}
227static void entry_vkGetDeviceQueue(
228 VkDevice device,
229 uint32_t queueFamilyIndex,
230 uint32_t queueIndex,
231 VkQueue* pQueue)
232{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800233 AEMU_SCOPED_TRACE("vkGetDeviceQueue");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800234 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800235 vkEnc->vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800236}
237static VkResult entry_vkQueueSubmit(
238 VkQueue queue,
239 uint32_t submitCount,
240 const VkSubmitInfo* pSubmits,
241 VkFence fence)
242{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800243 AEMU_SCOPED_TRACE("vkQueueSubmit");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800244 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800245 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
David Reveman24710222019-02-25 02:21:42 -0500246 auto resources = ResourceTracker::get();
247 vkQueueSubmit_VkResult_return = resources->on_vkQueueSubmit(vkEnc, VK_SUCCESS, queue, submitCount, pSubmits, fence);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800248 return vkQueueSubmit_VkResult_return;
249}
250static VkResult entry_vkQueueWaitIdle(
251 VkQueue queue)
252{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800253 AEMU_SCOPED_TRACE("vkQueueWaitIdle");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800254 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800255 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700256 auto resources = ResourceTracker::get();
257 vkQueueWaitIdle_VkResult_return = resources->on_vkQueueWaitIdle(vkEnc, VK_SUCCESS, queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800258 return vkQueueWaitIdle_VkResult_return;
259}
260static VkResult entry_vkDeviceWaitIdle(
261 VkDevice device)
262{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800263 AEMU_SCOPED_TRACE("vkDeviceWaitIdle");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800264 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800265 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800266 vkDeviceWaitIdle_VkResult_return = vkEnc->vkDeviceWaitIdle(device, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800267 return vkDeviceWaitIdle_VkResult_return;
268}
269static VkResult entry_vkAllocateMemory(
270 VkDevice device,
271 const VkMemoryAllocateInfo* pAllocateInfo,
272 const VkAllocationCallbacks* pAllocator,
273 VkDeviceMemory* pMemory)
274{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800275 AEMU_SCOPED_TRACE("vkAllocateMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800276 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800277 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
Lingfeng Yange9979522018-12-25 14:44:52 -0800278 auto resources = ResourceTracker::get();
279 vkAllocateMemory_VkResult_return = resources->on_vkAllocateMemory(vkEnc, VK_SUCCESS, device, pAllocateInfo, pAllocator, pMemory);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800280 return vkAllocateMemory_VkResult_return;
281}
282static void entry_vkFreeMemory(
283 VkDevice device,
284 VkDeviceMemory memory,
285 const VkAllocationCallbacks* pAllocator)
286{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800287 AEMU_SCOPED_TRACE("vkFreeMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800288 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yange9979522018-12-25 14:44:52 -0800289 auto resources = ResourceTracker::get();
290 resources->on_vkFreeMemory(vkEnc, device, memory, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800291}
292static VkResult entry_vkMapMemory(
293 VkDevice device,
294 VkDeviceMemory memory,
295 VkDeviceSize offset,
296 VkDeviceSize size,
297 VkMemoryMapFlags flags,
298 void** ppData)
299{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800300 AEMU_SCOPED_TRACE("vkMapMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800301 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800302 VkResult vkMapMemory_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800303 vkMapMemory_VkResult_return = vkEnc->vkMapMemory(device, memory, offset, size, flags, ppData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800304 return vkMapMemory_VkResult_return;
305}
306static void entry_vkUnmapMemory(
307 VkDevice device,
308 VkDeviceMemory memory)
309{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800310 AEMU_SCOPED_TRACE("vkUnmapMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800311 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800312 vkEnc->vkUnmapMemory(device, memory, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800313}
314static VkResult entry_vkFlushMappedMemoryRanges(
315 VkDevice device,
316 uint32_t memoryRangeCount,
317 const VkMappedMemoryRange* pMemoryRanges)
318{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800319 AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800320 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800321 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800322 vkFlushMappedMemoryRanges_VkResult_return = vkEnc->vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800323 return vkFlushMappedMemoryRanges_VkResult_return;
324}
325static VkResult entry_vkInvalidateMappedMemoryRanges(
326 VkDevice device,
327 uint32_t memoryRangeCount,
328 const VkMappedMemoryRange* pMemoryRanges)
329{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800330 AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800331 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800332 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800333 vkInvalidateMappedMemoryRanges_VkResult_return = vkEnc->vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800334 return vkInvalidateMappedMemoryRanges_VkResult_return;
335}
336static void entry_vkGetDeviceMemoryCommitment(
337 VkDevice device,
338 VkDeviceMemory memory,
339 VkDeviceSize* pCommittedMemoryInBytes)
340{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800341 AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800342 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800343 vkEnc->vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800344}
345static VkResult entry_vkBindBufferMemory(
346 VkDevice device,
347 VkBuffer buffer,
348 VkDeviceMemory memory,
349 VkDeviceSize memoryOffset)
350{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800351 AEMU_SCOPED_TRACE("vkBindBufferMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800352 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800353 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800354 auto resources = ResourceTracker::get();
355 vkBindBufferMemory_VkResult_return = resources->on_vkBindBufferMemory(vkEnc, VK_SUCCESS, device, buffer, memory, memoryOffset);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800356 return vkBindBufferMemory_VkResult_return;
357}
358static VkResult entry_vkBindImageMemory(
359 VkDevice device,
360 VkImage image,
361 VkDeviceMemory memory,
362 VkDeviceSize memoryOffset)
363{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800364 AEMU_SCOPED_TRACE("vkBindImageMemory");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800365 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800366 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800367 auto resources = ResourceTracker::get();
368 vkBindImageMemory_VkResult_return = resources->on_vkBindImageMemory(vkEnc, VK_SUCCESS, device, image, memory, memoryOffset);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800369 return vkBindImageMemory_VkResult_return;
370}
371static void entry_vkGetBufferMemoryRequirements(
372 VkDevice device,
373 VkBuffer buffer,
374 VkMemoryRequirements* pMemoryRequirements)
375{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800376 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800377 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800378 auto resources = ResourceTracker::get();
379 resources->on_vkGetBufferMemoryRequirements(vkEnc, device, buffer, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800380}
381static void entry_vkGetImageMemoryRequirements(
382 VkDevice device,
383 VkImage image,
384 VkMemoryRequirements* pMemoryRequirements)
385{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800386 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800387 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800388 auto resources = ResourceTracker::get();
389 resources->on_vkGetImageMemoryRequirements(vkEnc, device, image, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800390}
391static void entry_vkGetImageSparseMemoryRequirements(
392 VkDevice device,
393 VkImage image,
394 uint32_t* pSparseMemoryRequirementCount,
395 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
396{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800397 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800398 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800399 vkEnc->vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800400}
401static void entry_vkGetPhysicalDeviceSparseImageFormatProperties(
402 VkPhysicalDevice physicalDevice,
403 VkFormat format,
404 VkImageType type,
405 VkSampleCountFlagBits samples,
406 VkImageUsageFlags usage,
407 VkImageTiling tiling,
408 uint32_t* pPropertyCount,
409 VkSparseImageFormatProperties* pProperties)
410{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800411 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800412 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800413 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800414}
415static VkResult entry_vkQueueBindSparse(
416 VkQueue queue,
417 uint32_t bindInfoCount,
418 const VkBindSparseInfo* pBindInfo,
419 VkFence fence)
420{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800421 AEMU_SCOPED_TRACE("vkQueueBindSparse");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800422 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800423 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800424 vkQueueBindSparse_VkResult_return = vkEnc->vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800425 return vkQueueBindSparse_VkResult_return;
426}
427static VkResult entry_vkCreateFence(
428 VkDevice device,
429 const VkFenceCreateInfo* pCreateInfo,
430 const VkAllocationCallbacks* pAllocator,
431 VkFence* pFence)
432{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800433 AEMU_SCOPED_TRACE("vkCreateFence");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800434 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800435 VkResult vkCreateFence_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700436 auto resources = ResourceTracker::get();
437 vkCreateFence_VkResult_return = resources->on_vkCreateFence(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pFence);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800438 return vkCreateFence_VkResult_return;
439}
440static void entry_vkDestroyFence(
441 VkDevice device,
442 VkFence fence,
443 const VkAllocationCallbacks* pAllocator)
444{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800445 AEMU_SCOPED_TRACE("vkDestroyFence");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800446 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800447 vkEnc->vkDestroyFence(device, fence, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800448}
449static VkResult entry_vkResetFences(
450 VkDevice device,
451 uint32_t fenceCount,
452 const VkFence* pFences)
453{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800454 AEMU_SCOPED_TRACE("vkResetFences");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800455 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800456 VkResult vkResetFences_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700457 auto resources = ResourceTracker::get();
458 vkResetFences_VkResult_return = resources->on_vkResetFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800459 return vkResetFences_VkResult_return;
460}
461static VkResult entry_vkGetFenceStatus(
462 VkDevice device,
463 VkFence fence)
464{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800465 AEMU_SCOPED_TRACE("vkGetFenceStatus");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800466 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800467 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800468 vkGetFenceStatus_VkResult_return = vkEnc->vkGetFenceStatus(device, fence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800469 return vkGetFenceStatus_VkResult_return;
470}
471static VkResult entry_vkWaitForFences(
472 VkDevice device,
473 uint32_t fenceCount,
474 const VkFence* pFences,
475 VkBool32 waitAll,
476 uint64_t timeout)
477{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800478 AEMU_SCOPED_TRACE("vkWaitForFences");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800479 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800480 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700481 auto resources = ResourceTracker::get();
482 vkWaitForFences_VkResult_return = resources->on_vkWaitForFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences, waitAll, timeout);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800483 return vkWaitForFences_VkResult_return;
484}
485static VkResult entry_vkCreateSemaphore(
486 VkDevice device,
487 const VkSemaphoreCreateInfo* pCreateInfo,
488 const VkAllocationCallbacks* pAllocator,
489 VkSemaphore* pSemaphore)
490{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800491 AEMU_SCOPED_TRACE("vkCreateSemaphore");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800492 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800493 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
David Reveman32b110e2019-02-21 13:20:54 -0500494 auto resources = ResourceTracker::get();
495 vkCreateSemaphore_VkResult_return = resources->on_vkCreateSemaphore(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSemaphore);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800496 return vkCreateSemaphore_VkResult_return;
497}
498static void entry_vkDestroySemaphore(
499 VkDevice device,
500 VkSemaphore semaphore,
501 const VkAllocationCallbacks* pAllocator)
502{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800503 AEMU_SCOPED_TRACE("vkDestroySemaphore");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800504 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
David Reveman32b110e2019-02-21 13:20:54 -0500505 auto resources = ResourceTracker::get();
506 resources->on_vkDestroySemaphore(vkEnc, device, semaphore, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800507}
508static VkResult entry_vkCreateEvent(
509 VkDevice device,
510 const VkEventCreateInfo* pCreateInfo,
511 const VkAllocationCallbacks* pAllocator,
512 VkEvent* pEvent)
513{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800514 AEMU_SCOPED_TRACE("vkCreateEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800515 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800516 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800517 vkCreateEvent_VkResult_return = vkEnc->vkCreateEvent(device, pCreateInfo, pAllocator, pEvent, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800518 return vkCreateEvent_VkResult_return;
519}
520static void entry_vkDestroyEvent(
521 VkDevice device,
522 VkEvent event,
523 const VkAllocationCallbacks* pAllocator)
524{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800525 AEMU_SCOPED_TRACE("vkDestroyEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800526 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800527 vkEnc->vkDestroyEvent(device, event, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800528}
529static VkResult entry_vkGetEventStatus(
530 VkDevice device,
531 VkEvent event)
532{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800533 AEMU_SCOPED_TRACE("vkGetEventStatus");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800534 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800535 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800536 vkGetEventStatus_VkResult_return = vkEnc->vkGetEventStatus(device, event, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800537 return vkGetEventStatus_VkResult_return;
538}
539static VkResult entry_vkSetEvent(
540 VkDevice device,
541 VkEvent event)
542{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800543 AEMU_SCOPED_TRACE("vkSetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800544 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800545 VkResult vkSetEvent_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800546 vkSetEvent_VkResult_return = vkEnc->vkSetEvent(device, event, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800547 return vkSetEvent_VkResult_return;
548}
549static VkResult entry_vkResetEvent(
550 VkDevice device,
551 VkEvent event)
552{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800553 AEMU_SCOPED_TRACE("vkResetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800554 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800555 VkResult vkResetEvent_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800556 vkResetEvent_VkResult_return = vkEnc->vkResetEvent(device, event, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800557 return vkResetEvent_VkResult_return;
558}
559static VkResult entry_vkCreateQueryPool(
560 VkDevice device,
561 const VkQueryPoolCreateInfo* pCreateInfo,
562 const VkAllocationCallbacks* pAllocator,
563 VkQueryPool* pQueryPool)
564{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800565 AEMU_SCOPED_TRACE("vkCreateQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800566 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800567 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800568 vkCreateQueryPool_VkResult_return = vkEnc->vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800569 return vkCreateQueryPool_VkResult_return;
570}
571static void entry_vkDestroyQueryPool(
572 VkDevice device,
573 VkQueryPool queryPool,
574 const VkAllocationCallbacks* pAllocator)
575{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800576 AEMU_SCOPED_TRACE("vkDestroyQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800577 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800578 vkEnc->vkDestroyQueryPool(device, queryPool, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800579}
580static VkResult entry_vkGetQueryPoolResults(
581 VkDevice device,
582 VkQueryPool queryPool,
583 uint32_t firstQuery,
584 uint32_t queryCount,
585 size_t dataSize,
586 void* pData,
587 VkDeviceSize stride,
588 VkQueryResultFlags flags)
589{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800590 AEMU_SCOPED_TRACE("vkGetQueryPoolResults");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800591 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800592 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800593 vkGetQueryPoolResults_VkResult_return = vkEnc->vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800594 return vkGetQueryPoolResults_VkResult_return;
595}
596static VkResult entry_vkCreateBuffer(
597 VkDevice device,
598 const VkBufferCreateInfo* pCreateInfo,
599 const VkAllocationCallbacks* pAllocator,
600 VkBuffer* pBuffer)
601{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800602 AEMU_SCOPED_TRACE("vkCreateBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800603 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800604 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800605 auto resources = ResourceTracker::get();
606 vkCreateBuffer_VkResult_return = resources->on_vkCreateBuffer(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800607 return vkCreateBuffer_VkResult_return;
608}
609static void entry_vkDestroyBuffer(
610 VkDevice device,
611 VkBuffer buffer,
612 const VkAllocationCallbacks* pAllocator)
613{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800614 AEMU_SCOPED_TRACE("vkDestroyBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800615 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800616 auto resources = ResourceTracker::get();
617 resources->on_vkDestroyBuffer(vkEnc, device, buffer, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800618}
619static VkResult entry_vkCreateBufferView(
620 VkDevice device,
621 const VkBufferViewCreateInfo* pCreateInfo,
622 const VkAllocationCallbacks* pAllocator,
623 VkBufferView* pView)
624{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800625 AEMU_SCOPED_TRACE("vkCreateBufferView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800626 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800627 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800628 vkCreateBufferView_VkResult_return = vkEnc->vkCreateBufferView(device, pCreateInfo, pAllocator, pView, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800629 return vkCreateBufferView_VkResult_return;
630}
631static void entry_vkDestroyBufferView(
632 VkDevice device,
633 VkBufferView bufferView,
634 const VkAllocationCallbacks* pAllocator)
635{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800636 AEMU_SCOPED_TRACE("vkDestroyBufferView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800637 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800638 vkEnc->vkDestroyBufferView(device, bufferView, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800639}
640static VkResult entry_vkCreateImage(
641 VkDevice device,
642 const VkImageCreateInfo* pCreateInfo,
643 const VkAllocationCallbacks* pAllocator,
644 VkImage* pImage)
645{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800646 AEMU_SCOPED_TRACE("vkCreateImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800647 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800648 VkResult vkCreateImage_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800649 auto resources = ResourceTracker::get();
650 vkCreateImage_VkResult_return = resources->on_vkCreateImage(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pImage);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800651 return vkCreateImage_VkResult_return;
652}
653static void entry_vkDestroyImage(
654 VkDevice device,
655 VkImage image,
656 const VkAllocationCallbacks* pAllocator)
657{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800658 AEMU_SCOPED_TRACE("vkDestroyImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800659 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800660 auto resources = ResourceTracker::get();
661 resources->on_vkDestroyImage(vkEnc, device, image, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800662}
663static void entry_vkGetImageSubresourceLayout(
664 VkDevice device,
665 VkImage image,
666 const VkImageSubresource* pSubresource,
667 VkSubresourceLayout* pLayout)
668{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800669 AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800670 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800671 vkEnc->vkGetImageSubresourceLayout(device, image, pSubresource, pLayout, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800672}
673static VkResult entry_vkCreateImageView(
674 VkDevice device,
675 const VkImageViewCreateInfo* pCreateInfo,
676 const VkAllocationCallbacks* pAllocator,
677 VkImageView* pView)
678{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800679 AEMU_SCOPED_TRACE("vkCreateImageView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800680 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800681 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
Roman Kiryanov6db11e52019-04-26 14:18:14 -0700682 auto resources = ResourceTracker::get();
683 vkCreateImageView_VkResult_return = resources->on_vkCreateImageView(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pView);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800684 return vkCreateImageView_VkResult_return;
685}
686static void entry_vkDestroyImageView(
687 VkDevice device,
688 VkImageView imageView,
689 const VkAllocationCallbacks* pAllocator)
690{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800691 AEMU_SCOPED_TRACE("vkDestroyImageView");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800692 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800693 vkEnc->vkDestroyImageView(device, imageView, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800694}
695static VkResult entry_vkCreateShaderModule(
696 VkDevice device,
697 const VkShaderModuleCreateInfo* pCreateInfo,
698 const VkAllocationCallbacks* pAllocator,
699 VkShaderModule* pShaderModule)
700{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800701 AEMU_SCOPED_TRACE("vkCreateShaderModule");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800702 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800703 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800704 vkCreateShaderModule_VkResult_return = vkEnc->vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800705 return vkCreateShaderModule_VkResult_return;
706}
707static void entry_vkDestroyShaderModule(
708 VkDevice device,
709 VkShaderModule shaderModule,
710 const VkAllocationCallbacks* pAllocator)
711{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800712 AEMU_SCOPED_TRACE("vkDestroyShaderModule");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800713 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800714 vkEnc->vkDestroyShaderModule(device, shaderModule, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800715}
716static VkResult entry_vkCreatePipelineCache(
717 VkDevice device,
718 const VkPipelineCacheCreateInfo* pCreateInfo,
719 const VkAllocationCallbacks* pAllocator,
720 VkPipelineCache* pPipelineCache)
721{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800722 AEMU_SCOPED_TRACE("vkCreatePipelineCache");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800723 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800724 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800725 vkCreatePipelineCache_VkResult_return = vkEnc->vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800726 return vkCreatePipelineCache_VkResult_return;
727}
728static void entry_vkDestroyPipelineCache(
729 VkDevice device,
730 VkPipelineCache pipelineCache,
731 const VkAllocationCallbacks* pAllocator)
732{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800733 AEMU_SCOPED_TRACE("vkDestroyPipelineCache");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800734 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800735 vkEnc->vkDestroyPipelineCache(device, pipelineCache, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800736}
737static VkResult entry_vkGetPipelineCacheData(
738 VkDevice device,
739 VkPipelineCache pipelineCache,
740 size_t* pDataSize,
741 void* pData)
742{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800743 AEMU_SCOPED_TRACE("vkGetPipelineCacheData");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800744 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800745 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800746 vkGetPipelineCacheData_VkResult_return = vkEnc->vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800747 return vkGetPipelineCacheData_VkResult_return;
748}
749static VkResult entry_vkMergePipelineCaches(
750 VkDevice device,
751 VkPipelineCache dstCache,
752 uint32_t srcCacheCount,
753 const VkPipelineCache* pSrcCaches)
754{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800755 AEMU_SCOPED_TRACE("vkMergePipelineCaches");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800756 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800757 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800758 vkMergePipelineCaches_VkResult_return = vkEnc->vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800759 return vkMergePipelineCaches_VkResult_return;
760}
761static VkResult entry_vkCreateGraphicsPipelines(
762 VkDevice device,
763 VkPipelineCache pipelineCache,
764 uint32_t createInfoCount,
765 const VkGraphicsPipelineCreateInfo* pCreateInfos,
766 const VkAllocationCallbacks* pAllocator,
767 VkPipeline* pPipelines)
768{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800769 AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800770 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800771 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800772 vkCreateGraphicsPipelines_VkResult_return = vkEnc->vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800773 return vkCreateGraphicsPipelines_VkResult_return;
774}
775static VkResult entry_vkCreateComputePipelines(
776 VkDevice device,
777 VkPipelineCache pipelineCache,
778 uint32_t createInfoCount,
779 const VkComputePipelineCreateInfo* pCreateInfos,
780 const VkAllocationCallbacks* pAllocator,
781 VkPipeline* pPipelines)
782{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800783 AEMU_SCOPED_TRACE("vkCreateComputePipelines");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800784 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800785 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800786 vkCreateComputePipelines_VkResult_return = vkEnc->vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800787 return vkCreateComputePipelines_VkResult_return;
788}
789static void entry_vkDestroyPipeline(
790 VkDevice device,
791 VkPipeline pipeline,
792 const VkAllocationCallbacks* pAllocator)
793{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800794 AEMU_SCOPED_TRACE("vkDestroyPipeline");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800795 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800796 vkEnc->vkDestroyPipeline(device, pipeline, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800797}
798static VkResult entry_vkCreatePipelineLayout(
799 VkDevice device,
800 const VkPipelineLayoutCreateInfo* pCreateInfo,
801 const VkAllocationCallbacks* pAllocator,
802 VkPipelineLayout* pPipelineLayout)
803{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800804 AEMU_SCOPED_TRACE("vkCreatePipelineLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800805 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800806 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800807 vkCreatePipelineLayout_VkResult_return = vkEnc->vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800808 return vkCreatePipelineLayout_VkResult_return;
809}
810static void entry_vkDestroyPipelineLayout(
811 VkDevice device,
812 VkPipelineLayout pipelineLayout,
813 const VkAllocationCallbacks* pAllocator)
814{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800815 AEMU_SCOPED_TRACE("vkDestroyPipelineLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800816 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800817 vkEnc->vkDestroyPipelineLayout(device, pipelineLayout, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800818}
819static VkResult entry_vkCreateSampler(
820 VkDevice device,
821 const VkSamplerCreateInfo* pCreateInfo,
822 const VkAllocationCallbacks* pAllocator,
823 VkSampler* pSampler)
824{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800825 AEMU_SCOPED_TRACE("vkCreateSampler");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800826 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800827 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
Roman Kiryanov004f48c2019-06-28 14:59:32 -0700828 auto resources = ResourceTracker::get();
829 vkCreateSampler_VkResult_return = resources->on_vkCreateSampler(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSampler);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800830 return vkCreateSampler_VkResult_return;
831}
832static void entry_vkDestroySampler(
833 VkDevice device,
834 VkSampler sampler,
835 const VkAllocationCallbacks* pAllocator)
836{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800837 AEMU_SCOPED_TRACE("vkDestroySampler");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800838 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800839 vkEnc->vkDestroySampler(device, sampler, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800840}
841static VkResult entry_vkCreateDescriptorSetLayout(
842 VkDevice device,
843 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
844 const VkAllocationCallbacks* pAllocator,
845 VkDescriptorSetLayout* pSetLayout)
846{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800847 AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800848 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800849 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
Lingfeng Yang03354c72020-03-26 13:00:51 -0700850 auto resources = ResourceTracker::get();
851 vkCreateDescriptorSetLayout_VkResult_return = resources->on_vkCreateDescriptorSetLayout(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSetLayout);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800852 return vkCreateDescriptorSetLayout_VkResult_return;
853}
854static void entry_vkDestroyDescriptorSetLayout(
855 VkDevice device,
856 VkDescriptorSetLayout descriptorSetLayout,
857 const VkAllocationCallbacks* pAllocator)
858{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800859 AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800860 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang55676e02021-02-08 08:39:45 -0800861 auto resources = ResourceTracker::get();
862 resources->on_vkDestroyDescriptorSetLayout(vkEnc, device, descriptorSetLayout, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800863}
864static VkResult entry_vkCreateDescriptorPool(
865 VkDevice device,
866 const VkDescriptorPoolCreateInfo* pCreateInfo,
867 const VkAllocationCallbacks* pAllocator,
868 VkDescriptorPool* pDescriptorPool)
869{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800870 AEMU_SCOPED_TRACE("vkCreateDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800871 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800872 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700873 auto resources = ResourceTracker::get();
874 vkCreateDescriptorPool_VkResult_return = resources->on_vkCreateDescriptorPool(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pDescriptorPool);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800875 return vkCreateDescriptorPool_VkResult_return;
876}
877static void entry_vkDestroyDescriptorPool(
878 VkDevice device,
879 VkDescriptorPool descriptorPool,
880 const VkAllocationCallbacks* pAllocator)
881{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800882 AEMU_SCOPED_TRACE("vkDestroyDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800883 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700884 auto resources = ResourceTracker::get();
885 resources->on_vkDestroyDescriptorPool(vkEnc, device, descriptorPool, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800886}
887static VkResult entry_vkResetDescriptorPool(
888 VkDevice device,
889 VkDescriptorPool descriptorPool,
890 VkDescriptorPoolResetFlags flags)
891{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800892 AEMU_SCOPED_TRACE("vkResetDescriptorPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800893 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800894 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700895 auto resources = ResourceTracker::get();
896 vkResetDescriptorPool_VkResult_return = resources->on_vkResetDescriptorPool(vkEnc, VK_SUCCESS, device, descriptorPool, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800897 return vkResetDescriptorPool_VkResult_return;
898}
899static VkResult entry_vkAllocateDescriptorSets(
900 VkDevice device,
901 const VkDescriptorSetAllocateInfo* pAllocateInfo,
902 VkDescriptorSet* pDescriptorSets)
903{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800904 AEMU_SCOPED_TRACE("vkAllocateDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800905 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800906 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700907 auto resources = ResourceTracker::get();
908 vkAllocateDescriptorSets_VkResult_return = resources->on_vkAllocateDescriptorSets(vkEnc, VK_SUCCESS, device, pAllocateInfo, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800909 return vkAllocateDescriptorSets_VkResult_return;
910}
911static VkResult entry_vkFreeDescriptorSets(
912 VkDevice device,
913 VkDescriptorPool descriptorPool,
914 uint32_t descriptorSetCount,
915 const VkDescriptorSet* pDescriptorSets)
916{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800917 AEMU_SCOPED_TRACE("vkFreeDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800918 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800919 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700920 auto resources = ResourceTracker::get();
921 vkFreeDescriptorSets_VkResult_return = resources->on_vkFreeDescriptorSets(vkEnc, VK_SUCCESS, device, descriptorPool, descriptorSetCount, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800922 return vkFreeDescriptorSets_VkResult_return;
923}
924static void entry_vkUpdateDescriptorSets(
925 VkDevice device,
926 uint32_t descriptorWriteCount,
927 const VkWriteDescriptorSet* pDescriptorWrites,
928 uint32_t descriptorCopyCount,
929 const VkCopyDescriptorSet* pDescriptorCopies)
930{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800931 AEMU_SCOPED_TRACE("vkUpdateDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800932 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang03354c72020-03-26 13:00:51 -0700933 auto resources = ResourceTracker::get();
934 resources->on_vkUpdateDescriptorSets(vkEnc, device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800935}
936static VkResult entry_vkCreateFramebuffer(
937 VkDevice device,
938 const VkFramebufferCreateInfo* pCreateInfo,
939 const VkAllocationCallbacks* pAllocator,
940 VkFramebuffer* pFramebuffer)
941{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800942 AEMU_SCOPED_TRACE("vkCreateFramebuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800943 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800944 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800945 vkCreateFramebuffer_VkResult_return = vkEnc->vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800946 return vkCreateFramebuffer_VkResult_return;
947}
948static void entry_vkDestroyFramebuffer(
949 VkDevice device,
950 VkFramebuffer framebuffer,
951 const VkAllocationCallbacks* pAllocator)
952{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800953 AEMU_SCOPED_TRACE("vkDestroyFramebuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800954 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800955 vkEnc->vkDestroyFramebuffer(device, framebuffer, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800956}
957static VkResult entry_vkCreateRenderPass(
958 VkDevice device,
959 const VkRenderPassCreateInfo* pCreateInfo,
960 const VkAllocationCallbacks* pAllocator,
961 VkRenderPass* pRenderPass)
962{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800963 AEMU_SCOPED_TRACE("vkCreateRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800964 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800965 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800966 vkCreateRenderPass_VkResult_return = vkEnc->vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800967 return vkCreateRenderPass_VkResult_return;
968}
969static void entry_vkDestroyRenderPass(
970 VkDevice device,
971 VkRenderPass renderPass,
972 const VkAllocationCallbacks* pAllocator)
973{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800974 AEMU_SCOPED_TRACE("vkDestroyRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800975 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800976 vkEnc->vkDestroyRenderPass(device, renderPass, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800977}
978static void entry_vkGetRenderAreaGranularity(
979 VkDevice device,
980 VkRenderPass renderPass,
981 VkExtent2D* pGranularity)
982{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800983 AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800984 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800985 vkEnc->vkGetRenderAreaGranularity(device, renderPass, pGranularity, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800986}
987static VkResult entry_vkCreateCommandPool(
988 VkDevice device,
989 const VkCommandPoolCreateInfo* pCreateInfo,
990 const VkAllocationCallbacks* pAllocator,
991 VkCommandPool* pCommandPool)
992{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800993 AEMU_SCOPED_TRACE("vkCreateCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -0800994 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800995 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -0800996 vkCreateCommandPool_VkResult_return = vkEnc->vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800997 return vkCreateCommandPool_VkResult_return;
998}
999static void entry_vkDestroyCommandPool(
1000 VkDevice device,
1001 VkCommandPool commandPool,
1002 const VkAllocationCallbacks* pAllocator)
1003{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001004 AEMU_SCOPED_TRACE("vkDestroyCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001005 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001006 vkEnc->vkDestroyCommandPool(device, commandPool, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001007}
1008static VkResult entry_vkResetCommandPool(
1009 VkDevice device,
1010 VkCommandPool commandPool,
1011 VkCommandPoolResetFlags flags)
1012{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001013 AEMU_SCOPED_TRACE("vkResetCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001014 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001015 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001016 vkResetCommandPool_VkResult_return = vkEnc->vkResetCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang4f539502021-01-22 23:01:57 -08001017 if (vkResetCommandPool_VkResult_return == VK_SUCCESS) {
1018 ResourceTracker::get()->resetCommandPoolStagingInfo(commandPool);
1019 }
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001020 return vkResetCommandPool_VkResult_return;
1021}
1022static VkResult entry_vkAllocateCommandBuffers(
1023 VkDevice device,
1024 const VkCommandBufferAllocateInfo* pAllocateInfo,
1025 VkCommandBuffer* pCommandBuffers)
1026{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001027 AEMU_SCOPED_TRACE("vkAllocateCommandBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001028 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001029 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
Lingfeng Yang97f51af2021-04-22 12:24:11 -07001030 auto resources = ResourceTracker::get();
1031 vkAllocateCommandBuffers_VkResult_return = resources->on_vkAllocateCommandBuffers(vkEnc, VK_SUCCESS, device, pAllocateInfo, pCommandBuffers);
Lingfeng Yang4f539502021-01-22 23:01:57 -08001032 if (vkAllocateCommandBuffers_VkResult_return == VK_SUCCESS) {
1033 ResourceTracker::get()->addToCommandPool(pAllocateInfo->commandPool, pAllocateInfo->commandBufferCount, pCommandBuffers);
1034 }
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001035 return vkAllocateCommandBuffers_VkResult_return;
1036}
1037static void entry_vkFreeCommandBuffers(
1038 VkDevice device,
1039 VkCommandPool commandPool,
1040 uint32_t commandBufferCount,
1041 const VkCommandBuffer* pCommandBuffers)
1042{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001043 AEMU_SCOPED_TRACE("vkFreeCommandBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001044 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001045 vkEnc->vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001046}
1047static VkResult entry_vkBeginCommandBuffer(
1048 VkCommandBuffer commandBuffer,
1049 const VkCommandBufferBeginInfo* pBeginInfo)
1050{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001051 AEMU_SCOPED_TRACE("vkBeginCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001052 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001053 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001054 auto resources = ResourceTracker::get();
1055 vkBeginCommandBuffer_VkResult_return = resources->on_vkBeginCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, pBeginInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001056 return vkBeginCommandBuffer_VkResult_return;
1057}
1058static VkResult entry_vkEndCommandBuffer(
1059 VkCommandBuffer commandBuffer)
1060{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001061 AEMU_SCOPED_TRACE("vkEndCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001062 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001063 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001064 auto resources = ResourceTracker::get();
1065 vkEndCommandBuffer_VkResult_return = resources->on_vkEndCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001066 return vkEndCommandBuffer_VkResult_return;
1067}
1068static VkResult entry_vkResetCommandBuffer(
1069 VkCommandBuffer commandBuffer,
1070 VkCommandBufferResetFlags flags)
1071{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001072 AEMU_SCOPED_TRACE("vkResetCommandBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001073 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001074 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001075 auto resources = ResourceTracker::get();
1076 vkResetCommandBuffer_VkResult_return = resources->on_vkResetCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001077 return vkResetCommandBuffer_VkResult_return;
1078}
1079static void entry_vkCmdBindPipeline(
1080 VkCommandBuffer commandBuffer,
1081 VkPipelineBindPoint pipelineBindPoint,
1082 VkPipeline pipeline)
1083{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001084 AEMU_SCOPED_TRACE("vkCmdBindPipeline");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001085 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001086 vkEnc->vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001087}
1088static void entry_vkCmdSetViewport(
1089 VkCommandBuffer commandBuffer,
1090 uint32_t firstViewport,
1091 uint32_t viewportCount,
1092 const VkViewport* pViewports)
1093{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001094 AEMU_SCOPED_TRACE("vkCmdSetViewport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001095 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001096 vkEnc->vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001097}
1098static void entry_vkCmdSetScissor(
1099 VkCommandBuffer commandBuffer,
1100 uint32_t firstScissor,
1101 uint32_t scissorCount,
1102 const VkRect2D* pScissors)
1103{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001104 AEMU_SCOPED_TRACE("vkCmdSetScissor");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001105 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001106 vkEnc->vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001107}
1108static void entry_vkCmdSetLineWidth(
1109 VkCommandBuffer commandBuffer,
1110 float lineWidth)
1111{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001112 AEMU_SCOPED_TRACE("vkCmdSetLineWidth");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001113 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001114 vkEnc->vkCmdSetLineWidth(commandBuffer, lineWidth, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001115}
1116static void entry_vkCmdSetDepthBias(
1117 VkCommandBuffer commandBuffer,
1118 float depthBiasConstantFactor,
1119 float depthBiasClamp,
1120 float depthBiasSlopeFactor)
1121{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001122 AEMU_SCOPED_TRACE("vkCmdSetDepthBias");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001123 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001124 vkEnc->vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001125}
1126static void entry_vkCmdSetBlendConstants(
1127 VkCommandBuffer commandBuffer,
Lingfeng Yang97ddeb82019-04-20 14:32:52 -07001128 const float blendConstants[4])
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001129{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001130 AEMU_SCOPED_TRACE("vkCmdSetBlendConstants");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001131 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001132 vkEnc->vkCmdSetBlendConstants(commandBuffer, blendConstants, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001133}
1134static void entry_vkCmdSetDepthBounds(
1135 VkCommandBuffer commandBuffer,
1136 float minDepthBounds,
1137 float maxDepthBounds)
1138{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001139 AEMU_SCOPED_TRACE("vkCmdSetDepthBounds");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001140 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001141 vkEnc->vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001142}
1143static void entry_vkCmdSetStencilCompareMask(
1144 VkCommandBuffer commandBuffer,
1145 VkStencilFaceFlags faceMask,
1146 uint32_t compareMask)
1147{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001148 AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001149 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001150 vkEnc->vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001151}
1152static void entry_vkCmdSetStencilWriteMask(
1153 VkCommandBuffer commandBuffer,
1154 VkStencilFaceFlags faceMask,
1155 uint32_t writeMask)
1156{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001157 AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001158 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001159 vkEnc->vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001160}
1161static void entry_vkCmdSetStencilReference(
1162 VkCommandBuffer commandBuffer,
1163 VkStencilFaceFlags faceMask,
1164 uint32_t reference)
1165{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001166 AEMU_SCOPED_TRACE("vkCmdSetStencilReference");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001167 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001168 vkEnc->vkCmdSetStencilReference(commandBuffer, faceMask, reference, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001169}
1170static void entry_vkCmdBindDescriptorSets(
1171 VkCommandBuffer commandBuffer,
1172 VkPipelineBindPoint pipelineBindPoint,
1173 VkPipelineLayout layout,
1174 uint32_t firstSet,
1175 uint32_t descriptorSetCount,
1176 const VkDescriptorSet* pDescriptorSets,
1177 uint32_t dynamicOffsetCount,
1178 const uint32_t* pDynamicOffsets)
1179{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001180 AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001181 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yang55676e02021-02-08 08:39:45 -08001182 auto resources = ResourceTracker::get();
1183 resources->on_vkCmdBindDescriptorSets(vkEnc, commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001184}
1185static void entry_vkCmdBindIndexBuffer(
1186 VkCommandBuffer commandBuffer,
1187 VkBuffer buffer,
1188 VkDeviceSize offset,
1189 VkIndexType indexType)
1190{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001191 AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001192 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001193 vkEnc->vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001194}
1195static void entry_vkCmdBindVertexBuffers(
1196 VkCommandBuffer commandBuffer,
1197 uint32_t firstBinding,
1198 uint32_t bindingCount,
1199 const VkBuffer* pBuffers,
1200 const VkDeviceSize* pOffsets)
1201{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001202 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001203 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001204 vkEnc->vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001205}
1206static void entry_vkCmdDraw(
1207 VkCommandBuffer commandBuffer,
1208 uint32_t vertexCount,
1209 uint32_t instanceCount,
1210 uint32_t firstVertex,
1211 uint32_t firstInstance)
1212{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001213 AEMU_SCOPED_TRACE("vkCmdDraw");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001214 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001215 vkEnc->vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001216}
1217static void entry_vkCmdDrawIndexed(
1218 VkCommandBuffer commandBuffer,
1219 uint32_t indexCount,
1220 uint32_t instanceCount,
1221 uint32_t firstIndex,
1222 int32_t vertexOffset,
1223 uint32_t firstInstance)
1224{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001225 AEMU_SCOPED_TRACE("vkCmdDrawIndexed");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001226 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001227 vkEnc->vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001228}
1229static void entry_vkCmdDrawIndirect(
1230 VkCommandBuffer commandBuffer,
1231 VkBuffer buffer,
1232 VkDeviceSize offset,
1233 uint32_t drawCount,
1234 uint32_t stride)
1235{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001236 AEMU_SCOPED_TRACE("vkCmdDrawIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001237 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001238 vkEnc->vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001239}
1240static void entry_vkCmdDrawIndexedIndirect(
1241 VkCommandBuffer commandBuffer,
1242 VkBuffer buffer,
1243 VkDeviceSize offset,
1244 uint32_t drawCount,
1245 uint32_t stride)
1246{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001247 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001248 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001249 vkEnc->vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001250}
1251static void entry_vkCmdDispatch(
1252 VkCommandBuffer commandBuffer,
1253 uint32_t groupCountX,
1254 uint32_t groupCountY,
1255 uint32_t groupCountZ)
1256{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001257 AEMU_SCOPED_TRACE("vkCmdDispatch");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001258 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001259 vkEnc->vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001260}
1261static void entry_vkCmdDispatchIndirect(
1262 VkCommandBuffer commandBuffer,
1263 VkBuffer buffer,
1264 VkDeviceSize offset)
1265{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001266 AEMU_SCOPED_TRACE("vkCmdDispatchIndirect");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001267 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001268 vkEnc->vkCmdDispatchIndirect(commandBuffer, buffer, offset, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001269}
1270static void entry_vkCmdCopyBuffer(
1271 VkCommandBuffer commandBuffer,
1272 VkBuffer srcBuffer,
1273 VkBuffer dstBuffer,
1274 uint32_t regionCount,
1275 const VkBufferCopy* pRegions)
1276{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001277 AEMU_SCOPED_TRACE("vkCmdCopyBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001278 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001279 vkEnc->vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001280}
1281static void entry_vkCmdCopyImage(
1282 VkCommandBuffer commandBuffer,
1283 VkImage srcImage,
1284 VkImageLayout srcImageLayout,
1285 VkImage dstImage,
1286 VkImageLayout dstImageLayout,
1287 uint32_t regionCount,
1288 const VkImageCopy* pRegions)
1289{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001290 AEMU_SCOPED_TRACE("vkCmdCopyImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001291 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001292 vkEnc->vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001293}
1294static void entry_vkCmdBlitImage(
1295 VkCommandBuffer commandBuffer,
1296 VkImage srcImage,
1297 VkImageLayout srcImageLayout,
1298 VkImage dstImage,
1299 VkImageLayout dstImageLayout,
1300 uint32_t regionCount,
1301 const VkImageBlit* pRegions,
1302 VkFilter filter)
1303{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001304 AEMU_SCOPED_TRACE("vkCmdBlitImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001305 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001306 vkEnc->vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001307}
1308static void entry_vkCmdCopyBufferToImage(
1309 VkCommandBuffer commandBuffer,
1310 VkBuffer srcBuffer,
1311 VkImage dstImage,
1312 VkImageLayout dstImageLayout,
1313 uint32_t regionCount,
1314 const VkBufferImageCopy* pRegions)
1315{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001316 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001317 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001318 vkEnc->vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001319}
1320static void entry_vkCmdCopyImageToBuffer(
1321 VkCommandBuffer commandBuffer,
1322 VkImage srcImage,
1323 VkImageLayout srcImageLayout,
1324 VkBuffer dstBuffer,
1325 uint32_t regionCount,
1326 const VkBufferImageCopy* pRegions)
1327{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001328 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001329 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001330 vkEnc->vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001331}
1332static void entry_vkCmdUpdateBuffer(
1333 VkCommandBuffer commandBuffer,
1334 VkBuffer dstBuffer,
1335 VkDeviceSize dstOffset,
1336 VkDeviceSize dataSize,
1337 const void* pData)
1338{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001339 AEMU_SCOPED_TRACE("vkCmdUpdateBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001340 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001341 vkEnc->vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001342}
1343static void entry_vkCmdFillBuffer(
1344 VkCommandBuffer commandBuffer,
1345 VkBuffer dstBuffer,
1346 VkDeviceSize dstOffset,
1347 VkDeviceSize size,
1348 uint32_t data)
1349{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001350 AEMU_SCOPED_TRACE("vkCmdFillBuffer");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001351 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001352 vkEnc->vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001353}
1354static void entry_vkCmdClearColorImage(
1355 VkCommandBuffer commandBuffer,
1356 VkImage image,
1357 VkImageLayout imageLayout,
1358 const VkClearColorValue* pColor,
1359 uint32_t rangeCount,
1360 const VkImageSubresourceRange* pRanges)
1361{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001362 AEMU_SCOPED_TRACE("vkCmdClearColorImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001363 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001364 vkEnc->vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001365}
1366static void entry_vkCmdClearDepthStencilImage(
1367 VkCommandBuffer commandBuffer,
1368 VkImage image,
1369 VkImageLayout imageLayout,
1370 const VkClearDepthStencilValue* pDepthStencil,
1371 uint32_t rangeCount,
1372 const VkImageSubresourceRange* pRanges)
1373{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001374 AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001375 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001376 vkEnc->vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001377}
1378static void entry_vkCmdClearAttachments(
1379 VkCommandBuffer commandBuffer,
1380 uint32_t attachmentCount,
1381 const VkClearAttachment* pAttachments,
1382 uint32_t rectCount,
1383 const VkClearRect* pRects)
1384{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001385 AEMU_SCOPED_TRACE("vkCmdClearAttachments");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001386 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001387 vkEnc->vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001388}
1389static void entry_vkCmdResolveImage(
1390 VkCommandBuffer commandBuffer,
1391 VkImage srcImage,
1392 VkImageLayout srcImageLayout,
1393 VkImage dstImage,
1394 VkImageLayout dstImageLayout,
1395 uint32_t regionCount,
1396 const VkImageResolve* pRegions)
1397{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001398 AEMU_SCOPED_TRACE("vkCmdResolveImage");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001399 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001400 vkEnc->vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001401}
1402static void entry_vkCmdSetEvent(
1403 VkCommandBuffer commandBuffer,
1404 VkEvent event,
1405 VkPipelineStageFlags stageMask)
1406{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001407 AEMU_SCOPED_TRACE("vkCmdSetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001408 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001409 vkEnc->vkCmdSetEvent(commandBuffer, event, stageMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001410}
1411static void entry_vkCmdResetEvent(
1412 VkCommandBuffer commandBuffer,
1413 VkEvent event,
1414 VkPipelineStageFlags stageMask)
1415{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001416 AEMU_SCOPED_TRACE("vkCmdResetEvent");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001417 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001418 vkEnc->vkCmdResetEvent(commandBuffer, event, stageMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001419}
1420static void entry_vkCmdWaitEvents(
1421 VkCommandBuffer commandBuffer,
1422 uint32_t eventCount,
1423 const VkEvent* pEvents,
1424 VkPipelineStageFlags srcStageMask,
1425 VkPipelineStageFlags dstStageMask,
1426 uint32_t memoryBarrierCount,
1427 const VkMemoryBarrier* pMemoryBarriers,
1428 uint32_t bufferMemoryBarrierCount,
1429 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1430 uint32_t imageMemoryBarrierCount,
1431 const VkImageMemoryBarrier* pImageMemoryBarriers)
1432{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001433 AEMU_SCOPED_TRACE("vkCmdWaitEvents");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001434 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001435 vkEnc->vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001436}
1437static void entry_vkCmdPipelineBarrier(
1438 VkCommandBuffer commandBuffer,
1439 VkPipelineStageFlags srcStageMask,
1440 VkPipelineStageFlags dstStageMask,
1441 VkDependencyFlags dependencyFlags,
1442 uint32_t memoryBarrierCount,
1443 const VkMemoryBarrier* pMemoryBarriers,
1444 uint32_t bufferMemoryBarrierCount,
1445 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1446 uint32_t imageMemoryBarrierCount,
1447 const VkImageMemoryBarrier* pImageMemoryBarriers)
1448{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001449 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001450 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001451 vkEnc->vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001452}
1453static void entry_vkCmdBeginQuery(
1454 VkCommandBuffer commandBuffer,
1455 VkQueryPool queryPool,
1456 uint32_t query,
1457 VkQueryControlFlags flags)
1458{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001459 AEMU_SCOPED_TRACE("vkCmdBeginQuery");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001460 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001461 vkEnc->vkCmdBeginQuery(commandBuffer, queryPool, query, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001462}
1463static void entry_vkCmdEndQuery(
1464 VkCommandBuffer commandBuffer,
1465 VkQueryPool queryPool,
1466 uint32_t query)
1467{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001468 AEMU_SCOPED_TRACE("vkCmdEndQuery");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001469 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001470 vkEnc->vkCmdEndQuery(commandBuffer, queryPool, query, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001471}
1472static void entry_vkCmdResetQueryPool(
1473 VkCommandBuffer commandBuffer,
1474 VkQueryPool queryPool,
1475 uint32_t firstQuery,
1476 uint32_t queryCount)
1477{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001478 AEMU_SCOPED_TRACE("vkCmdResetQueryPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001479 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001480 vkEnc->vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001481}
1482static void entry_vkCmdWriteTimestamp(
1483 VkCommandBuffer commandBuffer,
1484 VkPipelineStageFlagBits pipelineStage,
1485 VkQueryPool queryPool,
1486 uint32_t query)
1487{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001488 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001489 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001490 vkEnc->vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001491}
1492static void entry_vkCmdCopyQueryPoolResults(
1493 VkCommandBuffer commandBuffer,
1494 VkQueryPool queryPool,
1495 uint32_t firstQuery,
1496 uint32_t queryCount,
1497 VkBuffer dstBuffer,
1498 VkDeviceSize dstOffset,
1499 VkDeviceSize stride,
1500 VkQueryResultFlags flags)
1501{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001502 AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001503 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001504 vkEnc->vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001505}
1506static void entry_vkCmdPushConstants(
1507 VkCommandBuffer commandBuffer,
1508 VkPipelineLayout layout,
1509 VkShaderStageFlags stageFlags,
1510 uint32_t offset,
1511 uint32_t size,
1512 const void* pValues)
1513{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001514 AEMU_SCOPED_TRACE("vkCmdPushConstants");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001515 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001516 vkEnc->vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001517}
1518static void entry_vkCmdBeginRenderPass(
1519 VkCommandBuffer commandBuffer,
1520 const VkRenderPassBeginInfo* pRenderPassBegin,
1521 VkSubpassContents contents)
1522{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001523 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001524 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001525 vkEnc->vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001526}
1527static void entry_vkCmdNextSubpass(
1528 VkCommandBuffer commandBuffer,
1529 VkSubpassContents contents)
1530{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001531 AEMU_SCOPED_TRACE("vkCmdNextSubpass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001532 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001533 vkEnc->vkCmdNextSubpass(commandBuffer, contents, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001534}
1535static void entry_vkCmdEndRenderPass(
1536 VkCommandBuffer commandBuffer)
1537{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001538 AEMU_SCOPED_TRACE("vkCmdEndRenderPass");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001539 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001540 vkEnc->vkCmdEndRenderPass(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001541}
1542static void entry_vkCmdExecuteCommands(
1543 VkCommandBuffer commandBuffer,
1544 uint32_t commandBufferCount,
1545 const VkCommandBuffer* pCommandBuffers)
1546{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001547 AEMU_SCOPED_TRACE("vkCmdExecuteCommands");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001548 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1549 auto resources = ResourceTracker::get();
1550 resources->on_vkCmdExecuteCommands(vkEnc, commandBuffer, commandBufferCount, pCommandBuffers);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001551}
1552#endif
1553#ifdef VK_VERSION_1_1
1554static VkResult entry_vkEnumerateInstanceVersion(
1555 uint32_t* pApiVersion)
1556{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001557 AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001558 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001559 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001560 vkEnumerateInstanceVersion_VkResult_return = vkEnc->vkEnumerateInstanceVersion(pApiVersion, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001561 return vkEnumerateInstanceVersion_VkResult_return;
1562}
1563static VkResult entry_vkBindBufferMemory2(
1564 VkDevice device,
1565 uint32_t bindInfoCount,
1566 const VkBindBufferMemoryInfo* pBindInfos)
1567{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001568 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001569 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001570 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001571 auto resources = ResourceTracker::get();
1572 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001573 return vkBindBufferMemory2_VkResult_return;
1574}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001575static VkResult dynCheck_entry_vkBindBufferMemory2(
1576 VkDevice device,
1577 uint32_t bindInfoCount,
1578 const VkBindBufferMemoryInfo* pBindInfos)
1579{
1580 auto resources = ResourceTracker::get();
1581 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1582 {
1583 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2", "VK_VERSION_1_1");
1584 }
1585 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001586 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001587 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
1588 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1589 return vkBindBufferMemory2_VkResult_return;
1590}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001591static VkResult entry_vkBindImageMemory2(
1592 VkDevice device,
1593 uint32_t bindInfoCount,
1594 const VkBindImageMemoryInfo* pBindInfos)
1595{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001596 AEMU_SCOPED_TRACE("vkBindImageMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001597 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001598 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001599 auto resources = ResourceTracker::get();
1600 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001601 return vkBindImageMemory2_VkResult_return;
1602}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001603static VkResult dynCheck_entry_vkBindImageMemory2(
1604 VkDevice device,
1605 uint32_t bindInfoCount,
1606 const VkBindImageMemoryInfo* pBindInfos)
1607{
1608 auto resources = ResourceTracker::get();
1609 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1610 {
1611 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2", "VK_VERSION_1_1");
1612 }
1613 AEMU_SCOPED_TRACE("vkBindImageMemory2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001614 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001615 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
1616 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1617 return vkBindImageMemory2_VkResult_return;
1618}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001619static void entry_vkGetDeviceGroupPeerMemoryFeatures(
1620 VkDevice device,
1621 uint32_t heapIndex,
1622 uint32_t localDeviceIndex,
1623 uint32_t remoteDeviceIndex,
1624 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1625{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001626 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001627 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001628 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001629}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001630static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures(
1631 VkDevice device,
1632 uint32_t heapIndex,
1633 uint32_t localDeviceIndex,
1634 uint32_t remoteDeviceIndex,
1635 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1636{
1637 auto resources = ResourceTracker::get();
1638 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1639 {
1640 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeatures", "VK_VERSION_1_1");
1641 }
1642 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001643 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001644 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001645}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001646static void entry_vkCmdSetDeviceMask(
1647 VkCommandBuffer commandBuffer,
1648 uint32_t deviceMask)
1649{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001650 AEMU_SCOPED_TRACE("vkCmdSetDeviceMask");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001651 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001652 vkEnc->vkCmdSetDeviceMask(commandBuffer, deviceMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001653}
Yahan Zhouf183ac62022-04-13 11:10:26 -07001654static void dynCheck_entry_vkCmdSetDeviceMask(
1655 VkCommandBuffer commandBuffer,
1656 uint32_t deviceMask)
1657{
1658 auto resources = ResourceTracker::get();
1659 VkDevice device = resources->getDevice(commandBuffer);
1660 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1661 {
1662 sOnInvalidDynamicallyCheckedCall("vkCmdSetDeviceMask", "VK_VERSION_1_1");
1663 }
1664 AEMU_SCOPED_TRACE("vkCmdSetDeviceMask");
1665 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1666 vkEnc->vkCmdSetDeviceMask(commandBuffer, deviceMask, true /* do lock */);
1667}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001668static void entry_vkCmdDispatchBase(
1669 VkCommandBuffer commandBuffer,
1670 uint32_t baseGroupX,
1671 uint32_t baseGroupY,
1672 uint32_t baseGroupZ,
1673 uint32_t groupCountX,
1674 uint32_t groupCountY,
1675 uint32_t groupCountZ)
1676{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001677 AEMU_SCOPED_TRACE("vkCmdDispatchBase");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001678 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001679 vkEnc->vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001680}
Yahan Zhouf183ac62022-04-13 11:10:26 -07001681static void dynCheck_entry_vkCmdDispatchBase(
1682 VkCommandBuffer commandBuffer,
1683 uint32_t baseGroupX,
1684 uint32_t baseGroupY,
1685 uint32_t baseGroupZ,
1686 uint32_t groupCountX,
1687 uint32_t groupCountY,
1688 uint32_t groupCountZ)
1689{
1690 auto resources = ResourceTracker::get();
1691 VkDevice device = resources->getDevice(commandBuffer);
1692 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1693 {
1694 sOnInvalidDynamicallyCheckedCall("vkCmdDispatchBase", "VK_VERSION_1_1");
1695 }
1696 AEMU_SCOPED_TRACE("vkCmdDispatchBase");
1697 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
1698 vkEnc->vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
1699}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001700static VkResult entry_vkEnumeratePhysicalDeviceGroups(
1701 VkInstance instance,
1702 uint32_t* pPhysicalDeviceGroupCount,
1703 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
1704{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001705 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001706 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001707 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001708 vkEnumeratePhysicalDeviceGroups_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001709 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
1710}
1711static void entry_vkGetImageMemoryRequirements2(
1712 VkDevice device,
1713 const VkImageMemoryRequirementsInfo2* pInfo,
1714 VkMemoryRequirements2* pMemoryRequirements)
1715{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001716 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001717 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001718 auto resources = ResourceTracker::get();
1719 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001720}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001721static void dynCheck_entry_vkGetImageMemoryRequirements2(
1722 VkDevice device,
1723 const VkImageMemoryRequirementsInfo2* pInfo,
1724 VkMemoryRequirements2* pMemoryRequirements)
1725{
1726 auto resources = ResourceTracker::get();
1727 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1728 {
1729 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2", "VK_VERSION_1_1");
1730 }
1731 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001732 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001733 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1734}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001735static void entry_vkGetBufferMemoryRequirements2(
1736 VkDevice device,
1737 const VkBufferMemoryRequirementsInfo2* pInfo,
1738 VkMemoryRequirements2* pMemoryRequirements)
1739{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001740 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001741 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001742 auto resources = ResourceTracker::get();
1743 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001744}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001745static void dynCheck_entry_vkGetBufferMemoryRequirements2(
1746 VkDevice device,
1747 const VkBufferMemoryRequirementsInfo2* pInfo,
1748 VkMemoryRequirements2* pMemoryRequirements)
1749{
1750 auto resources = ResourceTracker::get();
1751 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1752 {
1753 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2", "VK_VERSION_1_1");
1754 }
1755 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001756 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001757 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1758}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001759static void entry_vkGetImageSparseMemoryRequirements2(
1760 VkDevice device,
1761 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1762 uint32_t* pSparseMemoryRequirementCount,
1763 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1764{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001765 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001766 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001767 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001768}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001769static void dynCheck_entry_vkGetImageSparseMemoryRequirements2(
1770 VkDevice device,
1771 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1772 uint32_t* pSparseMemoryRequirementCount,
1773 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1774{
1775 auto resources = ResourceTracker::get();
1776 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1777 {
1778 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2", "VK_VERSION_1_1");
1779 }
1780 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001781 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001782 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001783}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001784static void entry_vkGetPhysicalDeviceFeatures2(
1785 VkPhysicalDevice physicalDevice,
1786 VkPhysicalDeviceFeatures2* pFeatures)
1787{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001788 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001789 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001790 vkEnc->vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001791}
1792static void entry_vkGetPhysicalDeviceProperties2(
1793 VkPhysicalDevice physicalDevice,
1794 VkPhysicalDeviceProperties2* pProperties)
1795{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001796 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001797 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001798 vkEnc->vkGetPhysicalDeviceProperties2(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001799}
1800static void entry_vkGetPhysicalDeviceFormatProperties2(
1801 VkPhysicalDevice physicalDevice,
1802 VkFormat format,
1803 VkFormatProperties2* pFormatProperties)
1804{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001805 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001806 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001807 vkEnc->vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001808}
1809static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2(
1810 VkPhysicalDevice physicalDevice,
1811 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
1812 VkImageFormatProperties2* pImageFormatProperties)
1813{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001814 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001815 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001816 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07001817 auto resources = ResourceTracker::get();
1818 vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001819 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
1820}
1821static void entry_vkGetPhysicalDeviceQueueFamilyProperties2(
1822 VkPhysicalDevice physicalDevice,
1823 uint32_t* pQueueFamilyPropertyCount,
1824 VkQueueFamilyProperties2* pQueueFamilyProperties)
1825{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001826 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001827 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001828 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001829}
1830static void entry_vkGetPhysicalDeviceMemoryProperties2(
1831 VkPhysicalDevice physicalDevice,
1832 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
1833{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001834 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001835 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001836 vkEnc->vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001837}
1838static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2(
1839 VkPhysicalDevice physicalDevice,
1840 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
1841 uint32_t* pPropertyCount,
1842 VkSparseImageFormatProperties2* pProperties)
1843{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001844 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001845 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001846 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001847}
1848static void entry_vkTrimCommandPool(
1849 VkDevice device,
1850 VkCommandPool commandPool,
1851 VkCommandPoolTrimFlags flags)
1852{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001853 AEMU_SCOPED_TRACE("vkTrimCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001854 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001855 vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001856}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001857static void dynCheck_entry_vkTrimCommandPool(
1858 VkDevice device,
1859 VkCommandPool commandPool,
1860 VkCommandPoolTrimFlags flags)
1861{
1862 auto resources = ResourceTracker::get();
1863 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1864 {
1865 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPool", "VK_VERSION_1_1");
1866 }
1867 AEMU_SCOPED_TRACE("vkTrimCommandPool");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001868 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001869 vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001870}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001871static void entry_vkGetDeviceQueue2(
1872 VkDevice device,
1873 const VkDeviceQueueInfo2* pQueueInfo,
1874 VkQueue* pQueue)
1875{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001876 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001877 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001878 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001879}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001880static void dynCheck_entry_vkGetDeviceQueue2(
1881 VkDevice device,
1882 const VkDeviceQueueInfo2* pQueueInfo,
1883 VkQueue* pQueue)
1884{
1885 auto resources = ResourceTracker::get();
1886 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1887 {
1888 sOnInvalidDynamicallyCheckedCall("vkGetDeviceQueue2", "VK_VERSION_1_1");
1889 }
1890 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001891 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001892 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001893}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001894static VkResult entry_vkCreateSamplerYcbcrConversion(
1895 VkDevice device,
1896 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1897 const VkAllocationCallbacks* pAllocator,
1898 VkSamplerYcbcrConversion* pYcbcrConversion)
1899{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001900 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001901 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001902 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08001903 auto resources = ResourceTracker::get();
1904 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001905 return vkCreateSamplerYcbcrConversion_VkResult_return;
1906}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001907static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversion(
1908 VkDevice device,
1909 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1910 const VkAllocationCallbacks* pAllocator,
1911 VkSamplerYcbcrConversion* pYcbcrConversion)
1912{
1913 auto resources = ResourceTracker::get();
1914 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1915 {
1916 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversion", "VK_VERSION_1_1");
1917 }
1918 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001919 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001920 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
1921 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
1922 return vkCreateSamplerYcbcrConversion_VkResult_return;
1923}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001924static void entry_vkDestroySamplerYcbcrConversion(
1925 VkDevice device,
1926 VkSamplerYcbcrConversion ycbcrConversion,
1927 const VkAllocationCallbacks* pAllocator)
1928{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001929 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001930 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07001931 auto resources = ResourceTracker::get();
1932 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001933}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001934static void dynCheck_entry_vkDestroySamplerYcbcrConversion(
1935 VkDevice device,
1936 VkSamplerYcbcrConversion ycbcrConversion,
1937 const VkAllocationCallbacks* pAllocator)
1938{
1939 auto resources = ResourceTracker::get();
1940 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1941 {
1942 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversion", "VK_VERSION_1_1");
1943 }
1944 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001945 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001946 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
1947}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001948static VkResult entry_vkCreateDescriptorUpdateTemplate(
1949 VkDevice device,
1950 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1951 const VkAllocationCallbacks* pAllocator,
1952 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1953{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001954 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001955 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001956 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001957 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001958 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1959}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001960static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplate(
1961 VkDevice device,
1962 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1963 const VkAllocationCallbacks* pAllocator,
1964 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1965{
1966 auto resources = ResourceTracker::get();
1967 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1968 {
1969 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplate", "VK_VERSION_1_1");
1970 }
1971 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001972 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001973 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001974 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001975 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1976}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001977static void entry_vkDestroyDescriptorUpdateTemplate(
1978 VkDevice device,
1979 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1980 const VkAllocationCallbacks* pAllocator)
1981{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001982 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001983 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001984 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001985}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001986static void dynCheck_entry_vkDestroyDescriptorUpdateTemplate(
1987 VkDevice device,
1988 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1989 const VkAllocationCallbacks* pAllocator)
1990{
1991 auto resources = ResourceTracker::get();
1992 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1993 {
1994 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplate", "VK_VERSION_1_1");
1995 }
1996 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08001997 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08001998 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001999}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002000static void entry_vkUpdateDescriptorSetWithTemplate(
2001 VkDevice device,
2002 VkDescriptorSet descriptorSet,
2003 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
2004 const void* pData)
2005{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002006 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002007 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07002008 auto resources = ResourceTracker::get();
2009 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002010}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002011static void dynCheck_entry_vkUpdateDescriptorSetWithTemplate(
2012 VkDevice device,
2013 VkDescriptorSet descriptorSet,
2014 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
2015 const void* pData)
2016{
2017 auto resources = ResourceTracker::get();
2018 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2019 {
2020 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplate", "VK_VERSION_1_1");
2021 }
2022 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002023 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002024 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
2025}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002026static void entry_vkGetPhysicalDeviceExternalBufferProperties(
2027 VkPhysicalDevice physicalDevice,
2028 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
2029 VkExternalBufferProperties* pExternalBufferProperties)
2030{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002031 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002032 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002033 vkEnc->vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002034}
2035static void entry_vkGetPhysicalDeviceExternalFenceProperties(
2036 VkPhysicalDevice physicalDevice,
2037 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
2038 VkExternalFenceProperties* pExternalFenceProperties)
2039{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002040 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002041 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07002042 auto resources = ResourceTracker::get();
2043 resources->on_vkGetPhysicalDeviceExternalFenceProperties(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002044}
2045static void entry_vkGetPhysicalDeviceExternalSemaphoreProperties(
2046 VkPhysicalDevice physicalDevice,
2047 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2048 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
2049{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002050 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002051 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002052 vkEnc->vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002053}
2054static void entry_vkGetDescriptorSetLayoutSupport(
2055 VkDevice device,
2056 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2057 VkDescriptorSetLayoutSupport* pSupport)
2058{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002059 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002060 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002061 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002062}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002063static void dynCheck_entry_vkGetDescriptorSetLayoutSupport(
2064 VkDevice device,
2065 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2066 VkDescriptorSetLayoutSupport* pSupport)
2067{
2068 auto resources = ResourceTracker::get();
2069 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2070 {
2071 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupport", "VK_VERSION_1_1");
2072 }
2073 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002074 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002075 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002076}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002077#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08002078#ifdef VK_VERSION_1_2
2079static void entry_vkCmdDrawIndirectCount(
2080 VkCommandBuffer commandBuffer,
2081 VkBuffer buffer,
2082 VkDeviceSize offset,
2083 VkBuffer countBuffer,
2084 VkDeviceSize countBufferOffset,
2085 uint32_t maxDrawCount,
2086 uint32_t stride)
2087{
2088 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCount");
2089 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2090 vkEnc->vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
2091}
Yahan Zhouf183ac62022-04-13 11:10:26 -07002092static void dynCheck_entry_vkCmdDrawIndirectCount(
2093 VkCommandBuffer commandBuffer,
2094 VkBuffer buffer,
2095 VkDeviceSize offset,
2096 VkBuffer countBuffer,
2097 VkDeviceSize countBufferOffset,
2098 uint32_t maxDrawCount,
2099 uint32_t stride)
2100{
2101 auto resources = ResourceTracker::get();
2102 VkDevice device = resources->getDevice(commandBuffer);;
2103 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2104 {
2105 sOnInvalidDynamicallyCheckedCall("vkCmdDrawIndirectCount", "VK_VERSION_1_2");
2106 }
2107 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCount");
2108 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2109 vkEnc->vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
2110}
Yilong Lia8d45f12021-02-07 02:30:21 -08002111static void entry_vkCmdDrawIndexedIndirectCount(
2112 VkCommandBuffer commandBuffer,
2113 VkBuffer buffer,
2114 VkDeviceSize offset,
2115 VkBuffer countBuffer,
2116 VkDeviceSize countBufferOffset,
2117 uint32_t maxDrawCount,
2118 uint32_t stride)
2119{
2120 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCount");
2121 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2122 vkEnc->vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
2123}
Yahan Zhouf183ac62022-04-13 11:10:26 -07002124static void dynCheck_entry_vkCmdDrawIndexedIndirectCount(
2125 VkCommandBuffer commandBuffer,
2126 VkBuffer buffer,
2127 VkDeviceSize offset,
2128 VkBuffer countBuffer,
2129 VkDeviceSize countBufferOffset,
2130 uint32_t maxDrawCount,
2131 uint32_t stride)
2132{
2133 auto resources = ResourceTracker::get();
2134 VkDevice device = resources->getDevice(commandBuffer);;
2135 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2136 {
2137 sOnInvalidDynamicallyCheckedCall("vkCmdDrawIndexedIndirectCount", "VK_VERSION_1_2");
2138 }
2139 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCount");
2140 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2141 vkEnc->vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
2142}
Yilong Lia8d45f12021-02-07 02:30:21 -08002143static VkResult entry_vkCreateRenderPass2(
2144 VkDevice device,
2145 const VkRenderPassCreateInfo2* pCreateInfo,
2146 const VkAllocationCallbacks* pAllocator,
2147 VkRenderPass* pRenderPass)
2148{
2149 AEMU_SCOPED_TRACE("vkCreateRenderPass2");
2150 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2151 VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
2152 vkCreateRenderPass2_VkResult_return = vkEnc->vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
2153 return vkCreateRenderPass2_VkResult_return;
2154}
2155static VkResult dynCheck_entry_vkCreateRenderPass2(
2156 VkDevice device,
2157 const VkRenderPassCreateInfo2* pCreateInfo,
2158 const VkAllocationCallbacks* pAllocator,
2159 VkRenderPass* pRenderPass)
2160{
2161 auto resources = ResourceTracker::get();
2162 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2163 {
2164 sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2", "VK_VERSION_1_2");
2165 }
2166 AEMU_SCOPED_TRACE("vkCreateRenderPass2");
2167 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2168 VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
2169 vkCreateRenderPass2_VkResult_return = vkEnc->vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
2170 return vkCreateRenderPass2_VkResult_return;
2171}
2172static void entry_vkCmdBeginRenderPass2(
2173 VkCommandBuffer commandBuffer,
2174 const VkRenderPassBeginInfo* pRenderPassBegin,
2175 const VkSubpassBeginInfo* pSubpassBeginInfo)
2176{
2177 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2");
2178 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2179 vkEnc->vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
2180}
Yahan Zhouf183ac62022-04-13 11:10:26 -07002181static void dynCheck_entry_vkCmdBeginRenderPass2(
2182 VkCommandBuffer commandBuffer,
2183 const VkRenderPassBeginInfo* pRenderPassBegin,
2184 const VkSubpassBeginInfo* pSubpassBeginInfo)
2185{
2186 auto resources = ResourceTracker::get();
2187 VkDevice device = resources->getDevice(commandBuffer);;
2188 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2189 {
2190 sOnInvalidDynamicallyCheckedCall("vkCmdBeginRenderPass2", "VK_VERSION_1_2");
2191 }
2192 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2");
2193 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2194 vkEnc->vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
2195}
Yilong Lia8d45f12021-02-07 02:30:21 -08002196static void entry_vkCmdNextSubpass2(
2197 VkCommandBuffer commandBuffer,
2198 const VkSubpassBeginInfo* pSubpassBeginInfo,
2199 const VkSubpassEndInfo* pSubpassEndInfo)
2200{
2201 AEMU_SCOPED_TRACE("vkCmdNextSubpass2");
2202 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2203 vkEnc->vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
2204}
Yahan Zhouf183ac62022-04-13 11:10:26 -07002205static void dynCheck_entry_vkCmdNextSubpass2(
2206 VkCommandBuffer commandBuffer,
2207 const VkSubpassBeginInfo* pSubpassBeginInfo,
2208 const VkSubpassEndInfo* pSubpassEndInfo)
2209{
2210 auto resources = ResourceTracker::get();
2211 VkDevice device = resources->getDevice(commandBuffer);;
2212 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2213 {
2214 sOnInvalidDynamicallyCheckedCall("vkCmdNextSubpass2", "VK_VERSION_1_2");
2215 }
2216 AEMU_SCOPED_TRACE("vkCmdNextSubpass2");
2217 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2218 vkEnc->vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
2219}
Yilong Lia8d45f12021-02-07 02:30:21 -08002220static void entry_vkCmdEndRenderPass2(
2221 VkCommandBuffer commandBuffer,
2222 const VkSubpassEndInfo* pSubpassEndInfo)
2223{
2224 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2");
2225 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2226 vkEnc->vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo, true /* do lock */);
2227}
Yahan Zhouf183ac62022-04-13 11:10:26 -07002228static void dynCheck_entry_vkCmdEndRenderPass2(
2229 VkCommandBuffer commandBuffer,
2230 const VkSubpassEndInfo* pSubpassEndInfo)
2231{
2232 auto resources = ResourceTracker::get();
2233 VkDevice device = resources->getDevice(commandBuffer);;
2234 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2235 {
2236 sOnInvalidDynamicallyCheckedCall("vkCmdEndRenderPass2", "VK_VERSION_1_2");
2237 }
2238 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2");
2239 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
2240 vkEnc->vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo, true /* do lock */);
2241}
Yilong Lia8d45f12021-02-07 02:30:21 -08002242static void entry_vkResetQueryPool(
2243 VkDevice device,
2244 VkQueryPool queryPool,
2245 uint32_t firstQuery,
2246 uint32_t queryCount)
2247{
2248 AEMU_SCOPED_TRACE("vkResetQueryPool");
2249 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2250 vkEnc->vkResetQueryPool(device, queryPool, firstQuery, queryCount, true /* do lock */);
2251}
2252static void dynCheck_entry_vkResetQueryPool(
2253 VkDevice device,
2254 VkQueryPool queryPool,
2255 uint32_t firstQuery,
2256 uint32_t queryCount)
2257{
2258 auto resources = ResourceTracker::get();
2259 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2260 {
2261 sOnInvalidDynamicallyCheckedCall("vkResetQueryPool", "VK_VERSION_1_2");
2262 }
2263 AEMU_SCOPED_TRACE("vkResetQueryPool");
2264 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2265 vkEnc->vkResetQueryPool(device, queryPool, firstQuery, queryCount, true /* do lock */);
2266}
2267static VkResult entry_vkGetSemaphoreCounterValue(
2268 VkDevice device,
2269 VkSemaphore semaphore,
2270 uint64_t* pValue)
2271{
2272 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValue");
2273 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2274 VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
2275 vkGetSemaphoreCounterValue_VkResult_return = vkEnc->vkGetSemaphoreCounterValue(device, semaphore, pValue, true /* do lock */);
2276 return vkGetSemaphoreCounterValue_VkResult_return;
2277}
2278static VkResult dynCheck_entry_vkGetSemaphoreCounterValue(
2279 VkDevice device,
2280 VkSemaphore semaphore,
2281 uint64_t* pValue)
2282{
2283 auto resources = ResourceTracker::get();
2284 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2285 {
2286 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreCounterValue", "VK_VERSION_1_2");
2287 }
2288 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValue");
2289 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2290 VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
2291 vkGetSemaphoreCounterValue_VkResult_return = vkEnc->vkGetSemaphoreCounterValue(device, semaphore, pValue, true /* do lock */);
2292 return vkGetSemaphoreCounterValue_VkResult_return;
2293}
2294static VkResult entry_vkWaitSemaphores(
2295 VkDevice device,
2296 const VkSemaphoreWaitInfo* pWaitInfo,
2297 uint64_t timeout)
2298{
2299 AEMU_SCOPED_TRACE("vkWaitSemaphores");
2300 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2301 VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
2302 vkWaitSemaphores_VkResult_return = vkEnc->vkWaitSemaphores(device, pWaitInfo, timeout, true /* do lock */);
2303 return vkWaitSemaphores_VkResult_return;
2304}
2305static VkResult dynCheck_entry_vkWaitSemaphores(
2306 VkDevice device,
2307 const VkSemaphoreWaitInfo* pWaitInfo,
2308 uint64_t timeout)
2309{
2310 auto resources = ResourceTracker::get();
2311 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2312 {
2313 sOnInvalidDynamicallyCheckedCall("vkWaitSemaphores", "VK_VERSION_1_2");
2314 }
2315 AEMU_SCOPED_TRACE("vkWaitSemaphores");
2316 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2317 VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
2318 vkWaitSemaphores_VkResult_return = vkEnc->vkWaitSemaphores(device, pWaitInfo, timeout, true /* do lock */);
2319 return vkWaitSemaphores_VkResult_return;
2320}
2321static VkResult entry_vkSignalSemaphore(
2322 VkDevice device,
2323 const VkSemaphoreSignalInfo* pSignalInfo)
2324{
2325 AEMU_SCOPED_TRACE("vkSignalSemaphore");
2326 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2327 VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
2328 vkSignalSemaphore_VkResult_return = vkEnc->vkSignalSemaphore(device, pSignalInfo, true /* do lock */);
2329 return vkSignalSemaphore_VkResult_return;
2330}
2331static VkResult dynCheck_entry_vkSignalSemaphore(
2332 VkDevice device,
2333 const VkSemaphoreSignalInfo* pSignalInfo)
2334{
2335 auto resources = ResourceTracker::get();
2336 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2337 {
2338 sOnInvalidDynamicallyCheckedCall("vkSignalSemaphore", "VK_VERSION_1_2");
2339 }
2340 AEMU_SCOPED_TRACE("vkSignalSemaphore");
2341 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2342 VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
2343 vkSignalSemaphore_VkResult_return = vkEnc->vkSignalSemaphore(device, pSignalInfo, true /* do lock */);
2344 return vkSignalSemaphore_VkResult_return;
2345}
2346static VkDeviceAddress entry_vkGetBufferDeviceAddress(
2347 VkDevice device,
2348 const VkBufferDeviceAddressInfo* pInfo)
2349{
2350 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddress");
2351 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2352 VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return = (VkDeviceAddress)0;
2353 vkGetBufferDeviceAddress_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddress(device, pInfo, true /* do lock */);
2354 return vkGetBufferDeviceAddress_VkDeviceAddress_return;
2355}
2356static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddress(
2357 VkDevice device,
2358 const VkBufferDeviceAddressInfo* pInfo)
2359{
2360 auto resources = ResourceTracker::get();
2361 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2362 {
2363 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddress", "VK_VERSION_1_2");
2364 }
2365 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddress");
2366 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2367 VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return = (VkDeviceAddress)0;
2368 vkGetBufferDeviceAddress_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddress(device, pInfo, true /* do lock */);
2369 return vkGetBufferDeviceAddress_VkDeviceAddress_return;
2370}
2371static uint64_t entry_vkGetBufferOpaqueCaptureAddress(
2372 VkDevice device,
2373 const VkBufferDeviceAddressInfo* pInfo)
2374{
2375 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddress");
2376 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2377 uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2378 vkGetBufferOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2379 return vkGetBufferOpaqueCaptureAddress_uint64_t_return;
2380}
2381static uint64_t dynCheck_entry_vkGetBufferOpaqueCaptureAddress(
2382 VkDevice device,
2383 const VkBufferDeviceAddressInfo* pInfo)
2384{
2385 auto resources = ResourceTracker::get();
2386 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2387 {
2388 sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureAddress", "VK_VERSION_1_2");
2389 }
2390 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddress");
2391 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2392 uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2393 vkGetBufferOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2394 return vkGetBufferOpaqueCaptureAddress_uint64_t_return;
2395}
2396static uint64_t entry_vkGetDeviceMemoryOpaqueCaptureAddress(
2397 VkDevice device,
2398 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
2399{
2400 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddress");
2401 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2402 uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2403 vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2404 return vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return;
2405}
2406static uint64_t dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress(
2407 VkDevice device,
2408 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
2409{
2410 auto resources = ResourceTracker::get();
2411 if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
2412 {
2413 sOnInvalidDynamicallyCheckedCall("vkGetDeviceMemoryOpaqueCaptureAddress", "VK_VERSION_1_2");
2414 }
2415 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddress");
2416 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2417 uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2418 vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, true /* do lock */);
2419 return vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return;
2420}
2421#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002422#ifdef VK_KHR_surface
2423static void entry_vkDestroySurfaceKHR(
2424 VkInstance instance,
2425 VkSurfaceKHR surface,
2426 const VkAllocationCallbacks* pAllocator)
2427{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002428 AEMU_SCOPED_TRACE("vkDestroySurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002429 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002430 vkEnc->vkDestroySurfaceKHR(instance, surface, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002431}
2432static VkResult entry_vkGetPhysicalDeviceSurfaceSupportKHR(
2433 VkPhysicalDevice physicalDevice,
2434 uint32_t queueFamilyIndex,
2435 VkSurfaceKHR surface,
2436 VkBool32* pSupported)
2437{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002438 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002439 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002440 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002441 vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002442 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
2443}
2444static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
2445 VkPhysicalDevice physicalDevice,
2446 VkSurfaceKHR surface,
2447 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
2448{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002449 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002450 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002451 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002452 vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002453 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
2454}
2455static VkResult entry_vkGetPhysicalDeviceSurfaceFormatsKHR(
2456 VkPhysicalDevice physicalDevice,
2457 VkSurfaceKHR surface,
2458 uint32_t* pSurfaceFormatCount,
2459 VkSurfaceFormatKHR* pSurfaceFormats)
2460{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002461 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002462 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002463 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002464 vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002465 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
2466}
2467static VkResult entry_vkGetPhysicalDeviceSurfacePresentModesKHR(
2468 VkPhysicalDevice physicalDevice,
2469 VkSurfaceKHR surface,
2470 uint32_t* pPresentModeCount,
2471 VkPresentModeKHR* pPresentModes)
2472{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002473 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002474 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002475 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002476 vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002477 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
2478}
2479#endif
2480#ifdef VK_KHR_swapchain
2481static VkResult entry_vkCreateSwapchainKHR(
2482 VkDevice device,
2483 const VkSwapchainCreateInfoKHR* pCreateInfo,
2484 const VkAllocationCallbacks* pAllocator,
2485 VkSwapchainKHR* pSwapchain)
2486{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002487 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002488 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002489 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002490 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002491 return vkCreateSwapchainKHR_VkResult_return;
2492}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002493static VkResult dynCheck_entry_vkCreateSwapchainKHR(
2494 VkDevice device,
2495 const VkSwapchainCreateInfoKHR* pCreateInfo,
2496 const VkAllocationCallbacks* pAllocator,
2497 VkSwapchainKHR* pSwapchain)
2498{
2499 auto resources = ResourceTracker::get();
2500 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2501 {
2502 sOnInvalidDynamicallyCheckedCall("vkCreateSwapchainKHR", "VK_KHR_swapchain");
2503 }
2504 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002505 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002506 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002507 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002508 return vkCreateSwapchainKHR_VkResult_return;
2509}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002510static void entry_vkDestroySwapchainKHR(
2511 VkDevice device,
2512 VkSwapchainKHR swapchain,
2513 const VkAllocationCallbacks* pAllocator)
2514{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002515 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002516 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002517 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002518}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002519static void dynCheck_entry_vkDestroySwapchainKHR(
2520 VkDevice device,
2521 VkSwapchainKHR swapchain,
2522 const VkAllocationCallbacks* pAllocator)
2523{
2524 auto resources = ResourceTracker::get();
2525 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2526 {
2527 sOnInvalidDynamicallyCheckedCall("vkDestroySwapchainKHR", "VK_KHR_swapchain");
2528 }
2529 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002530 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002531 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002532}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002533static VkResult entry_vkGetSwapchainImagesKHR(
2534 VkDevice device,
2535 VkSwapchainKHR swapchain,
2536 uint32_t* pSwapchainImageCount,
2537 VkImage* pSwapchainImages)
2538{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002539 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002540 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002541 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002542 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002543 return vkGetSwapchainImagesKHR_VkResult_return;
2544}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002545static VkResult dynCheck_entry_vkGetSwapchainImagesKHR(
2546 VkDevice device,
2547 VkSwapchainKHR swapchain,
2548 uint32_t* pSwapchainImageCount,
2549 VkImage* pSwapchainImages)
2550{
2551 auto resources = ResourceTracker::get();
2552 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2553 {
2554 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainImagesKHR", "VK_KHR_swapchain");
2555 }
2556 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002557 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002558 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002559 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002560 return vkGetSwapchainImagesKHR_VkResult_return;
2561}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002562static VkResult entry_vkAcquireNextImageKHR(
2563 VkDevice device,
2564 VkSwapchainKHR swapchain,
2565 uint64_t timeout,
2566 VkSemaphore semaphore,
2567 VkFence fence,
2568 uint32_t* pImageIndex)
2569{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002570 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002571 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002572 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002573 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002574 return vkAcquireNextImageKHR_VkResult_return;
2575}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002576static VkResult dynCheck_entry_vkAcquireNextImageKHR(
2577 VkDevice device,
2578 VkSwapchainKHR swapchain,
2579 uint64_t timeout,
2580 VkSemaphore semaphore,
2581 VkFence fence,
2582 uint32_t* pImageIndex)
2583{
2584 auto resources = ResourceTracker::get();
2585 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2586 {
2587 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImageKHR", "VK_KHR_swapchain");
2588 }
2589 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002590 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002591 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002592 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002593 return vkAcquireNextImageKHR_VkResult_return;
2594}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002595static VkResult entry_vkQueuePresentKHR(
2596 VkQueue queue,
2597 const VkPresentInfoKHR* pPresentInfo)
2598{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002599 AEMU_SCOPED_TRACE("vkQueuePresentKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002600 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002601 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002602 vkQueuePresentKHR_VkResult_return = vkEnc->vkQueuePresentKHR(queue, pPresentInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002603 return vkQueuePresentKHR_VkResult_return;
2604}
2605static VkResult entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2606 VkDevice device,
2607 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2608{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002609 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002610 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002611 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002612 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002613 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2614}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002615static VkResult dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2616 VkDevice device,
2617 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2618{
2619 auto resources = ResourceTracker::get();
2620 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2621 {
2622 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPresentCapabilitiesKHR", "VK_KHR_swapchain");
2623 }
2624 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002625 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002626 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002627 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002628 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2629}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002630static VkResult entry_vkGetDeviceGroupSurfacePresentModesKHR(
2631 VkDevice device,
2632 VkSurfaceKHR surface,
2633 VkDeviceGroupPresentModeFlagsKHR* pModes)
2634{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002635 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002636 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002637 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002638 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002639 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2640}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002641static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR(
2642 VkDevice device,
2643 VkSurfaceKHR surface,
2644 VkDeviceGroupPresentModeFlagsKHR* pModes)
2645{
2646 auto resources = ResourceTracker::get();
2647 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2648 {
2649 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModesKHR", "VK_KHR_swapchain");
2650 }
2651 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002652 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002653 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002654 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002655 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2656}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002657static VkResult entry_vkGetPhysicalDevicePresentRectanglesKHR(
2658 VkPhysicalDevice physicalDevice,
2659 VkSurfaceKHR surface,
2660 uint32_t* pRectCount,
2661 VkRect2D* pRects)
2662{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002663 AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002664 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002665 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002666 vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = vkEnc->vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002667 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
2668}
2669static VkResult entry_vkAcquireNextImage2KHR(
2670 VkDevice device,
2671 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2672 uint32_t* pImageIndex)
2673{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002674 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002675 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002676 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002677 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002678 return vkAcquireNextImage2KHR_VkResult_return;
2679}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002680static VkResult dynCheck_entry_vkAcquireNextImage2KHR(
2681 VkDevice device,
2682 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2683 uint32_t* pImageIndex)
2684{
2685 auto resources = ResourceTracker::get();
2686 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2687 {
2688 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImage2KHR", "VK_KHR_swapchain");
2689 }
2690 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002691 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002692 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002693 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002694 return vkAcquireNextImage2KHR_VkResult_return;
2695}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002696#endif
2697#ifdef VK_KHR_display
2698static VkResult entry_vkGetPhysicalDeviceDisplayPropertiesKHR(
2699 VkPhysicalDevice physicalDevice,
2700 uint32_t* pPropertyCount,
2701 VkDisplayPropertiesKHR* pProperties)
2702{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002703 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002704 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002705 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002706 vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002707 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
2708}
2709static VkResult entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
2710 VkPhysicalDevice physicalDevice,
2711 uint32_t* pPropertyCount,
2712 VkDisplayPlanePropertiesKHR* pProperties)
2713{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002714 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002715 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002716 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002717 vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002718 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
2719}
2720static VkResult entry_vkGetDisplayPlaneSupportedDisplaysKHR(
2721 VkPhysicalDevice physicalDevice,
2722 uint32_t planeIndex,
2723 uint32_t* pDisplayCount,
2724 VkDisplayKHR* pDisplays)
2725{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002726 AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002727 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002728 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002729 vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = vkEnc->vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002730 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
2731}
2732static VkResult entry_vkGetDisplayModePropertiesKHR(
2733 VkPhysicalDevice physicalDevice,
2734 VkDisplayKHR display,
2735 uint32_t* pPropertyCount,
2736 VkDisplayModePropertiesKHR* pProperties)
2737{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002738 AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002739 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002740 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002741 vkGetDisplayModePropertiesKHR_VkResult_return = vkEnc->vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002742 return vkGetDisplayModePropertiesKHR_VkResult_return;
2743}
2744static VkResult entry_vkCreateDisplayModeKHR(
2745 VkPhysicalDevice physicalDevice,
2746 VkDisplayKHR display,
2747 const VkDisplayModeCreateInfoKHR* pCreateInfo,
2748 const VkAllocationCallbacks* pAllocator,
2749 VkDisplayModeKHR* pMode)
2750{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002751 AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002752 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002753 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002754 vkCreateDisplayModeKHR_VkResult_return = vkEnc->vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002755 return vkCreateDisplayModeKHR_VkResult_return;
2756}
2757static VkResult entry_vkGetDisplayPlaneCapabilitiesKHR(
2758 VkPhysicalDevice physicalDevice,
2759 VkDisplayModeKHR mode,
2760 uint32_t planeIndex,
2761 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
2762{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002763 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002764 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002765 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002766 vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002767 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
2768}
2769static VkResult entry_vkCreateDisplayPlaneSurfaceKHR(
2770 VkInstance instance,
2771 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
2772 const VkAllocationCallbacks* pAllocator,
2773 VkSurfaceKHR* pSurface)
2774{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002775 AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002776 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002777 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002778 vkCreateDisplayPlaneSurfaceKHR_VkResult_return = vkEnc->vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002779 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
2780}
2781#endif
2782#ifdef VK_KHR_display_swapchain
2783static VkResult entry_vkCreateSharedSwapchainsKHR(
2784 VkDevice device,
2785 uint32_t swapchainCount,
2786 const VkSwapchainCreateInfoKHR* pCreateInfos,
2787 const VkAllocationCallbacks* pAllocator,
2788 VkSwapchainKHR* pSwapchains)
2789{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002790 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002791 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002792 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002793 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002794 return vkCreateSharedSwapchainsKHR_VkResult_return;
2795}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002796static VkResult dynCheck_entry_vkCreateSharedSwapchainsKHR(
2797 VkDevice device,
2798 uint32_t swapchainCount,
2799 const VkSwapchainCreateInfoKHR* pCreateInfos,
2800 const VkAllocationCallbacks* pAllocator,
2801 VkSwapchainKHR* pSwapchains)
2802{
2803 auto resources = ResourceTracker::get();
2804 if (!resources->hasDeviceExtension(device, "VK_KHR_display_swapchain"))
2805 {
2806 sOnInvalidDynamicallyCheckedCall("vkCreateSharedSwapchainsKHR", "VK_KHR_display_swapchain");
2807 }
2808 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002809 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002810 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002811 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002812 return vkCreateSharedSwapchainsKHR_VkResult_return;
2813}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002814#endif
2815#ifdef VK_KHR_xlib_surface
2816static VkResult entry_vkCreateXlibSurfaceKHR(
2817 VkInstance instance,
2818 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
2819 const VkAllocationCallbacks* pAllocator,
2820 VkSurfaceKHR* pSurface)
2821{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002822 AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002823 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002824 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002825 vkCreateXlibSurfaceKHR_VkResult_return = vkEnc->vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002826 return vkCreateXlibSurfaceKHR_VkResult_return;
2827}
2828static VkBool32 entry_vkGetPhysicalDeviceXlibPresentationSupportKHR(
2829 VkPhysicalDevice physicalDevice,
2830 uint32_t queueFamilyIndex,
2831 Display* dpy,
2832 VisualID visualID)
2833{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002834 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002835 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002836 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002837 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002838 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
2839}
2840#endif
2841#ifdef VK_KHR_xcb_surface
2842static VkResult entry_vkCreateXcbSurfaceKHR(
2843 VkInstance instance,
2844 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
2845 const VkAllocationCallbacks* pAllocator,
2846 VkSurfaceKHR* pSurface)
2847{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002848 AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002849 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002850 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002851 vkCreateXcbSurfaceKHR_VkResult_return = vkEnc->vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002852 return vkCreateXcbSurfaceKHR_VkResult_return;
2853}
2854static VkBool32 entry_vkGetPhysicalDeviceXcbPresentationSupportKHR(
2855 VkPhysicalDevice physicalDevice,
2856 uint32_t queueFamilyIndex,
2857 xcb_connection_t* connection,
2858 xcb_visualid_t visual_id)
2859{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002860 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002861 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002862 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002863 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002864 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
2865}
2866#endif
2867#ifdef VK_KHR_wayland_surface
2868static VkResult entry_vkCreateWaylandSurfaceKHR(
2869 VkInstance instance,
2870 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
2871 const VkAllocationCallbacks* pAllocator,
2872 VkSurfaceKHR* pSurface)
2873{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002874 AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002875 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002876 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002877 vkCreateWaylandSurfaceKHR_VkResult_return = vkEnc->vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002878 return vkCreateWaylandSurfaceKHR_VkResult_return;
2879}
2880static VkBool32 entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
2881 VkPhysicalDevice physicalDevice,
2882 uint32_t queueFamilyIndex,
2883 wl_display* display)
2884{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002885 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002886 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002887 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002888 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002889 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
2890}
2891#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002892#ifdef VK_KHR_android_surface
2893static VkResult entry_vkCreateAndroidSurfaceKHR(
2894 VkInstance instance,
2895 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
2896 const VkAllocationCallbacks* pAllocator,
2897 VkSurfaceKHR* pSurface)
2898{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002899 AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002900 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002901 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002902 vkCreateAndroidSurfaceKHR_VkResult_return = vkEnc->vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002903 return vkCreateAndroidSurfaceKHR_VkResult_return;
2904}
2905#endif
2906#ifdef VK_KHR_win32_surface
2907static VkResult entry_vkCreateWin32SurfaceKHR(
2908 VkInstance instance,
2909 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
2910 const VkAllocationCallbacks* pAllocator,
2911 VkSurfaceKHR* pSurface)
2912{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002913 AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002914 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002915 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002916 vkCreateWin32SurfaceKHR_VkResult_return = vkEnc->vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002917 return vkCreateWin32SurfaceKHR_VkResult_return;
2918}
2919static VkBool32 entry_vkGetPhysicalDeviceWin32PresentationSupportKHR(
2920 VkPhysicalDevice physicalDevice,
2921 uint32_t queueFamilyIndex)
2922{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002923 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08002924 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002925 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08002926 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002927 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
2928}
2929#endif
2930#ifdef VK_KHR_sampler_mirror_clamp_to_edge
2931#endif
Yilong Li353409a2022-01-04 02:37:56 -08002932#ifdef VK_KHR_video_queue
2933static VkResult entry_vkGetPhysicalDeviceVideoCapabilitiesKHR(
2934 VkPhysicalDevice physicalDevice,
2935 const VkVideoProfileKHR* pVideoProfile,
2936 VkVideoCapabilitiesKHR* pCapabilities)
2937{
2938 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceVideoCapabilitiesKHR");
2939 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2940 VkResult vkGetPhysicalDeviceVideoCapabilitiesKHR_VkResult_return = (VkResult)0;
2941 vkGetPhysicalDeviceVideoCapabilitiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, true /* do lock */);
2942 return vkGetPhysicalDeviceVideoCapabilitiesKHR_VkResult_return;
2943}
2944static VkResult entry_vkGetPhysicalDeviceVideoFormatPropertiesKHR(
2945 VkPhysicalDevice physicalDevice,
2946 const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo,
2947 uint32_t* pVideoFormatPropertyCount,
2948 VkVideoFormatPropertiesKHR* pVideoFormatProperties)
2949{
2950 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceVideoFormatPropertiesKHR");
2951 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2952 VkResult vkGetPhysicalDeviceVideoFormatPropertiesKHR_VkResult_return = (VkResult)0;
2953 vkGetPhysicalDeviceVideoFormatPropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, true /* do lock */);
2954 return vkGetPhysicalDeviceVideoFormatPropertiesKHR_VkResult_return;
2955}
2956static VkResult entry_vkCreateVideoSessionKHR(
2957 VkDevice device,
2958 const VkVideoSessionCreateInfoKHR* pCreateInfo,
2959 const VkAllocationCallbacks* pAllocator,
2960 VkVideoSessionKHR* pVideoSession)
2961{
2962 AEMU_SCOPED_TRACE("vkCreateVideoSessionKHR");
2963 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2964 VkResult vkCreateVideoSessionKHR_VkResult_return = (VkResult)0;
2965 vkCreateVideoSessionKHR_VkResult_return = vkEnc->vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, true /* do lock */);
2966 return vkCreateVideoSessionKHR_VkResult_return;
2967}
2968static VkResult dynCheck_entry_vkCreateVideoSessionKHR(
2969 VkDevice device,
2970 const VkVideoSessionCreateInfoKHR* pCreateInfo,
2971 const VkAllocationCallbacks* pAllocator,
2972 VkVideoSessionKHR* pVideoSession)
2973{
2974 auto resources = ResourceTracker::get();
2975 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
2976 {
2977 sOnInvalidDynamicallyCheckedCall("vkCreateVideoSessionKHR", "VK_KHR_video_queue");
2978 }
2979 AEMU_SCOPED_TRACE("vkCreateVideoSessionKHR");
2980 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2981 VkResult vkCreateVideoSessionKHR_VkResult_return = (VkResult)0;
2982 vkCreateVideoSessionKHR_VkResult_return = vkEnc->vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, true /* do lock */);
2983 return vkCreateVideoSessionKHR_VkResult_return;
2984}
2985static void entry_vkDestroyVideoSessionKHR(
2986 VkDevice device,
2987 VkVideoSessionKHR videoSession,
2988 const VkAllocationCallbacks* pAllocator)
2989{
2990 AEMU_SCOPED_TRACE("vkDestroyVideoSessionKHR");
2991 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
2992 vkEnc->vkDestroyVideoSessionKHR(device, videoSession, pAllocator, true /* do lock */);
2993}
2994static void dynCheck_entry_vkDestroyVideoSessionKHR(
2995 VkDevice device,
2996 VkVideoSessionKHR videoSession,
2997 const VkAllocationCallbacks* pAllocator)
2998{
2999 auto resources = ResourceTracker::get();
3000 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
3001 {
3002 sOnInvalidDynamicallyCheckedCall("vkDestroyVideoSessionKHR", "VK_KHR_video_queue");
3003 }
3004 AEMU_SCOPED_TRACE("vkDestroyVideoSessionKHR");
3005 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3006 vkEnc->vkDestroyVideoSessionKHR(device, videoSession, pAllocator, true /* do lock */);
3007}
3008static VkResult entry_vkGetVideoSessionMemoryRequirementsKHR(
3009 VkDevice device,
3010 VkVideoSessionKHR videoSession,
3011 uint32_t* pVideoSessionMemoryRequirementsCount,
3012 VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements)
3013{
3014 AEMU_SCOPED_TRACE("vkGetVideoSessionMemoryRequirementsKHR");
3015 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3016 VkResult vkGetVideoSessionMemoryRequirementsKHR_VkResult_return = (VkResult)0;
3017 vkGetVideoSessionMemoryRequirementsKHR_VkResult_return = vkEnc->vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pVideoSessionMemoryRequirementsCount, pVideoSessionMemoryRequirements, true /* do lock */);
3018 return vkGetVideoSessionMemoryRequirementsKHR_VkResult_return;
3019}
3020static VkResult dynCheck_entry_vkGetVideoSessionMemoryRequirementsKHR(
3021 VkDevice device,
3022 VkVideoSessionKHR videoSession,
3023 uint32_t* pVideoSessionMemoryRequirementsCount,
3024 VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements)
3025{
3026 auto resources = ResourceTracker::get();
3027 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
3028 {
3029 sOnInvalidDynamicallyCheckedCall("vkGetVideoSessionMemoryRequirementsKHR", "VK_KHR_video_queue");
3030 }
3031 AEMU_SCOPED_TRACE("vkGetVideoSessionMemoryRequirementsKHR");
3032 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3033 VkResult vkGetVideoSessionMemoryRequirementsKHR_VkResult_return = (VkResult)0;
3034 vkGetVideoSessionMemoryRequirementsKHR_VkResult_return = vkEnc->vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pVideoSessionMemoryRequirementsCount, pVideoSessionMemoryRequirements, true /* do lock */);
3035 return vkGetVideoSessionMemoryRequirementsKHR_VkResult_return;
3036}
3037static VkResult entry_vkBindVideoSessionMemoryKHR(
3038 VkDevice device,
3039 VkVideoSessionKHR videoSession,
3040 uint32_t videoSessionBindMemoryCount,
3041 const VkVideoBindMemoryKHR* pVideoSessionBindMemories)
3042{
3043 AEMU_SCOPED_TRACE("vkBindVideoSessionMemoryKHR");
3044 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3045 VkResult vkBindVideoSessionMemoryKHR_VkResult_return = (VkResult)0;
3046 vkBindVideoSessionMemoryKHR_VkResult_return = vkEnc->vkBindVideoSessionMemoryKHR(device, videoSession, videoSessionBindMemoryCount, pVideoSessionBindMemories, true /* do lock */);
3047 return vkBindVideoSessionMemoryKHR_VkResult_return;
3048}
3049static VkResult dynCheck_entry_vkBindVideoSessionMemoryKHR(
3050 VkDevice device,
3051 VkVideoSessionKHR videoSession,
3052 uint32_t videoSessionBindMemoryCount,
3053 const VkVideoBindMemoryKHR* pVideoSessionBindMemories)
3054{
3055 auto resources = ResourceTracker::get();
3056 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
3057 {
3058 sOnInvalidDynamicallyCheckedCall("vkBindVideoSessionMemoryKHR", "VK_KHR_video_queue");
3059 }
3060 AEMU_SCOPED_TRACE("vkBindVideoSessionMemoryKHR");
3061 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3062 VkResult vkBindVideoSessionMemoryKHR_VkResult_return = (VkResult)0;
3063 vkBindVideoSessionMemoryKHR_VkResult_return = vkEnc->vkBindVideoSessionMemoryKHR(device, videoSession, videoSessionBindMemoryCount, pVideoSessionBindMemories, true /* do lock */);
3064 return vkBindVideoSessionMemoryKHR_VkResult_return;
3065}
3066static VkResult entry_vkCreateVideoSessionParametersKHR(
3067 VkDevice device,
3068 const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
3069 const VkAllocationCallbacks* pAllocator,
3070 VkVideoSessionParametersKHR* pVideoSessionParameters)
3071{
3072 AEMU_SCOPED_TRACE("vkCreateVideoSessionParametersKHR");
3073 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3074 VkResult vkCreateVideoSessionParametersKHR_VkResult_return = (VkResult)0;
3075 vkCreateVideoSessionParametersKHR_VkResult_return = vkEnc->vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, true /* do lock */);
3076 return vkCreateVideoSessionParametersKHR_VkResult_return;
3077}
3078static VkResult dynCheck_entry_vkCreateVideoSessionParametersKHR(
3079 VkDevice device,
3080 const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
3081 const VkAllocationCallbacks* pAllocator,
3082 VkVideoSessionParametersKHR* pVideoSessionParameters)
3083{
3084 auto resources = ResourceTracker::get();
3085 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
3086 {
3087 sOnInvalidDynamicallyCheckedCall("vkCreateVideoSessionParametersKHR", "VK_KHR_video_queue");
3088 }
3089 AEMU_SCOPED_TRACE("vkCreateVideoSessionParametersKHR");
3090 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3091 VkResult vkCreateVideoSessionParametersKHR_VkResult_return = (VkResult)0;
3092 vkCreateVideoSessionParametersKHR_VkResult_return = vkEnc->vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, true /* do lock */);
3093 return vkCreateVideoSessionParametersKHR_VkResult_return;
3094}
3095static VkResult entry_vkUpdateVideoSessionParametersKHR(
3096 VkDevice device,
3097 VkVideoSessionParametersKHR videoSessionParameters,
3098 const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo)
3099{
3100 AEMU_SCOPED_TRACE("vkUpdateVideoSessionParametersKHR");
3101 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3102 VkResult vkUpdateVideoSessionParametersKHR_VkResult_return = (VkResult)0;
3103 vkUpdateVideoSessionParametersKHR_VkResult_return = vkEnc->vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, true /* do lock */);
3104 return vkUpdateVideoSessionParametersKHR_VkResult_return;
3105}
3106static VkResult dynCheck_entry_vkUpdateVideoSessionParametersKHR(
3107 VkDevice device,
3108 VkVideoSessionParametersKHR videoSessionParameters,
3109 const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo)
3110{
3111 auto resources = ResourceTracker::get();
3112 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
3113 {
3114 sOnInvalidDynamicallyCheckedCall("vkUpdateVideoSessionParametersKHR", "VK_KHR_video_queue");
3115 }
3116 AEMU_SCOPED_TRACE("vkUpdateVideoSessionParametersKHR");
3117 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3118 VkResult vkUpdateVideoSessionParametersKHR_VkResult_return = (VkResult)0;
3119 vkUpdateVideoSessionParametersKHR_VkResult_return = vkEnc->vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, true /* do lock */);
3120 return vkUpdateVideoSessionParametersKHR_VkResult_return;
3121}
3122static void entry_vkDestroyVideoSessionParametersKHR(
3123 VkDevice device,
3124 VkVideoSessionParametersKHR videoSessionParameters,
3125 const VkAllocationCallbacks* pAllocator)
3126{
3127 AEMU_SCOPED_TRACE("vkDestroyVideoSessionParametersKHR");
3128 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3129 vkEnc->vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, true /* do lock */);
3130}
3131static void dynCheck_entry_vkDestroyVideoSessionParametersKHR(
3132 VkDevice device,
3133 VkVideoSessionParametersKHR videoSessionParameters,
3134 const VkAllocationCallbacks* pAllocator)
3135{
3136 auto resources = ResourceTracker::get();
3137 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
3138 {
3139 sOnInvalidDynamicallyCheckedCall("vkDestroyVideoSessionParametersKHR", "VK_KHR_video_queue");
3140 }
3141 AEMU_SCOPED_TRACE("vkDestroyVideoSessionParametersKHR");
3142 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
3143 vkEnc->vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, true /* do lock */);
3144}
3145static void entry_vkCmdBeginVideoCodingKHR(
3146 VkCommandBuffer commandBuffer,
3147 const VkVideoBeginCodingInfoKHR* pBeginInfo)
3148{
3149 AEMU_SCOPED_TRACE("vkCmdBeginVideoCodingKHR");
3150 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3151 vkEnc->vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, true /* do lock */);
3152}
Yahan Zhouf183ac62022-04-13 11:10:26 -07003153static void dynCheck_entry_vkCmdBeginVideoCodingKHR(
3154 VkCommandBuffer commandBuffer,
3155 const VkVideoBeginCodingInfoKHR* pBeginInfo)
3156{
3157 auto resources = ResourceTracker::get();
3158 VkDevice device = resources->getDevice(commandBuffer);;
3159 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
3160 {
3161 sOnInvalidDynamicallyCheckedCall("vkCmdBeginVideoCodingKHR", "VK_KHR_video_queue");
3162 }
3163 AEMU_SCOPED_TRACE("vkCmdBeginVideoCodingKHR");
3164 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3165 vkEnc->vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, true /* do lock */);
3166}
Yilong Li353409a2022-01-04 02:37:56 -08003167static void entry_vkCmdEndVideoCodingKHR(
3168 VkCommandBuffer commandBuffer,
3169 const VkVideoEndCodingInfoKHR* pEndCodingInfo)
3170{
3171 AEMU_SCOPED_TRACE("vkCmdEndVideoCodingKHR");
3172 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3173 vkEnc->vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, true /* do lock */);
3174}
Yahan Zhouf183ac62022-04-13 11:10:26 -07003175static void dynCheck_entry_vkCmdEndVideoCodingKHR(
3176 VkCommandBuffer commandBuffer,
3177 const VkVideoEndCodingInfoKHR* pEndCodingInfo)
3178{
3179 auto resources = ResourceTracker::get();
3180 VkDevice device = resources->getDevice(commandBuffer);;
3181 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
3182 {
3183 sOnInvalidDynamicallyCheckedCall("vkCmdEndVideoCodingKHR", "VK_KHR_video_queue");
3184 }
3185 AEMU_SCOPED_TRACE("vkCmdEndVideoCodingKHR");
3186 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3187 vkEnc->vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, true /* do lock */);
3188}
Yilong Li353409a2022-01-04 02:37:56 -08003189static void entry_vkCmdControlVideoCodingKHR(
3190 VkCommandBuffer commandBuffer,
3191 const VkVideoCodingControlInfoKHR* pCodingControlInfo)
3192{
3193 AEMU_SCOPED_TRACE("vkCmdControlVideoCodingKHR");
3194 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3195 vkEnc->vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, true /* do lock */);
3196}
Yahan Zhouf183ac62022-04-13 11:10:26 -07003197static void dynCheck_entry_vkCmdControlVideoCodingKHR(
3198 VkCommandBuffer commandBuffer,
3199 const VkVideoCodingControlInfoKHR* pCodingControlInfo)
3200{
3201 auto resources = ResourceTracker::get();
3202 VkDevice device = resources->getDevice(commandBuffer);;
3203 if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
3204 {
3205 sOnInvalidDynamicallyCheckedCall("vkCmdControlVideoCodingKHR", "VK_KHR_video_queue");
3206 }
3207 AEMU_SCOPED_TRACE("vkCmdControlVideoCodingKHR");
3208 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3209 vkEnc->vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, true /* do lock */);
3210}
Yilong Li353409a2022-01-04 02:37:56 -08003211#endif
3212#ifdef VK_KHR_video_decode_queue
3213static void entry_vkCmdDecodeVideoKHR(
3214 VkCommandBuffer commandBuffer,
3215 const VkVideoDecodeInfoKHR* pFrameInfo)
3216{
3217 AEMU_SCOPED_TRACE("vkCmdDecodeVideoKHR");
3218 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3219 vkEnc->vkCmdDecodeVideoKHR(commandBuffer, pFrameInfo, true /* do lock */);
3220}
Yahan Zhouf183ac62022-04-13 11:10:26 -07003221static void dynCheck_entry_vkCmdDecodeVideoKHR(
3222 VkCommandBuffer commandBuffer,
3223 const VkVideoDecodeInfoKHR* pFrameInfo)
3224{
3225 auto resources = ResourceTracker::get();
3226 VkDevice device = resources->getDevice(commandBuffer);;
3227 if (!resources->hasDeviceExtension(device, "VK_KHR_video_decode_queue"))
3228 {
3229 sOnInvalidDynamicallyCheckedCall("vkCmdDecodeVideoKHR", "VK_KHR_video_decode_queue");
3230 }
3231 AEMU_SCOPED_TRACE("vkCmdDecodeVideoKHR");
3232 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3233 vkEnc->vkCmdDecodeVideoKHR(commandBuffer, pFrameInfo, true /* do lock */);
3234}
Yilong Li353409a2022-01-04 02:37:56 -08003235#endif
3236#ifdef VK_KHR_dynamic_rendering
3237static void entry_vkCmdBeginRenderingKHR(
3238 VkCommandBuffer commandBuffer,
3239 const VkRenderingInfoKHR* pRenderingInfo)
3240{
3241 AEMU_SCOPED_TRACE("vkCmdBeginRenderingKHR");
3242 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3243 vkEnc->vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, true /* do lock */);
3244}
Yahan Zhouf183ac62022-04-13 11:10:26 -07003245static void dynCheck_entry_vkCmdBeginRenderingKHR(
3246 VkCommandBuffer commandBuffer,
3247 const VkRenderingInfoKHR* pRenderingInfo)
3248{
3249 auto resources = ResourceTracker::get();
3250 VkDevice device = resources->getDevice(commandBuffer);;
3251 if (!resources->hasDeviceExtension(device, "VK_KHR_dynamic_rendering"))
3252 {
3253 sOnInvalidDynamicallyCheckedCall("vkCmdBeginRenderingKHR", "VK_KHR_dynamic_rendering");
3254 }
3255 AEMU_SCOPED_TRACE("vkCmdBeginRenderingKHR");
3256 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3257 vkEnc->vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, true /* do lock */);
3258}
Yilong Li353409a2022-01-04 02:37:56 -08003259static void entry_vkCmdEndRenderingKHR(
3260 VkCommandBuffer commandBuffer)
3261{
3262 AEMU_SCOPED_TRACE("vkCmdEndRenderingKHR");
3263 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3264 vkEnc->vkCmdEndRenderingKHR(commandBuffer, true /* do lock */);
3265}
Yahan Zhouf183ac62022-04-13 11:10:26 -07003266static void dynCheck_entry_vkCmdEndRenderingKHR(
3267 VkCommandBuffer commandBuffer)
3268{
3269 auto resources = ResourceTracker::get();
3270 VkDevice device = resources->getDevice(commandBuffer);;
3271 if (!resources->hasDeviceExtension(device, "VK_KHR_dynamic_rendering"))
3272 {
3273 sOnInvalidDynamicallyCheckedCall("vkCmdEndRenderingKHR", "VK_KHR_dynamic_rendering");
3274 }
3275 AEMU_SCOPED_TRACE("vkCmdEndRenderingKHR");
3276 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3277 vkEnc->vkCmdEndRenderingKHR(commandBuffer, true /* do lock */);
3278}
Yilong Li353409a2022-01-04 02:37:56 -08003279#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003280#ifdef VK_KHR_multiview
3281#endif
3282#ifdef VK_KHR_get_physical_device_properties2
3283static void entry_vkGetPhysicalDeviceFeatures2KHR(
3284 VkPhysicalDevice physicalDevice,
3285 VkPhysicalDeviceFeatures2* pFeatures)
3286{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003287 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003288 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003289 vkEnc->vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003290}
3291static void entry_vkGetPhysicalDeviceProperties2KHR(
3292 VkPhysicalDevice physicalDevice,
3293 VkPhysicalDeviceProperties2* pProperties)
3294{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003295 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003296 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003297 vkEnc->vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003298}
3299static void entry_vkGetPhysicalDeviceFormatProperties2KHR(
3300 VkPhysicalDevice physicalDevice,
3301 VkFormat format,
3302 VkFormatProperties2* pFormatProperties)
3303{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003304 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003305 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003306 vkEnc->vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003307}
3308static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2KHR(
3309 VkPhysicalDevice physicalDevice,
3310 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
3311 VkImageFormatProperties2* pImageFormatProperties)
3312{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003313 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003314 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003315 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07003316 auto resources = ResourceTracker::get();
3317 vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2KHR(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003318 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
3319}
3320static void entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
3321 VkPhysicalDevice physicalDevice,
3322 uint32_t* pQueueFamilyPropertyCount,
3323 VkQueueFamilyProperties2* pQueueFamilyProperties)
3324{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003325 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003326 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003327 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003328}
3329static void entry_vkGetPhysicalDeviceMemoryProperties2KHR(
3330 VkPhysicalDevice physicalDevice,
3331 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
3332{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003333 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003334 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003335 vkEnc->vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003336}
3337static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
3338 VkPhysicalDevice physicalDevice,
3339 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
3340 uint32_t* pPropertyCount,
3341 VkSparseImageFormatProperties2* pProperties)
3342{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003343 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003344 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003345 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003346}
3347#endif
3348#ifdef VK_KHR_device_group
3349static void entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
3350 VkDevice device,
3351 uint32_t heapIndex,
3352 uint32_t localDeviceIndex,
3353 uint32_t remoteDeviceIndex,
3354 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
3355{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003356 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003357 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003358 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003359}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003360static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
3361 VkDevice device,
3362 uint32_t heapIndex,
3363 uint32_t localDeviceIndex,
3364 uint32_t remoteDeviceIndex,
3365 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
3366{
3367 auto resources = ResourceTracker::get();
3368 if (!resources->hasDeviceExtension(device, "VK_KHR_device_group"))
3369 {
3370 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeaturesKHR", "VK_KHR_device_group");
3371 }
3372 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003373 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003374 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003375}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003376static void entry_vkCmdSetDeviceMaskKHR(
3377 VkCommandBuffer commandBuffer,
3378 uint32_t deviceMask)
3379{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003380 AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003381 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003382 vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003383}
Yahan Zhouf183ac62022-04-13 11:10:26 -07003384static void dynCheck_entry_vkCmdSetDeviceMaskKHR(
3385 VkCommandBuffer commandBuffer,
3386 uint32_t deviceMask)
3387{
3388 auto resources = ResourceTracker::get();
3389 VkDevice device = resources->getDevice(commandBuffer);;
3390 if (!resources->hasDeviceExtension(device, "VK_KHR_device_group"))
3391 {
3392 sOnInvalidDynamicallyCheckedCall("vkCmdSetDeviceMaskKHR", "VK_KHR_device_group");
3393 }
3394 AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR");
3395 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3396 vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, true /* do lock */);
3397}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003398static void entry_vkCmdDispatchBaseKHR(
3399 VkCommandBuffer commandBuffer,
3400 uint32_t baseGroupX,
3401 uint32_t baseGroupY,
3402 uint32_t baseGroupZ,
3403 uint32_t groupCountX,
3404 uint32_t groupCountY,
3405 uint32_t groupCountZ)
3406{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003407 AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003408 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003409 vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003410}
Yahan Zhouf183ac62022-04-13 11:10:26 -07003411static void dynCheck_entry_vkCmdDispatchBaseKHR(
3412 VkCommandBuffer commandBuffer,
3413 uint32_t baseGroupX,
3414 uint32_t baseGroupY,
3415 uint32_t baseGroupZ,
3416 uint32_t groupCountX,
3417 uint32_t groupCountY,
3418 uint32_t groupCountZ)
3419{
3420 auto resources = ResourceTracker::get();
3421 VkDevice device = resources->getDevice(commandBuffer);;
3422 if (!resources->hasDeviceExtension(device, "VK_KHR_device_group"))
3423 {
3424 sOnInvalidDynamicallyCheckedCall("vkCmdDispatchBaseKHR", "VK_KHR_device_group");
3425 }
3426 AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR");
3427 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3428 vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
3429}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003430#endif
3431#ifdef VK_KHR_shader_draw_parameters
3432#endif
3433#ifdef VK_KHR_maintenance1
3434static void entry_vkTrimCommandPoolKHR(
3435 VkDevice device,
3436 VkCommandPool commandPool,
3437 VkCommandPoolTrimFlags flags)
3438{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003439 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003440 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003441 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003442}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003443static void dynCheck_entry_vkTrimCommandPoolKHR(
3444 VkDevice device,
3445 VkCommandPool commandPool,
3446 VkCommandPoolTrimFlags flags)
3447{
3448 auto resources = ResourceTracker::get();
3449 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance1"))
3450 {
3451 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPoolKHR", "VK_KHR_maintenance1");
3452 }
3453 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003454 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003455 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003456}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003457#endif
3458#ifdef VK_KHR_device_group_creation
3459static VkResult entry_vkEnumeratePhysicalDeviceGroupsKHR(
3460 VkInstance instance,
3461 uint32_t* pPhysicalDeviceGroupCount,
3462 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
3463{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003464 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003465 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003466 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003467 vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003468 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
3469}
3470#endif
3471#ifdef VK_KHR_external_memory_capabilities
3472static void entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
3473 VkPhysicalDevice physicalDevice,
3474 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
3475 VkExternalBufferProperties* pExternalBufferProperties)
3476{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003477 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003478 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003479 vkEnc->vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003480}
3481#endif
3482#ifdef VK_KHR_external_memory
3483#endif
3484#ifdef VK_KHR_external_memory_win32
3485static VkResult entry_vkGetMemoryWin32HandleKHR(
3486 VkDevice device,
3487 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3488 HANDLE* pHandle)
3489{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003490 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003491 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003492 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003493 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003494 return vkGetMemoryWin32HandleKHR_VkResult_return;
3495}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003496static VkResult dynCheck_entry_vkGetMemoryWin32HandleKHR(
3497 VkDevice device,
3498 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3499 HANDLE* pHandle)
3500{
3501 auto resources = ResourceTracker::get();
3502 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
3503 {
3504 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleKHR", "VK_KHR_external_memory_win32");
3505 }
3506 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003507 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003508 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003509 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003510 return vkGetMemoryWin32HandleKHR_VkResult_return;
3511}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003512static VkResult entry_vkGetMemoryWin32HandlePropertiesKHR(
3513 VkDevice device,
3514 VkExternalMemoryHandleTypeFlagBits handleType,
3515 HANDLE handle,
3516 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
3517{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003518 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003519 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003520 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003521 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003522 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
3523}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003524static VkResult dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR(
3525 VkDevice device,
3526 VkExternalMemoryHandleTypeFlagBits handleType,
3527 HANDLE handle,
3528 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
3529{
3530 auto resources = ResourceTracker::get();
3531 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
3532 {
3533 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandlePropertiesKHR", "VK_KHR_external_memory_win32");
3534 }
3535 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003536 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003537 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003538 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003539 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
3540}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003541#endif
3542#ifdef VK_KHR_external_memory_fd
3543static VkResult entry_vkGetMemoryFdKHR(
3544 VkDevice device,
3545 const VkMemoryGetFdInfoKHR* pGetFdInfo,
3546 int* pFd)
3547{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003548 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003549 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003550 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003551 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003552 return vkGetMemoryFdKHR_VkResult_return;
3553}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003554static VkResult dynCheck_entry_vkGetMemoryFdKHR(
3555 VkDevice device,
3556 const VkMemoryGetFdInfoKHR* pGetFdInfo,
3557 int* pFd)
3558{
3559 auto resources = ResourceTracker::get();
3560 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
3561 {
3562 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdKHR", "VK_KHR_external_memory_fd");
3563 }
3564 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003565 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003566 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003567 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003568 return vkGetMemoryFdKHR_VkResult_return;
3569}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003570static VkResult entry_vkGetMemoryFdPropertiesKHR(
3571 VkDevice device,
3572 VkExternalMemoryHandleTypeFlagBits handleType,
3573 int fd,
3574 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
3575{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003576 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003577 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003578 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003579 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003580 return vkGetMemoryFdPropertiesKHR_VkResult_return;
3581}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003582static VkResult dynCheck_entry_vkGetMemoryFdPropertiesKHR(
3583 VkDevice device,
3584 VkExternalMemoryHandleTypeFlagBits handleType,
3585 int fd,
3586 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
3587{
3588 auto resources = ResourceTracker::get();
3589 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
3590 {
3591 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdPropertiesKHR", "VK_KHR_external_memory_fd");
3592 }
3593 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003594 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003595 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003596 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003597 return vkGetMemoryFdPropertiesKHR_VkResult_return;
3598}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003599#endif
3600#ifdef VK_KHR_win32_keyed_mutex
3601#endif
3602#ifdef VK_KHR_external_semaphore_capabilities
3603static void entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
3604 VkPhysicalDevice physicalDevice,
3605 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
3606 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
3607{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003608 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003609 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003610 vkEnc->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003611}
3612#endif
3613#ifdef VK_KHR_external_semaphore
3614#endif
3615#ifdef VK_KHR_external_semaphore_win32
3616static VkResult entry_vkImportSemaphoreWin32HandleKHR(
3617 VkDevice device,
3618 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
3619{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003620 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003621 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003622 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003623 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003624 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
3625}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003626static VkResult dynCheck_entry_vkImportSemaphoreWin32HandleKHR(
3627 VkDevice device,
3628 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
3629{
3630 auto resources = ResourceTracker::get();
3631 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
3632 {
3633 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
3634 }
3635 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003636 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003637 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003638 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003639 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
3640}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003641static VkResult entry_vkGetSemaphoreWin32HandleKHR(
3642 VkDevice device,
3643 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3644 HANDLE* pHandle)
3645{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003646 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003647 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003648 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003649 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003650 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
3651}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003652static VkResult dynCheck_entry_vkGetSemaphoreWin32HandleKHR(
3653 VkDevice device,
3654 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3655 HANDLE* pHandle)
3656{
3657 auto resources = ResourceTracker::get();
3658 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
3659 {
3660 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
3661 }
3662 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003663 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003664 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003665 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003666 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
3667}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003668#endif
3669#ifdef VK_KHR_external_semaphore_fd
3670static VkResult entry_vkImportSemaphoreFdKHR(
3671 VkDevice device,
3672 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
3673{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003674 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003675 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003676 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08003677 auto resources = ResourceTracker::get();
3678 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003679 return vkImportSemaphoreFdKHR_VkResult_return;
3680}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003681static VkResult dynCheck_entry_vkImportSemaphoreFdKHR(
3682 VkDevice device,
3683 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
3684{
3685 auto resources = ResourceTracker::get();
3686 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3687 {
3688 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3689 }
3690 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003691 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003692 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
3693 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
3694 return vkImportSemaphoreFdKHR_VkResult_return;
3695}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003696static VkResult entry_vkGetSemaphoreFdKHR(
3697 VkDevice device,
3698 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3699 int* pFd)
3700{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003701 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003702 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003703 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08003704 auto resources = ResourceTracker::get();
3705 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003706 return vkGetSemaphoreFdKHR_VkResult_return;
3707}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003708static VkResult dynCheck_entry_vkGetSemaphoreFdKHR(
3709 VkDevice device,
3710 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3711 int* pFd)
3712{
3713 auto resources = ResourceTracker::get();
3714 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3715 {
3716 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3717 }
3718 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003719 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003720 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
3721 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3722 return vkGetSemaphoreFdKHR_VkResult_return;
3723}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003724#endif
3725#ifdef VK_KHR_push_descriptor
3726static void entry_vkCmdPushDescriptorSetKHR(
3727 VkCommandBuffer commandBuffer,
3728 VkPipelineBindPoint pipelineBindPoint,
3729 VkPipelineLayout layout,
3730 uint32_t set,
3731 uint32_t descriptorWriteCount,
3732 const VkWriteDescriptorSet* pDescriptorWrites)
3733{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003734 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003735 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003736 vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003737}
Yahan Zhouf183ac62022-04-13 11:10:26 -07003738static void dynCheck_entry_vkCmdPushDescriptorSetKHR(
3739 VkCommandBuffer commandBuffer,
3740 VkPipelineBindPoint pipelineBindPoint,
3741 VkPipelineLayout layout,
3742 uint32_t set,
3743 uint32_t descriptorWriteCount,
3744 const VkWriteDescriptorSet* pDescriptorWrites)
3745{
3746 auto resources = ResourceTracker::get();
3747 VkDevice device = resources->getDevice(commandBuffer);;
3748 if (!resources->hasDeviceExtension(device, "VK_KHR_push_descriptor"))
3749 {
3750 sOnInvalidDynamicallyCheckedCall("vkCmdPushDescriptorSetKHR", "VK_KHR_push_descriptor");
3751 }
3752 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR");
3753 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3754 vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, true /* do lock */);
3755}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003756static void entry_vkCmdPushDescriptorSetWithTemplateKHR(
3757 VkCommandBuffer commandBuffer,
3758 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3759 VkPipelineLayout layout,
3760 uint32_t set,
3761 const void* pData)
3762{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003763 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003764 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003765 vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003766}
Yahan Zhouf183ac62022-04-13 11:10:26 -07003767static void dynCheck_entry_vkCmdPushDescriptorSetWithTemplateKHR(
3768 VkCommandBuffer commandBuffer,
3769 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3770 VkPipelineLayout layout,
3771 uint32_t set,
3772 const void* pData)
3773{
3774 auto resources = ResourceTracker::get();
3775 VkDevice device = resources->getDevice(commandBuffer);;
3776 if (!resources->hasDeviceExtension(device, "VK_KHR_push_descriptor"))
3777 {
3778 sOnInvalidDynamicallyCheckedCall("vkCmdPushDescriptorSetWithTemplateKHR", "VK_KHR_push_descriptor");
3779 }
3780 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR");
3781 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3782 vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, true /* do lock */);
3783}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003784#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003785#ifdef VK_KHR_shader_float16_int8
3786#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003787#ifdef VK_KHR_16bit_storage
3788#endif
3789#ifdef VK_KHR_incremental_present
3790#endif
3791#ifdef VK_KHR_descriptor_update_template
3792static VkResult entry_vkCreateDescriptorUpdateTemplateKHR(
3793 VkDevice device,
3794 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3795 const VkAllocationCallbacks* pAllocator,
3796 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3797{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003798 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003799 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003800 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003801 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003802 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3803}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003804static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR(
3805 VkDevice device,
3806 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3807 const VkAllocationCallbacks* pAllocator,
3808 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3809{
3810 auto resources = ResourceTracker::get();
3811 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3812 {
3813 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3814 }
3815 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003816 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003817 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003818 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003819 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3820}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003821static void entry_vkDestroyDescriptorUpdateTemplateKHR(
3822 VkDevice device,
3823 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3824 const VkAllocationCallbacks* pAllocator)
3825{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003826 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003827 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003828 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003829}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003830static void dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR(
3831 VkDevice device,
3832 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3833 const VkAllocationCallbacks* pAllocator)
3834{
3835 auto resources = ResourceTracker::get();
3836 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3837 {
3838 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3839 }
3840 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003841 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003842 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003843}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003844static void entry_vkUpdateDescriptorSetWithTemplateKHR(
3845 VkDevice device,
3846 VkDescriptorSet descriptorSet,
3847 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3848 const void* pData)
3849{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003850 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003851 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003852 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003853}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003854static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR(
3855 VkDevice device,
3856 VkDescriptorSet descriptorSet,
3857 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3858 const void* pData)
3859{
3860 auto resources = ResourceTracker::get();
3861 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3862 {
3863 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateKHR", "VK_KHR_descriptor_update_template");
3864 }
3865 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003866 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003867 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003868}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003869#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08003870#ifdef VK_KHR_imageless_framebuffer
3871#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003872#ifdef VK_KHR_create_renderpass2
3873static VkResult entry_vkCreateRenderPass2KHR(
3874 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08003875 const VkRenderPassCreateInfo2* pCreateInfo,
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003876 const VkAllocationCallbacks* pAllocator,
3877 VkRenderPass* pRenderPass)
3878{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003879 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003880 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003881 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003882 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003883 return vkCreateRenderPass2KHR_VkResult_return;
3884}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003885static VkResult dynCheck_entry_vkCreateRenderPass2KHR(
3886 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08003887 const VkRenderPassCreateInfo2* pCreateInfo,
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003888 const VkAllocationCallbacks* pAllocator,
3889 VkRenderPass* pRenderPass)
3890{
3891 auto resources = ResourceTracker::get();
3892 if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"))
3893 {
3894 sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2KHR", "VK_KHR_create_renderpass2");
3895 }
3896 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003897 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003898 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003899 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003900 return vkCreateRenderPass2KHR_VkResult_return;
3901}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003902static void entry_vkCmdBeginRenderPass2KHR(
3903 VkCommandBuffer commandBuffer,
3904 const VkRenderPassBeginInfo* pRenderPassBegin,
Yilong Lia8d45f12021-02-07 02:30:21 -08003905 const VkSubpassBeginInfo* pSubpassBeginInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003906{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003907 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003908 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003909 vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003910}
Yahan Zhouf183ac62022-04-13 11:10:26 -07003911static void dynCheck_entry_vkCmdBeginRenderPass2KHR(
3912 VkCommandBuffer commandBuffer,
3913 const VkRenderPassBeginInfo* pRenderPassBegin,
3914 const VkSubpassBeginInfo* pSubpassBeginInfo)
3915{
3916 auto resources = ResourceTracker::get();
3917 VkDevice device = resources->getDevice(commandBuffer);;
3918 if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"))
3919 {
3920 sOnInvalidDynamicallyCheckedCall("vkCmdBeginRenderPass2KHR", "VK_KHR_create_renderpass2");
3921 }
3922 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR");
3923 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3924 vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
3925}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003926static void entry_vkCmdNextSubpass2KHR(
3927 VkCommandBuffer commandBuffer,
Yilong Lia8d45f12021-02-07 02:30:21 -08003928 const VkSubpassBeginInfo* pSubpassBeginInfo,
3929 const VkSubpassEndInfo* pSubpassEndInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003930{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003931 AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003932 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003933 vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003934}
Yahan Zhouf183ac62022-04-13 11:10:26 -07003935static void dynCheck_entry_vkCmdNextSubpass2KHR(
3936 VkCommandBuffer commandBuffer,
3937 const VkSubpassBeginInfo* pSubpassBeginInfo,
3938 const VkSubpassEndInfo* pSubpassEndInfo)
3939{
3940 auto resources = ResourceTracker::get();
3941 VkDevice device = resources->getDevice(commandBuffer);;
3942 if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"))
3943 {
3944 sOnInvalidDynamicallyCheckedCall("vkCmdNextSubpass2KHR", "VK_KHR_create_renderpass2");
3945 }
3946 AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR");
3947 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3948 vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
3949}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003950static void entry_vkCmdEndRenderPass2KHR(
3951 VkCommandBuffer commandBuffer,
Yilong Lia8d45f12021-02-07 02:30:21 -08003952 const VkSubpassEndInfo* pSubpassEndInfo)
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003953{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003954 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003955 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003956 vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003957}
Yahan Zhouf183ac62022-04-13 11:10:26 -07003958static void dynCheck_entry_vkCmdEndRenderPass2KHR(
3959 VkCommandBuffer commandBuffer,
3960 const VkSubpassEndInfo* pSubpassEndInfo)
3961{
3962 auto resources = ResourceTracker::get();
3963 VkDevice device = resources->getDevice(commandBuffer);;
3964 if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"))
3965 {
3966 sOnInvalidDynamicallyCheckedCall("vkCmdEndRenderPass2KHR", "VK_KHR_create_renderpass2");
3967 }
3968 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR");
3969 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
3970 vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, true /* do lock */);
3971}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003972#endif
3973#ifdef VK_KHR_shared_presentable_image
3974static VkResult entry_vkGetSwapchainStatusKHR(
3975 VkDevice device,
3976 VkSwapchainKHR swapchain)
3977{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003978 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003979 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003980 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003981 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003982 return vkGetSwapchainStatusKHR_VkResult_return;
3983}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003984static VkResult dynCheck_entry_vkGetSwapchainStatusKHR(
3985 VkDevice device,
3986 VkSwapchainKHR swapchain)
3987{
3988 auto resources = ResourceTracker::get();
3989 if (!resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image"))
3990 {
3991 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainStatusKHR", "VK_KHR_shared_presentable_image");
3992 }
3993 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08003994 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003995 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08003996 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003997 return vkGetSwapchainStatusKHR_VkResult_return;
3998}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003999#endif
4000#ifdef VK_KHR_external_fence_capabilities
4001static void entry_vkGetPhysicalDeviceExternalFencePropertiesKHR(
4002 VkPhysicalDevice physicalDevice,
4003 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
4004 VkExternalFenceProperties* pExternalFenceProperties)
4005{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004006 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004007 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07004008 auto resources = ResourceTracker::get();
4009 resources->on_vkGetPhysicalDeviceExternalFencePropertiesKHR(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004010}
4011#endif
4012#ifdef VK_KHR_external_fence
4013#endif
4014#ifdef VK_KHR_external_fence_win32
4015static VkResult entry_vkImportFenceWin32HandleKHR(
4016 VkDevice device,
4017 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
4018{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004019 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004020 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004021 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004022 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004023 return vkImportFenceWin32HandleKHR_VkResult_return;
4024}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004025static VkResult dynCheck_entry_vkImportFenceWin32HandleKHR(
4026 VkDevice device,
4027 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
4028{
4029 auto resources = ResourceTracker::get();
4030 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
4031 {
4032 sOnInvalidDynamicallyCheckedCall("vkImportFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
4033 }
4034 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004035 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004036 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004037 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004038 return vkImportFenceWin32HandleKHR_VkResult_return;
4039}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004040static VkResult entry_vkGetFenceWin32HandleKHR(
4041 VkDevice device,
4042 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
4043 HANDLE* pHandle)
4044{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004045 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004046 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004047 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004048 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004049 return vkGetFenceWin32HandleKHR_VkResult_return;
4050}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004051static VkResult dynCheck_entry_vkGetFenceWin32HandleKHR(
4052 VkDevice device,
4053 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
4054 HANDLE* pHandle)
4055{
4056 auto resources = ResourceTracker::get();
4057 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
4058 {
4059 sOnInvalidDynamicallyCheckedCall("vkGetFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
4060 }
4061 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004062 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004063 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004064 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004065 return vkGetFenceWin32HandleKHR_VkResult_return;
4066}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004067#endif
4068#ifdef VK_KHR_external_fence_fd
4069static VkResult entry_vkImportFenceFdKHR(
4070 VkDevice device,
4071 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
4072{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004073 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004074 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004075 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07004076 auto resources = ResourceTracker::get();
4077 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004078 return vkImportFenceFdKHR_VkResult_return;
4079}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004080static VkResult dynCheck_entry_vkImportFenceFdKHR(
4081 VkDevice device,
4082 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
4083{
4084 auto resources = ResourceTracker::get();
4085 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
4086 {
4087 sOnInvalidDynamicallyCheckedCall("vkImportFenceFdKHR", "VK_KHR_external_fence_fd");
4088 }
4089 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004090 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004091 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
4092 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
4093 return vkImportFenceFdKHR_VkResult_return;
4094}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004095static VkResult entry_vkGetFenceFdKHR(
4096 VkDevice device,
4097 const VkFenceGetFdInfoKHR* pGetFdInfo,
4098 int* pFd)
4099{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004100 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004101 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004102 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07004103 auto resources = ResourceTracker::get();
4104 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004105 return vkGetFenceFdKHR_VkResult_return;
4106}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004107static VkResult dynCheck_entry_vkGetFenceFdKHR(
4108 VkDevice device,
4109 const VkFenceGetFdInfoKHR* pGetFdInfo,
4110 int* pFd)
4111{
4112 auto resources = ResourceTracker::get();
4113 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
4114 {
4115 sOnInvalidDynamicallyCheckedCall("vkGetFenceFdKHR", "VK_KHR_external_fence_fd");
4116 }
4117 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004118 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004119 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
4120 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
4121 return vkGetFenceFdKHR_VkResult_return;
4122}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004123#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004124#ifdef VK_KHR_performance_query
4125static VkResult entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
4126 VkPhysicalDevice physicalDevice,
4127 uint32_t queueFamilyIndex,
4128 uint32_t* pCounterCount,
4129 VkPerformanceCounterKHR* pCounters,
4130 VkPerformanceCounterDescriptionKHR* pCounterDescriptions)
4131{
4132 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
4133 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4134 VkResult vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return = (VkResult)0;
4135 vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, true /* do lock */);
4136 return vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return;
4137}
4138static void entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
4139 VkPhysicalDevice physicalDevice,
4140 const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo,
4141 uint32_t* pNumPasses)
4142{
4143 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
4144 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4145 vkEnc->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, true /* do lock */);
4146}
4147static VkResult entry_vkAcquireProfilingLockKHR(
4148 VkDevice device,
4149 const VkAcquireProfilingLockInfoKHR* pInfo)
4150{
4151 AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
4152 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4153 VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
4154 vkAcquireProfilingLockKHR_VkResult_return = vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
4155 return vkAcquireProfilingLockKHR_VkResult_return;
4156}
4157static VkResult dynCheck_entry_vkAcquireProfilingLockKHR(
4158 VkDevice device,
4159 const VkAcquireProfilingLockInfoKHR* pInfo)
4160{
4161 auto resources = ResourceTracker::get();
4162 if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query"))
4163 {
4164 sOnInvalidDynamicallyCheckedCall("vkAcquireProfilingLockKHR", "VK_KHR_performance_query");
4165 }
4166 AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
4167 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4168 VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
4169 vkAcquireProfilingLockKHR_VkResult_return = vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
4170 return vkAcquireProfilingLockKHR_VkResult_return;
4171}
4172static void entry_vkReleaseProfilingLockKHR(
4173 VkDevice device)
4174{
4175 AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
4176 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4177 vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
4178}
4179static void dynCheck_entry_vkReleaseProfilingLockKHR(
4180 VkDevice device)
4181{
4182 auto resources = ResourceTracker::get();
4183 if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query"))
4184 {
4185 sOnInvalidDynamicallyCheckedCall("vkReleaseProfilingLockKHR", "VK_KHR_performance_query");
4186 }
4187 AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
4188 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4189 vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
4190}
4191#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004192#ifdef VK_KHR_maintenance2
4193#endif
4194#ifdef VK_KHR_get_surface_capabilities2
4195static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
4196 VkPhysicalDevice physicalDevice,
4197 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
4198 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
4199{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004200 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004201 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004202 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004203 vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004204 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
4205}
4206static VkResult entry_vkGetPhysicalDeviceSurfaceFormats2KHR(
4207 VkPhysicalDevice physicalDevice,
4208 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
4209 uint32_t* pSurfaceFormatCount,
4210 VkSurfaceFormat2KHR* pSurfaceFormats)
4211{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004212 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004213 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004214 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004215 vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004216 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
4217}
4218#endif
4219#ifdef VK_KHR_variable_pointers
4220#endif
4221#ifdef VK_KHR_get_display_properties2
4222static VkResult entry_vkGetPhysicalDeviceDisplayProperties2KHR(
4223 VkPhysicalDevice physicalDevice,
4224 uint32_t* pPropertyCount,
4225 VkDisplayProperties2KHR* pProperties)
4226{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004227 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004228 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004229 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004230 vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004231 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
4232}
4233static VkResult entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
4234 VkPhysicalDevice physicalDevice,
4235 uint32_t* pPropertyCount,
4236 VkDisplayPlaneProperties2KHR* pProperties)
4237{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004238 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004239 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004240 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004241 vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004242 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
4243}
4244static VkResult entry_vkGetDisplayModeProperties2KHR(
4245 VkPhysicalDevice physicalDevice,
4246 VkDisplayKHR display,
4247 uint32_t* pPropertyCount,
4248 VkDisplayModeProperties2KHR* pProperties)
4249{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004250 AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004251 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004252 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004253 vkGetDisplayModeProperties2KHR_VkResult_return = vkEnc->vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004254 return vkGetDisplayModeProperties2KHR_VkResult_return;
4255}
4256static VkResult entry_vkGetDisplayPlaneCapabilities2KHR(
4257 VkPhysicalDevice physicalDevice,
4258 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
4259 VkDisplayPlaneCapabilities2KHR* pCapabilities)
4260{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004261 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004262 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004263 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004264 vkGetDisplayPlaneCapabilities2KHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004265 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
4266}
4267#endif
4268#ifdef VK_KHR_dedicated_allocation
4269#endif
4270#ifdef VK_KHR_storage_buffer_storage_class
4271#endif
4272#ifdef VK_KHR_relaxed_block_layout
4273#endif
4274#ifdef VK_KHR_get_memory_requirements2
4275static void entry_vkGetImageMemoryRequirements2KHR(
4276 VkDevice device,
4277 const VkImageMemoryRequirementsInfo2* pInfo,
4278 VkMemoryRequirements2* pMemoryRequirements)
4279{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004280 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004281 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08004282 auto resources = ResourceTracker::get();
4283 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004284}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004285static void dynCheck_entry_vkGetImageMemoryRequirements2KHR(
4286 VkDevice device,
4287 const VkImageMemoryRequirementsInfo2* pInfo,
4288 VkMemoryRequirements2* pMemoryRequirements)
4289{
4290 auto resources = ResourceTracker::get();
4291 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
4292 {
4293 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
4294 }
4295 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004296 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004297 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
4298}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004299static void entry_vkGetBufferMemoryRequirements2KHR(
4300 VkDevice device,
4301 const VkBufferMemoryRequirementsInfo2* pInfo,
4302 VkMemoryRequirements2* pMemoryRequirements)
4303{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004304 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004305 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08004306 auto resources = ResourceTracker::get();
4307 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004308}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004309static void dynCheck_entry_vkGetBufferMemoryRequirements2KHR(
4310 VkDevice device,
4311 const VkBufferMemoryRequirementsInfo2* pInfo,
4312 VkMemoryRequirements2* pMemoryRequirements)
4313{
4314 auto resources = ResourceTracker::get();
4315 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
4316 {
4317 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
4318 }
4319 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004320 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004321 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
4322}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004323static void entry_vkGetImageSparseMemoryRequirements2KHR(
4324 VkDevice device,
4325 const VkImageSparseMemoryRequirementsInfo2* pInfo,
4326 uint32_t* pSparseMemoryRequirementCount,
4327 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
4328{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004329 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004330 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004331 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004332}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004333static void dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR(
4334 VkDevice device,
4335 const VkImageSparseMemoryRequirementsInfo2* pInfo,
4336 uint32_t* pSparseMemoryRequirementCount,
4337 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
4338{
4339 auto resources = ResourceTracker::get();
4340 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
4341 {
4342 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
4343 }
4344 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004345 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004346 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004347}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004348#endif
4349#ifdef VK_KHR_image_format_list
4350#endif
4351#ifdef VK_KHR_sampler_ycbcr_conversion
4352static VkResult entry_vkCreateSamplerYcbcrConversionKHR(
4353 VkDevice device,
4354 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
4355 const VkAllocationCallbacks* pAllocator,
4356 VkSamplerYcbcrConversion* pYcbcrConversion)
4357{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004358 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004359 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004360 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08004361 auto resources = ResourceTracker::get();
4362 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004363 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
4364}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004365static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversionKHR(
4366 VkDevice device,
4367 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
4368 const VkAllocationCallbacks* pAllocator,
4369 VkSamplerYcbcrConversion* pYcbcrConversion)
4370{
4371 auto resources = ResourceTracker::get();
4372 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
4373 {
4374 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
4375 }
4376 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004377 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004378 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
4379 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
4380 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
4381}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004382static void entry_vkDestroySamplerYcbcrConversionKHR(
4383 VkDevice device,
4384 VkSamplerYcbcrConversion ycbcrConversion,
4385 const VkAllocationCallbacks* pAllocator)
4386{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004387 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004388 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07004389 auto resources = ResourceTracker::get();
4390 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004391}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004392static void dynCheck_entry_vkDestroySamplerYcbcrConversionKHR(
4393 VkDevice device,
4394 VkSamplerYcbcrConversion ycbcrConversion,
4395 const VkAllocationCallbacks* pAllocator)
4396{
4397 auto resources = ResourceTracker::get();
4398 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
4399 {
4400 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
4401 }
4402 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004403 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004404 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
4405}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004406#endif
4407#ifdef VK_KHR_bind_memory2
4408static VkResult entry_vkBindBufferMemory2KHR(
4409 VkDevice device,
4410 uint32_t bindInfoCount,
4411 const VkBindBufferMemoryInfo* pBindInfos)
4412{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004413 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004414 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004415 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08004416 auto resources = ResourceTracker::get();
4417 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004418 return vkBindBufferMemory2KHR_VkResult_return;
4419}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004420static VkResult dynCheck_entry_vkBindBufferMemory2KHR(
4421 VkDevice device,
4422 uint32_t bindInfoCount,
4423 const VkBindBufferMemoryInfo* pBindInfos)
4424{
4425 auto resources = ResourceTracker::get();
4426 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
4427 {
4428 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2KHR", "VK_KHR_bind_memory2");
4429 }
4430 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004431 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004432 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
4433 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
4434 return vkBindBufferMemory2KHR_VkResult_return;
4435}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004436static VkResult entry_vkBindImageMemory2KHR(
4437 VkDevice device,
4438 uint32_t bindInfoCount,
4439 const VkBindImageMemoryInfo* pBindInfos)
4440{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004441 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004442 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004443 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08004444 auto resources = ResourceTracker::get();
4445 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004446 return vkBindImageMemory2KHR_VkResult_return;
4447}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004448static VkResult dynCheck_entry_vkBindImageMemory2KHR(
4449 VkDevice device,
4450 uint32_t bindInfoCount,
4451 const VkBindImageMemoryInfo* pBindInfos)
4452{
4453 auto resources = ResourceTracker::get();
4454 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
4455 {
4456 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2KHR", "VK_KHR_bind_memory2");
4457 }
4458 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004459 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004460 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
4461 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
4462 return vkBindImageMemory2KHR_VkResult_return;
4463}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004464#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004465#ifdef VK_KHR_portability_subset
4466#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004467#ifdef VK_KHR_maintenance3
4468static void entry_vkGetDescriptorSetLayoutSupportKHR(
4469 VkDevice device,
4470 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
4471 VkDescriptorSetLayoutSupport* pSupport)
4472{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004473 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004474 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004475 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004476}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004477static void dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR(
4478 VkDevice device,
4479 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
4480 VkDescriptorSetLayoutSupport* pSupport)
4481{
4482 auto resources = ResourceTracker::get();
4483 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance3"))
4484 {
4485 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupportKHR", "VK_KHR_maintenance3");
4486 }
4487 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004488 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004489 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004490}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004491#endif
4492#ifdef VK_KHR_draw_indirect_count
4493static void entry_vkCmdDrawIndirectCountKHR(
4494 VkCommandBuffer commandBuffer,
4495 VkBuffer buffer,
4496 VkDeviceSize offset,
4497 VkBuffer countBuffer,
4498 VkDeviceSize countBufferOffset,
4499 uint32_t maxDrawCount,
4500 uint32_t stride)
4501{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004502 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004503 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004504 vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004505}
Yahan Zhouf183ac62022-04-13 11:10:26 -07004506static void dynCheck_entry_vkCmdDrawIndirectCountKHR(
4507 VkCommandBuffer commandBuffer,
4508 VkBuffer buffer,
4509 VkDeviceSize offset,
4510 VkBuffer countBuffer,
4511 VkDeviceSize countBufferOffset,
4512 uint32_t maxDrawCount,
4513 uint32_t stride)
4514{
4515 auto resources = ResourceTracker::get();
4516 VkDevice device = resources->getDevice(commandBuffer);;
4517 if (!resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count"))
4518 {
4519 sOnInvalidDynamicallyCheckedCall("vkCmdDrawIndirectCountKHR", "VK_KHR_draw_indirect_count");
4520 }
4521 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR");
4522 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4523 vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
4524}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004525static void entry_vkCmdDrawIndexedIndirectCountKHR(
4526 VkCommandBuffer commandBuffer,
4527 VkBuffer buffer,
4528 VkDeviceSize offset,
4529 VkBuffer countBuffer,
4530 VkDeviceSize countBufferOffset,
4531 uint32_t maxDrawCount,
4532 uint32_t stride)
4533{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004534 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR");
Lingfeng Yang4f539502021-01-22 23:01:57 -08004535 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08004536 vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004537}
Yahan Zhouf183ac62022-04-13 11:10:26 -07004538static void dynCheck_entry_vkCmdDrawIndexedIndirectCountKHR(
4539 VkCommandBuffer commandBuffer,
4540 VkBuffer buffer,
4541 VkDeviceSize offset,
4542 VkBuffer countBuffer,
4543 VkDeviceSize countBufferOffset,
4544 uint32_t maxDrawCount,
4545 uint32_t stride)
4546{
4547 auto resources = ResourceTracker::get();
4548 VkDevice device = resources->getDevice(commandBuffer);;
4549 if (!resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count"))
4550 {
4551 sOnInvalidDynamicallyCheckedCall("vkCmdDrawIndexedIndirectCountKHR", "VK_KHR_draw_indirect_count");
4552 }
4553 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR");
4554 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4555 vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
4556}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004557#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004558#ifdef VK_KHR_shader_subgroup_extended_types
4559#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004560#ifdef VK_KHR_8bit_storage
4561#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004562#ifdef VK_KHR_shader_atomic_int64
4563#endif
4564#ifdef VK_KHR_shader_clock
4565#endif
4566#ifdef VK_KHR_driver_properties
4567#endif
4568#ifdef VK_KHR_shader_float_controls
4569#endif
4570#ifdef VK_KHR_depth_stencil_resolve
4571#endif
4572#ifdef VK_KHR_swapchain_mutable_format
4573#endif
4574#ifdef VK_KHR_timeline_semaphore
4575static VkResult entry_vkGetSemaphoreCounterValueKHR(
4576 VkDevice device,
4577 VkSemaphore semaphore,
4578 uint64_t* pValue)
4579{
4580 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
4581 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4582 VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
4583 vkGetSemaphoreCounterValueKHR_VkResult_return = vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
4584 return vkGetSemaphoreCounterValueKHR_VkResult_return;
4585}
4586static VkResult dynCheck_entry_vkGetSemaphoreCounterValueKHR(
4587 VkDevice device,
4588 VkSemaphore semaphore,
4589 uint64_t* pValue)
4590{
4591 auto resources = ResourceTracker::get();
4592 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
4593 {
4594 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreCounterValueKHR", "VK_KHR_timeline_semaphore");
4595 }
4596 AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
4597 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4598 VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
4599 vkGetSemaphoreCounterValueKHR_VkResult_return = vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
4600 return vkGetSemaphoreCounterValueKHR_VkResult_return;
4601}
4602static VkResult entry_vkWaitSemaphoresKHR(
4603 VkDevice device,
4604 const VkSemaphoreWaitInfo* pWaitInfo,
4605 uint64_t timeout)
4606{
4607 AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
4608 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4609 VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
4610 vkWaitSemaphoresKHR_VkResult_return = vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
4611 return vkWaitSemaphoresKHR_VkResult_return;
4612}
4613static VkResult dynCheck_entry_vkWaitSemaphoresKHR(
4614 VkDevice device,
4615 const VkSemaphoreWaitInfo* pWaitInfo,
4616 uint64_t timeout)
4617{
4618 auto resources = ResourceTracker::get();
4619 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
4620 {
4621 sOnInvalidDynamicallyCheckedCall("vkWaitSemaphoresKHR", "VK_KHR_timeline_semaphore");
4622 }
4623 AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
4624 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4625 VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
4626 vkWaitSemaphoresKHR_VkResult_return = vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
4627 return vkWaitSemaphoresKHR_VkResult_return;
4628}
4629static VkResult entry_vkSignalSemaphoreKHR(
4630 VkDevice device,
4631 const VkSemaphoreSignalInfo* pSignalInfo)
4632{
4633 AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
4634 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4635 VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
4636 vkSignalSemaphoreKHR_VkResult_return = vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
4637 return vkSignalSemaphoreKHR_VkResult_return;
4638}
4639static VkResult dynCheck_entry_vkSignalSemaphoreKHR(
4640 VkDevice device,
4641 const VkSemaphoreSignalInfo* pSignalInfo)
4642{
4643 auto resources = ResourceTracker::get();
4644 if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
4645 {
4646 sOnInvalidDynamicallyCheckedCall("vkSignalSemaphoreKHR", "VK_KHR_timeline_semaphore");
4647 }
4648 AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
4649 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4650 VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
4651 vkSignalSemaphoreKHR_VkResult_return = vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
4652 return vkSignalSemaphoreKHR_VkResult_return;
4653}
4654#endif
4655#ifdef VK_KHR_vulkan_memory_model
4656#endif
4657#ifdef VK_KHR_shader_terminate_invocation
4658#endif
4659#ifdef VK_KHR_fragment_shading_rate
4660static VkResult entry_vkGetPhysicalDeviceFragmentShadingRatesKHR(
4661 VkPhysicalDevice physicalDevice,
4662 uint32_t* pFragmentShadingRateCount,
4663 VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates)
4664{
4665 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFragmentShadingRatesKHR");
4666 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4667 VkResult vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return = (VkResult)0;
4668 vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, true /* do lock */);
4669 return vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return;
4670}
4671static void entry_vkCmdSetFragmentShadingRateKHR(
4672 VkCommandBuffer commandBuffer,
4673 const VkExtent2D* pFragmentSize,
4674 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
4675{
4676 AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateKHR");
4677 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4678 vkEnc->vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, true /* do lock */);
4679}
Yahan Zhouf183ac62022-04-13 11:10:26 -07004680static void dynCheck_entry_vkCmdSetFragmentShadingRateKHR(
4681 VkCommandBuffer commandBuffer,
4682 const VkExtent2D* pFragmentSize,
4683 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
4684{
4685 auto resources = ResourceTracker::get();
4686 VkDevice device = resources->getDevice(commandBuffer);;
4687 if (!resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate"))
4688 {
4689 sOnInvalidDynamicallyCheckedCall("vkCmdSetFragmentShadingRateKHR", "VK_KHR_fragment_shading_rate");
4690 }
4691 AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateKHR");
4692 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
4693 vkEnc->vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, true /* do lock */);
4694}
Yilong Lia8d45f12021-02-07 02:30:21 -08004695#endif
4696#ifdef VK_KHR_spirv_1_4
4697#endif
4698#ifdef VK_KHR_surface_protected_capabilities
4699#endif
4700#ifdef VK_KHR_separate_depth_stencil_layouts
4701#endif
Yilong Li353409a2022-01-04 02:37:56 -08004702#ifdef VK_KHR_present_wait
4703static VkResult entry_vkWaitForPresentKHR(
4704 VkDevice device,
4705 VkSwapchainKHR swapchain,
4706 uint64_t presentId,
4707 uint64_t timeout)
4708{
4709 AEMU_SCOPED_TRACE("vkWaitForPresentKHR");
4710 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4711 VkResult vkWaitForPresentKHR_VkResult_return = (VkResult)0;
4712 vkWaitForPresentKHR_VkResult_return = vkEnc->vkWaitForPresentKHR(device, swapchain, presentId, timeout, true /* do lock */);
4713 return vkWaitForPresentKHR_VkResult_return;
4714}
4715static VkResult dynCheck_entry_vkWaitForPresentKHR(
4716 VkDevice device,
4717 VkSwapchainKHR swapchain,
4718 uint64_t presentId,
4719 uint64_t timeout)
4720{
4721 auto resources = ResourceTracker::get();
4722 if (!resources->hasDeviceExtension(device, "VK_KHR_present_wait"))
4723 {
4724 sOnInvalidDynamicallyCheckedCall("vkWaitForPresentKHR", "VK_KHR_present_wait");
4725 }
4726 AEMU_SCOPED_TRACE("vkWaitForPresentKHR");
4727 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4728 VkResult vkWaitForPresentKHR_VkResult_return = (VkResult)0;
4729 vkWaitForPresentKHR_VkResult_return = vkEnc->vkWaitForPresentKHR(device, swapchain, presentId, timeout, true /* do lock */);
4730 return vkWaitForPresentKHR_VkResult_return;
4731}
4732#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08004733#ifdef VK_KHR_uniform_buffer_standard_layout
4734#endif
4735#ifdef VK_KHR_buffer_device_address
4736static VkDeviceAddress entry_vkGetBufferDeviceAddressKHR(
4737 VkDevice device,
4738 const VkBufferDeviceAddressInfo* pInfo)
4739{
4740 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
4741 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4742 VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
4743 vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
4744 return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
4745}
4746static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressKHR(
4747 VkDevice device,
4748 const VkBufferDeviceAddressInfo* pInfo)
4749{
4750 auto resources = ResourceTracker::get();
4751 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4752 {
4753 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressKHR", "VK_KHR_buffer_device_address");
4754 }
4755 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
4756 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4757 VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
4758 vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
4759 return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
4760}
4761static uint64_t entry_vkGetBufferOpaqueCaptureAddressKHR(
4762 VkDevice device,
4763 const VkBufferDeviceAddressInfo* pInfo)
4764{
4765 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
4766 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4767 uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4768 vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4769 return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
4770}
4771static uint64_t dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR(
4772 VkDevice device,
4773 const VkBufferDeviceAddressInfo* pInfo)
4774{
4775 auto resources = ResourceTracker::get();
4776 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4777 {
4778 sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureAddressKHR", "VK_KHR_buffer_device_address");
4779 }
4780 AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
4781 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4782 uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4783 vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4784 return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
4785}
4786static uint64_t entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
4787 VkDevice device,
4788 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
4789{
4790 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
4791 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4792 uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4793 vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4794 return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
4795}
4796static uint64_t dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
4797 VkDevice device,
4798 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
4799{
4800 auto resources = ResourceTracker::get();
4801 if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
4802 {
4803 sOnInvalidDynamicallyCheckedCall("vkGetDeviceMemoryOpaqueCaptureAddressKHR", "VK_KHR_buffer_device_address");
4804 }
4805 AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
4806 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4807 uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
4808 vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
4809 return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
4810}
4811#endif
4812#ifdef VK_KHR_deferred_host_operations
4813static VkResult entry_vkCreateDeferredOperationKHR(
4814 VkDevice device,
4815 const VkAllocationCallbacks* pAllocator,
4816 VkDeferredOperationKHR* pDeferredOperation)
4817{
4818 AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
4819 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4820 VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
4821 vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, true /* do lock */);
4822 return vkCreateDeferredOperationKHR_VkResult_return;
4823}
4824static VkResult dynCheck_entry_vkCreateDeferredOperationKHR(
4825 VkDevice device,
4826 const VkAllocationCallbacks* pAllocator,
4827 VkDeferredOperationKHR* pDeferredOperation)
4828{
4829 auto resources = ResourceTracker::get();
4830 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4831 {
4832 sOnInvalidDynamicallyCheckedCall("vkCreateDeferredOperationKHR", "VK_KHR_deferred_host_operations");
4833 }
4834 AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
4835 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4836 VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
4837 vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, true /* do lock */);
4838 return vkCreateDeferredOperationKHR_VkResult_return;
4839}
4840static void entry_vkDestroyDeferredOperationKHR(
4841 VkDevice device,
4842 VkDeferredOperationKHR operation,
4843 const VkAllocationCallbacks* pAllocator)
4844{
4845 AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
4846 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4847 vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
4848}
4849static void dynCheck_entry_vkDestroyDeferredOperationKHR(
4850 VkDevice device,
4851 VkDeferredOperationKHR operation,
4852 const VkAllocationCallbacks* pAllocator)
4853{
4854 auto resources = ResourceTracker::get();
4855 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4856 {
4857 sOnInvalidDynamicallyCheckedCall("vkDestroyDeferredOperationKHR", "VK_KHR_deferred_host_operations");
4858 }
4859 AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
4860 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4861 vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
4862}
4863static uint32_t entry_vkGetDeferredOperationMaxConcurrencyKHR(
4864 VkDevice device,
4865 VkDeferredOperationKHR operation)
4866{
4867 AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
4868 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4869 uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
4870 vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
4871 return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
4872}
4873static uint32_t dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR(
4874 VkDevice device,
4875 VkDeferredOperationKHR operation)
4876{
4877 auto resources = ResourceTracker::get();
4878 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4879 {
4880 sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationMaxConcurrencyKHR", "VK_KHR_deferred_host_operations");
4881 }
4882 AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
4883 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4884 uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
4885 vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
4886 return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
4887}
4888static VkResult entry_vkGetDeferredOperationResultKHR(
4889 VkDevice device,
4890 VkDeferredOperationKHR operation)
4891{
4892 AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
4893 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4894 VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
4895 vkGetDeferredOperationResultKHR_VkResult_return = vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
4896 return vkGetDeferredOperationResultKHR_VkResult_return;
4897}
4898static VkResult dynCheck_entry_vkGetDeferredOperationResultKHR(
4899 VkDevice device,
4900 VkDeferredOperationKHR operation)
4901{
4902 auto resources = ResourceTracker::get();
4903 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4904 {
4905 sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationResultKHR", "VK_KHR_deferred_host_operations");
4906 }
4907 AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
4908 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4909 VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
4910 vkGetDeferredOperationResultKHR_VkResult_return = vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
4911 return vkGetDeferredOperationResultKHR_VkResult_return;
4912}
4913static VkResult entry_vkDeferredOperationJoinKHR(
4914 VkDevice device,
4915 VkDeferredOperationKHR operation)
4916{
4917 AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
4918 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4919 VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
4920 vkDeferredOperationJoinKHR_VkResult_return = vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
4921 return vkDeferredOperationJoinKHR_VkResult_return;
4922}
4923static VkResult dynCheck_entry_vkDeferredOperationJoinKHR(
4924 VkDevice device,
4925 VkDeferredOperationKHR operation)
4926{
4927 auto resources = ResourceTracker::get();
4928 if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
4929 {
4930 sOnInvalidDynamicallyCheckedCall("vkDeferredOperationJoinKHR", "VK_KHR_deferred_host_operations");
4931 }
4932 AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
4933 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4934 VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
4935 vkDeferredOperationJoinKHR_VkResult_return = vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
4936 return vkDeferredOperationJoinKHR_VkResult_return;
4937}
4938#endif
4939#ifdef VK_KHR_pipeline_executable_properties
4940static VkResult entry_vkGetPipelineExecutablePropertiesKHR(
4941 VkDevice device,
4942 const VkPipelineInfoKHR* pPipelineInfo,
4943 uint32_t* pExecutableCount,
4944 VkPipelineExecutablePropertiesKHR* pProperties)
4945{
4946 AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
4947 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4948 VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
4949 vkGetPipelineExecutablePropertiesKHR_VkResult_return = vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, true /* do lock */);
4950 return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
4951}
4952static VkResult dynCheck_entry_vkGetPipelineExecutablePropertiesKHR(
4953 VkDevice device,
4954 const VkPipelineInfoKHR* pPipelineInfo,
4955 uint32_t* pExecutableCount,
4956 VkPipelineExecutablePropertiesKHR* pProperties)
4957{
4958 auto resources = ResourceTracker::get();
4959 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4960 {
4961 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutablePropertiesKHR", "VK_KHR_pipeline_executable_properties");
4962 }
4963 AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
4964 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4965 VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
4966 vkGetPipelineExecutablePropertiesKHR_VkResult_return = vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, true /* do lock */);
4967 return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
4968}
4969static VkResult entry_vkGetPipelineExecutableStatisticsKHR(
4970 VkDevice device,
4971 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4972 uint32_t* pStatisticCount,
4973 VkPipelineExecutableStatisticKHR* pStatistics)
4974{
4975 AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
4976 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4977 VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
4978 vkGetPipelineExecutableStatisticsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, true /* do lock */);
4979 return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
4980}
4981static VkResult dynCheck_entry_vkGetPipelineExecutableStatisticsKHR(
4982 VkDevice device,
4983 const VkPipelineExecutableInfoKHR* pExecutableInfo,
4984 uint32_t* pStatisticCount,
4985 VkPipelineExecutableStatisticKHR* pStatistics)
4986{
4987 auto resources = ResourceTracker::get();
4988 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
4989 {
4990 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableStatisticsKHR", "VK_KHR_pipeline_executable_properties");
4991 }
4992 AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
4993 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
4994 VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
4995 vkGetPipelineExecutableStatisticsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, true /* do lock */);
4996 return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
4997}
4998static VkResult entry_vkGetPipelineExecutableInternalRepresentationsKHR(
4999 VkDevice device,
5000 const VkPipelineExecutableInfoKHR* pExecutableInfo,
5001 uint32_t* pInternalRepresentationCount,
5002 VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
5003{
5004 AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
5005 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5006 VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
5007 vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, true /* do lock */);
5008 return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
5009}
5010static VkResult dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR(
5011 VkDevice device,
5012 const VkPipelineExecutableInfoKHR* pExecutableInfo,
5013 uint32_t* pInternalRepresentationCount,
5014 VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
5015{
5016 auto resources = ResourceTracker::get();
5017 if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
5018 {
5019 sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableInternalRepresentationsKHR", "VK_KHR_pipeline_executable_properties");
5020 }
5021 AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
5022 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5023 VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
5024 vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, true /* do lock */);
5025 return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
5026}
5027#endif
Yilong Li353409a2022-01-04 02:37:56 -08005028#ifdef VK_KHR_shader_integer_dot_product
5029#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005030#ifdef VK_KHR_pipeline_library
5031#endif
5032#ifdef VK_KHR_shader_non_semantic_info
5033#endif
Yilong Li353409a2022-01-04 02:37:56 -08005034#ifdef VK_KHR_present_id
5035#endif
5036#ifdef VK_KHR_video_encode_queue
5037static void entry_vkCmdEncodeVideoKHR(
5038 VkCommandBuffer commandBuffer,
5039 const VkVideoEncodeInfoKHR* pEncodeInfo)
5040{
5041 AEMU_SCOPED_TRACE("vkCmdEncodeVideoKHR");
5042 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5043 vkEnc->vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, true /* do lock */);
5044}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005045static void dynCheck_entry_vkCmdEncodeVideoKHR(
5046 VkCommandBuffer commandBuffer,
5047 const VkVideoEncodeInfoKHR* pEncodeInfo)
5048{
5049 auto resources = ResourceTracker::get();
5050 VkDevice device = resources->getDevice(commandBuffer);;
5051 if (!resources->hasDeviceExtension(device, "VK_KHR_video_encode_queue"))
5052 {
5053 sOnInvalidDynamicallyCheckedCall("vkCmdEncodeVideoKHR", "VK_KHR_video_encode_queue");
5054 }
5055 AEMU_SCOPED_TRACE("vkCmdEncodeVideoKHR");
5056 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5057 vkEnc->vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, true /* do lock */);
5058}
Yilong Li353409a2022-01-04 02:37:56 -08005059#endif
5060#ifdef VK_KHR_synchronization2
5061static void entry_vkCmdSetEvent2KHR(
5062 VkCommandBuffer commandBuffer,
5063 VkEvent event,
5064 const VkDependencyInfoKHR* pDependencyInfo)
5065{
5066 AEMU_SCOPED_TRACE("vkCmdSetEvent2KHR");
5067 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5068 vkEnc->vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, true /* do lock */);
5069}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005070static void dynCheck_entry_vkCmdSetEvent2KHR(
5071 VkCommandBuffer commandBuffer,
5072 VkEvent event,
5073 const VkDependencyInfoKHR* pDependencyInfo)
5074{
5075 auto resources = ResourceTracker::get();
5076 VkDevice device = resources->getDevice(commandBuffer);;
5077 if (!resources->hasDeviceExtension(device, "VK_KHR_synchronization2"))
5078 {
5079 sOnInvalidDynamicallyCheckedCall("vkCmdSetEvent2KHR", "VK_KHR_synchronization2");
5080 }
5081 AEMU_SCOPED_TRACE("vkCmdSetEvent2KHR");
5082 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5083 vkEnc->vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, true /* do lock */);
5084}
Yilong Li353409a2022-01-04 02:37:56 -08005085static void entry_vkCmdResetEvent2KHR(
5086 VkCommandBuffer commandBuffer,
5087 VkEvent event,
5088 VkPipelineStageFlags2KHR stageMask)
5089{
5090 AEMU_SCOPED_TRACE("vkCmdResetEvent2KHR");
5091 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5092 vkEnc->vkCmdResetEvent2KHR(commandBuffer, event, stageMask, true /* do lock */);
5093}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005094static void dynCheck_entry_vkCmdResetEvent2KHR(
5095 VkCommandBuffer commandBuffer,
5096 VkEvent event,
5097 VkPipelineStageFlags2KHR stageMask)
5098{
5099 auto resources = ResourceTracker::get();
5100 VkDevice device = resources->getDevice(commandBuffer);;
5101 if (!resources->hasDeviceExtension(device, "VK_KHR_synchronization2"))
5102 {
5103 sOnInvalidDynamicallyCheckedCall("vkCmdResetEvent2KHR", "VK_KHR_synchronization2");
5104 }
5105 AEMU_SCOPED_TRACE("vkCmdResetEvent2KHR");
5106 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5107 vkEnc->vkCmdResetEvent2KHR(commandBuffer, event, stageMask, true /* do lock */);
5108}
Yilong Li353409a2022-01-04 02:37:56 -08005109static void entry_vkCmdWaitEvents2KHR(
5110 VkCommandBuffer commandBuffer,
5111 uint32_t eventCount,
5112 const VkEvent* pEvents,
5113 const VkDependencyInfoKHR* pDependencyInfos)
5114{
5115 AEMU_SCOPED_TRACE("vkCmdWaitEvents2KHR");
5116 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5117 vkEnc->vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, true /* do lock */);
5118}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005119static void dynCheck_entry_vkCmdWaitEvents2KHR(
5120 VkCommandBuffer commandBuffer,
5121 uint32_t eventCount,
5122 const VkEvent* pEvents,
5123 const VkDependencyInfoKHR* pDependencyInfos)
5124{
5125 auto resources = ResourceTracker::get();
5126 VkDevice device = resources->getDevice(commandBuffer);;
5127 if (!resources->hasDeviceExtension(device, "VK_KHR_synchronization2"))
5128 {
5129 sOnInvalidDynamicallyCheckedCall("vkCmdWaitEvents2KHR", "VK_KHR_synchronization2");
5130 }
5131 AEMU_SCOPED_TRACE("vkCmdWaitEvents2KHR");
5132 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5133 vkEnc->vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, true /* do lock */);
5134}
Yilong Li353409a2022-01-04 02:37:56 -08005135static void entry_vkCmdPipelineBarrier2KHR(
5136 VkCommandBuffer commandBuffer,
5137 const VkDependencyInfoKHR* pDependencyInfo)
5138{
5139 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier2KHR");
5140 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5141 vkEnc->vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, true /* do lock */);
5142}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005143static void dynCheck_entry_vkCmdPipelineBarrier2KHR(
5144 VkCommandBuffer commandBuffer,
5145 const VkDependencyInfoKHR* pDependencyInfo)
5146{
5147 auto resources = ResourceTracker::get();
5148 VkDevice device = resources->getDevice(commandBuffer);;
5149 if (!resources->hasDeviceExtension(device, "VK_KHR_synchronization2"))
5150 {
5151 sOnInvalidDynamicallyCheckedCall("vkCmdPipelineBarrier2KHR", "VK_KHR_synchronization2");
5152 }
5153 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier2KHR");
5154 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5155 vkEnc->vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, true /* do lock */);
5156}
Yilong Li353409a2022-01-04 02:37:56 -08005157static void entry_vkCmdWriteTimestamp2KHR(
5158 VkCommandBuffer commandBuffer,
5159 VkPipelineStageFlags2KHR stage,
5160 VkQueryPool queryPool,
5161 uint32_t query)
5162{
5163 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp2KHR");
5164 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5165 vkEnc->vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, true /* do lock */);
5166}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005167static void dynCheck_entry_vkCmdWriteTimestamp2KHR(
5168 VkCommandBuffer commandBuffer,
5169 VkPipelineStageFlags2KHR stage,
5170 VkQueryPool queryPool,
5171 uint32_t query)
5172{
5173 auto resources = ResourceTracker::get();
5174 VkDevice device = resources->getDevice(commandBuffer);;
5175 if (!resources->hasDeviceExtension(device, "VK_KHR_synchronization2"))
5176 {
5177 sOnInvalidDynamicallyCheckedCall("vkCmdWriteTimestamp2KHR", "VK_KHR_synchronization2");
5178 }
5179 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp2KHR");
5180 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5181 vkEnc->vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, true /* do lock */);
5182}
Yilong Li353409a2022-01-04 02:37:56 -08005183static VkResult entry_vkQueueSubmit2KHR(
5184 VkQueue queue,
5185 uint32_t submitCount,
5186 const VkSubmitInfo2KHR* pSubmits,
5187 VkFence fence)
5188{
5189 AEMU_SCOPED_TRACE("vkQueueSubmit2KHR");
5190 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
5191 VkResult vkQueueSubmit2KHR_VkResult_return = (VkResult)0;
5192 vkQueueSubmit2KHR_VkResult_return = vkEnc->vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, true /* do lock */);
5193 return vkQueueSubmit2KHR_VkResult_return;
5194}
5195static void entry_vkCmdWriteBufferMarker2AMD(
5196 VkCommandBuffer commandBuffer,
5197 VkPipelineStageFlags2KHR stage,
5198 VkBuffer dstBuffer,
5199 VkDeviceSize dstOffset,
5200 uint32_t marker)
5201{
5202 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarker2AMD");
5203 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5204 vkEnc->vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, true /* do lock */);
5205}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005206static void dynCheck_entry_vkCmdWriteBufferMarker2AMD(
5207 VkCommandBuffer commandBuffer,
5208 VkPipelineStageFlags2KHR stage,
5209 VkBuffer dstBuffer,
5210 VkDeviceSize dstOffset,
5211 uint32_t marker)
5212{
5213 auto resources = ResourceTracker::get();
5214 VkDevice device = resources->getDevice(commandBuffer);;
5215 if (!resources->hasDeviceExtension(device, "VK_KHR_synchronization2"))
5216 {
5217 sOnInvalidDynamicallyCheckedCall("vkCmdWriteBufferMarker2AMD", "VK_KHR_synchronization2");
5218 }
5219 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarker2AMD");
5220 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5221 vkEnc->vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, true /* do lock */);
5222}
Yilong Li353409a2022-01-04 02:37:56 -08005223static void entry_vkGetQueueCheckpointData2NV(
5224 VkQueue queue,
5225 uint32_t* pCheckpointDataCount,
5226 VkCheckpointData2NV* pCheckpointData)
5227{
5228 AEMU_SCOPED_TRACE("vkGetQueueCheckpointData2NV");
5229 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
5230 vkEnc->vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, true /* do lock */);
5231}
5232#endif
5233#ifdef VK_KHR_shader_subgroup_uniform_control_flow
5234#endif
5235#ifdef VK_KHR_zero_initialize_workgroup_memory
5236#endif
5237#ifdef VK_KHR_workgroup_memory_explicit_layout
5238#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005239#ifdef VK_KHR_copy_commands2
5240static void entry_vkCmdCopyBuffer2KHR(
5241 VkCommandBuffer commandBuffer,
5242 const VkCopyBufferInfo2KHR* pCopyBufferInfo)
5243{
5244 AEMU_SCOPED_TRACE("vkCmdCopyBuffer2KHR");
5245 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5246 vkEnc->vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, true /* do lock */);
5247}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005248static void dynCheck_entry_vkCmdCopyBuffer2KHR(
5249 VkCommandBuffer commandBuffer,
5250 const VkCopyBufferInfo2KHR* pCopyBufferInfo)
5251{
5252 auto resources = ResourceTracker::get();
5253 VkDevice device = resources->getDevice(commandBuffer);;
5254 if (!resources->hasDeviceExtension(device, "VK_KHR_copy_commands2"))
5255 {
5256 sOnInvalidDynamicallyCheckedCall("vkCmdCopyBuffer2KHR", "VK_KHR_copy_commands2");
5257 }
5258 AEMU_SCOPED_TRACE("vkCmdCopyBuffer2KHR");
5259 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5260 vkEnc->vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, true /* do lock */);
5261}
Yilong Lia8d45f12021-02-07 02:30:21 -08005262static void entry_vkCmdCopyImage2KHR(
5263 VkCommandBuffer commandBuffer,
5264 const VkCopyImageInfo2KHR* pCopyImageInfo)
5265{
5266 AEMU_SCOPED_TRACE("vkCmdCopyImage2KHR");
5267 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5268 vkEnc->vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, true /* do lock */);
5269}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005270static void dynCheck_entry_vkCmdCopyImage2KHR(
5271 VkCommandBuffer commandBuffer,
5272 const VkCopyImageInfo2KHR* pCopyImageInfo)
5273{
5274 auto resources = ResourceTracker::get();
5275 VkDevice device = resources->getDevice(commandBuffer);;
5276 if (!resources->hasDeviceExtension(device, "VK_KHR_copy_commands2"))
5277 {
5278 sOnInvalidDynamicallyCheckedCall("vkCmdCopyImage2KHR", "VK_KHR_copy_commands2");
5279 }
5280 AEMU_SCOPED_TRACE("vkCmdCopyImage2KHR");
5281 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5282 vkEnc->vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, true /* do lock */);
5283}
Yilong Lia8d45f12021-02-07 02:30:21 -08005284static void entry_vkCmdCopyBufferToImage2KHR(
5285 VkCommandBuffer commandBuffer,
5286 const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo)
5287{
5288 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage2KHR");
5289 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5290 vkEnc->vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, true /* do lock */);
5291}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005292static void dynCheck_entry_vkCmdCopyBufferToImage2KHR(
5293 VkCommandBuffer commandBuffer,
5294 const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo)
5295{
5296 auto resources = ResourceTracker::get();
5297 VkDevice device = resources->getDevice(commandBuffer);;
5298 if (!resources->hasDeviceExtension(device, "VK_KHR_copy_commands2"))
5299 {
5300 sOnInvalidDynamicallyCheckedCall("vkCmdCopyBufferToImage2KHR", "VK_KHR_copy_commands2");
5301 }
5302 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage2KHR");
5303 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5304 vkEnc->vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, true /* do lock */);
5305}
Yilong Lia8d45f12021-02-07 02:30:21 -08005306static void entry_vkCmdCopyImageToBuffer2KHR(
5307 VkCommandBuffer commandBuffer,
5308 const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo)
5309{
5310 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer2KHR");
5311 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5312 vkEnc->vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, true /* do lock */);
5313}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005314static void dynCheck_entry_vkCmdCopyImageToBuffer2KHR(
5315 VkCommandBuffer commandBuffer,
5316 const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo)
5317{
5318 auto resources = ResourceTracker::get();
5319 VkDevice device = resources->getDevice(commandBuffer);;
5320 if (!resources->hasDeviceExtension(device, "VK_KHR_copy_commands2"))
5321 {
5322 sOnInvalidDynamicallyCheckedCall("vkCmdCopyImageToBuffer2KHR", "VK_KHR_copy_commands2");
5323 }
5324 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer2KHR");
5325 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5326 vkEnc->vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, true /* do lock */);
5327}
Yilong Lia8d45f12021-02-07 02:30:21 -08005328static void entry_vkCmdBlitImage2KHR(
5329 VkCommandBuffer commandBuffer,
5330 const VkBlitImageInfo2KHR* pBlitImageInfo)
5331{
5332 AEMU_SCOPED_TRACE("vkCmdBlitImage2KHR");
5333 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5334 vkEnc->vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, true /* do lock */);
5335}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005336static void dynCheck_entry_vkCmdBlitImage2KHR(
5337 VkCommandBuffer commandBuffer,
5338 const VkBlitImageInfo2KHR* pBlitImageInfo)
5339{
5340 auto resources = ResourceTracker::get();
5341 VkDevice device = resources->getDevice(commandBuffer);;
5342 if (!resources->hasDeviceExtension(device, "VK_KHR_copy_commands2"))
5343 {
5344 sOnInvalidDynamicallyCheckedCall("vkCmdBlitImage2KHR", "VK_KHR_copy_commands2");
5345 }
5346 AEMU_SCOPED_TRACE("vkCmdBlitImage2KHR");
5347 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5348 vkEnc->vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, true /* do lock */);
5349}
Yilong Lia8d45f12021-02-07 02:30:21 -08005350static void entry_vkCmdResolveImage2KHR(
5351 VkCommandBuffer commandBuffer,
5352 const VkResolveImageInfo2KHR* pResolveImageInfo)
5353{
5354 AEMU_SCOPED_TRACE("vkCmdResolveImage2KHR");
5355 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5356 vkEnc->vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, true /* do lock */);
5357}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005358static void dynCheck_entry_vkCmdResolveImage2KHR(
5359 VkCommandBuffer commandBuffer,
5360 const VkResolveImageInfo2KHR* pResolveImageInfo)
5361{
5362 auto resources = ResourceTracker::get();
5363 VkDevice device = resources->getDevice(commandBuffer);;
5364 if (!resources->hasDeviceExtension(device, "VK_KHR_copy_commands2"))
5365 {
5366 sOnInvalidDynamicallyCheckedCall("vkCmdResolveImage2KHR", "VK_KHR_copy_commands2");
5367 }
5368 AEMU_SCOPED_TRACE("vkCmdResolveImage2KHR");
5369 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5370 vkEnc->vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, true /* do lock */);
5371}
Lingfeng Yang4c056b22020-07-02 11:43:57 -07005372#endif
Yilong Li353409a2022-01-04 02:37:56 -08005373#ifdef VK_KHR_format_feature_flags2
5374#endif
5375#ifdef VK_KHR_maintenance4
5376static void entry_vkGetDeviceBufferMemoryRequirementsKHR(
5377 VkDevice device,
5378 const VkDeviceBufferMemoryRequirementsKHR* pInfo,
5379 VkMemoryRequirements2* pMemoryRequirements)
5380{
5381 AEMU_SCOPED_TRACE("vkGetDeviceBufferMemoryRequirementsKHR");
5382 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5383 vkEnc->vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, true /* do lock */);
5384}
5385static void dynCheck_entry_vkGetDeviceBufferMemoryRequirementsKHR(
5386 VkDevice device,
5387 const VkDeviceBufferMemoryRequirementsKHR* pInfo,
5388 VkMemoryRequirements2* pMemoryRequirements)
5389{
5390 auto resources = ResourceTracker::get();
5391 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance4"))
5392 {
5393 sOnInvalidDynamicallyCheckedCall("vkGetDeviceBufferMemoryRequirementsKHR", "VK_KHR_maintenance4");
5394 }
5395 AEMU_SCOPED_TRACE("vkGetDeviceBufferMemoryRequirementsKHR");
5396 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5397 vkEnc->vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, true /* do lock */);
5398}
5399static void entry_vkGetDeviceImageMemoryRequirementsKHR(
5400 VkDevice device,
5401 const VkDeviceImageMemoryRequirementsKHR* pInfo,
5402 VkMemoryRequirements2* pMemoryRequirements)
5403{
5404 AEMU_SCOPED_TRACE("vkGetDeviceImageMemoryRequirementsKHR");
5405 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5406 vkEnc->vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, true /* do lock */);
5407}
5408static void dynCheck_entry_vkGetDeviceImageMemoryRequirementsKHR(
5409 VkDevice device,
5410 const VkDeviceImageMemoryRequirementsKHR* pInfo,
5411 VkMemoryRequirements2* pMemoryRequirements)
5412{
5413 auto resources = ResourceTracker::get();
5414 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance4"))
5415 {
5416 sOnInvalidDynamicallyCheckedCall("vkGetDeviceImageMemoryRequirementsKHR", "VK_KHR_maintenance4");
5417 }
5418 AEMU_SCOPED_TRACE("vkGetDeviceImageMemoryRequirementsKHR");
5419 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5420 vkEnc->vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, true /* do lock */);
5421}
5422static void entry_vkGetDeviceImageSparseMemoryRequirementsKHR(
5423 VkDevice device,
5424 const VkDeviceImageMemoryRequirementsKHR* pInfo,
5425 uint32_t* pSparseMemoryRequirementCount,
5426 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
5427{
5428 AEMU_SCOPED_TRACE("vkGetDeviceImageSparseMemoryRequirementsKHR");
5429 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5430 vkEnc->vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
5431}
5432static void dynCheck_entry_vkGetDeviceImageSparseMemoryRequirementsKHR(
5433 VkDevice device,
5434 const VkDeviceImageMemoryRequirementsKHR* pInfo,
5435 uint32_t* pSparseMemoryRequirementCount,
5436 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
5437{
5438 auto resources = ResourceTracker::get();
5439 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance4"))
5440 {
5441 sOnInvalidDynamicallyCheckedCall("vkGetDeviceImageSparseMemoryRequirementsKHR", "VK_KHR_maintenance4");
5442 }
5443 AEMU_SCOPED_TRACE("vkGetDeviceImageSparseMemoryRequirementsKHR");
5444 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5445 vkEnc->vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
5446}
5447#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08005448#ifdef VK_ANDROID_native_buffer
5449static VkResult entry_vkGetSwapchainGrallocUsageANDROID(
5450 VkDevice device,
5451 VkFormat format,
5452 VkImageUsageFlags imageUsage,
5453 int* grallocUsage)
5454{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005455 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005456 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang808a6312018-11-13 21:06:15 -08005457 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005458 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08005459 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
5460}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005461static VkResult dynCheck_entry_vkGetSwapchainGrallocUsageANDROID(
5462 VkDevice device,
5463 VkFormat format,
5464 VkImageUsageFlags imageUsage,
5465 int* grallocUsage)
5466{
5467 auto resources = ResourceTracker::get();
5468 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
5469 {
5470 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainGrallocUsageANDROID", "VK_ANDROID_native_buffer");
5471 }
5472 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005473 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005474 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005475 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005476 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
5477}
Lingfeng Yang808a6312018-11-13 21:06:15 -08005478static VkResult entry_vkAcquireImageANDROID(
5479 VkDevice device,
5480 VkImage image,
5481 int nativeFenceFd,
5482 VkSemaphore semaphore,
5483 VkFence fence)
5484{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005485 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005486 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang808a6312018-11-13 21:06:15 -08005487 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005488 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
Lingfeng Yang808a6312018-11-13 21:06:15 -08005489 return vkAcquireImageANDROID_VkResult_return;
5490}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005491static VkResult dynCheck_entry_vkAcquireImageANDROID(
5492 VkDevice device,
5493 VkImage image,
5494 int nativeFenceFd,
5495 VkSemaphore semaphore,
5496 VkFence fence)
5497{
5498 auto resources = ResourceTracker::get();
5499 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
5500 {
5501 sOnInvalidDynamicallyCheckedCall("vkAcquireImageANDROID", "VK_ANDROID_native_buffer");
5502 }
5503 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005504 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005505 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005506 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005507 return vkAcquireImageANDROID_VkResult_return;
5508}
Lingfeng Yang808a6312018-11-13 21:06:15 -08005509static VkResult entry_vkQueueSignalReleaseImageANDROID(
5510 VkQueue queue,
5511 uint32_t waitSemaphoreCount,
5512 const VkSemaphore* pWaitSemaphores,
5513 VkImage image,
5514 int* pNativeFenceFd)
5515{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005516 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005517 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yang808a6312018-11-13 21:06:15 -08005518 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang084e5342021-07-15 13:06:43 -07005519 auto resources = ResourceTracker::get();
5520 vkQueueSignalReleaseImageANDROID_VkResult_return = resources->on_vkQueueSignalReleaseImageANDROID(vkEnc, VK_SUCCESS, queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd);
Lingfeng Yang808a6312018-11-13 21:06:15 -08005521 return vkQueueSignalReleaseImageANDROID_VkResult_return;
5522}
5523#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005524#ifdef VK_EXT_debug_report
5525static VkResult entry_vkCreateDebugReportCallbackEXT(
5526 VkInstance instance,
5527 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
5528 const VkAllocationCallbacks* pAllocator,
5529 VkDebugReportCallbackEXT* pCallback)
5530{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005531 AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005532 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005533 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005534 vkCreateDebugReportCallbackEXT_VkResult_return = vkEnc->vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005535 return vkCreateDebugReportCallbackEXT_VkResult_return;
5536}
5537static void entry_vkDestroyDebugReportCallbackEXT(
5538 VkInstance instance,
5539 VkDebugReportCallbackEXT callback,
5540 const VkAllocationCallbacks* pAllocator)
5541{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005542 AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005543 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005544 vkEnc->vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005545}
5546static void entry_vkDebugReportMessageEXT(
5547 VkInstance instance,
5548 VkDebugReportFlagsEXT flags,
5549 VkDebugReportObjectTypeEXT objectType,
5550 uint64_t object,
5551 size_t location,
5552 int32_t messageCode,
5553 const char* pLayerPrefix,
5554 const char* pMessage)
5555{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005556 AEMU_SCOPED_TRACE("vkDebugReportMessageEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005557 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005558 vkEnc->vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005559}
5560#endif
5561#ifdef VK_NV_glsl_shader
5562#endif
5563#ifdef VK_EXT_depth_range_unrestricted
5564#endif
5565#ifdef VK_IMG_filter_cubic
5566#endif
5567#ifdef VK_AMD_rasterization_order
5568#endif
5569#ifdef VK_AMD_shader_trinary_minmax
5570#endif
5571#ifdef VK_AMD_shader_explicit_vertex_parameter
5572#endif
5573#ifdef VK_EXT_debug_marker
5574static VkResult entry_vkDebugMarkerSetObjectTagEXT(
5575 VkDevice device,
5576 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
5577{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005578 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005579 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005580 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005581 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005582 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
5583}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005584static VkResult dynCheck_entry_vkDebugMarkerSetObjectTagEXT(
5585 VkDevice device,
5586 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
5587{
5588 auto resources = ResourceTracker::get();
5589 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
5590 {
5591 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectTagEXT", "VK_EXT_debug_marker");
5592 }
5593 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005594 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005595 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005596 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005597 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
5598}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005599static VkResult entry_vkDebugMarkerSetObjectNameEXT(
5600 VkDevice device,
5601 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
5602{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005603 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005604 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005605 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005606 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005607 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
5608}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005609static VkResult dynCheck_entry_vkDebugMarkerSetObjectNameEXT(
5610 VkDevice device,
5611 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
5612{
5613 auto resources = ResourceTracker::get();
5614 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
5615 {
5616 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectNameEXT", "VK_EXT_debug_marker");
5617 }
5618 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005619 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005620 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005621 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005622 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
5623}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005624static void entry_vkCmdDebugMarkerBeginEXT(
5625 VkCommandBuffer commandBuffer,
5626 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
5627{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005628 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005629 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005630 vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005631}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005632static void dynCheck_entry_vkCmdDebugMarkerBeginEXT(
5633 VkCommandBuffer commandBuffer,
5634 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
5635{
5636 auto resources = ResourceTracker::get();
5637 VkDevice device = resources->getDevice(commandBuffer);;
5638 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
5639 {
5640 sOnInvalidDynamicallyCheckedCall("vkCmdDebugMarkerBeginEXT", "VK_EXT_debug_marker");
5641 }
5642 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
5643 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5644 vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, true /* do lock */);
5645}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005646static void entry_vkCmdDebugMarkerEndEXT(
5647 VkCommandBuffer commandBuffer)
5648{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005649 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005650 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005651 vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005652}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005653static void dynCheck_entry_vkCmdDebugMarkerEndEXT(
5654 VkCommandBuffer commandBuffer)
5655{
5656 auto resources = ResourceTracker::get();
5657 VkDevice device = resources->getDevice(commandBuffer);;
5658 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
5659 {
5660 sOnInvalidDynamicallyCheckedCall("vkCmdDebugMarkerEndEXT", "VK_EXT_debug_marker");
5661 }
5662 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
5663 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5664 vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer, true /* do lock */);
5665}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005666static void entry_vkCmdDebugMarkerInsertEXT(
5667 VkCommandBuffer commandBuffer,
5668 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
5669{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005670 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08005671 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08005672 vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005673}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005674static void dynCheck_entry_vkCmdDebugMarkerInsertEXT(
5675 VkCommandBuffer commandBuffer,
5676 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
5677{
5678 auto resources = ResourceTracker::get();
5679 VkDevice device = resources->getDevice(commandBuffer);;
5680 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
5681 {
5682 sOnInvalidDynamicallyCheckedCall("vkCmdDebugMarkerInsertEXT", "VK_EXT_debug_marker");
5683 }
5684 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
5685 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5686 vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, true /* do lock */);
5687}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005688#endif
5689#ifdef VK_AMD_gcn_shader
5690#endif
5691#ifdef VK_NV_dedicated_allocation
5692#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005693#ifdef VK_EXT_transform_feedback
5694static void entry_vkCmdBindTransformFeedbackBuffersEXT(
5695 VkCommandBuffer commandBuffer,
5696 uint32_t firstBinding,
5697 uint32_t bindingCount,
5698 const VkBuffer* pBuffers,
5699 const VkDeviceSize* pOffsets,
5700 const VkDeviceSize* pSizes)
5701{
5702 AEMU_SCOPED_TRACE("vkCmdBindTransformFeedbackBuffersEXT");
5703 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5704 vkEnc->vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, true /* do lock */);
5705}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005706static void dynCheck_entry_vkCmdBindTransformFeedbackBuffersEXT(
5707 VkCommandBuffer commandBuffer,
5708 uint32_t firstBinding,
5709 uint32_t bindingCount,
5710 const VkBuffer* pBuffers,
5711 const VkDeviceSize* pOffsets,
5712 const VkDeviceSize* pSizes)
5713{
5714 auto resources = ResourceTracker::get();
5715 VkDevice device = resources->getDevice(commandBuffer);;
5716 if (!resources->hasDeviceExtension(device, "VK_EXT_transform_feedback"))
5717 {
5718 sOnInvalidDynamicallyCheckedCall("vkCmdBindTransformFeedbackBuffersEXT", "VK_EXT_transform_feedback");
5719 }
5720 AEMU_SCOPED_TRACE("vkCmdBindTransformFeedbackBuffersEXT");
5721 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5722 vkEnc->vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, true /* do lock */);
5723}
Yilong Lia8d45f12021-02-07 02:30:21 -08005724static void entry_vkCmdBeginTransformFeedbackEXT(
5725 VkCommandBuffer commandBuffer,
5726 uint32_t firstCounterBuffer,
5727 uint32_t counterBufferCount,
5728 const VkBuffer* pCounterBuffers,
5729 const VkDeviceSize* pCounterBufferOffsets)
5730{
5731 AEMU_SCOPED_TRACE("vkCmdBeginTransformFeedbackEXT");
5732 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5733 vkEnc->vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
5734}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005735static void dynCheck_entry_vkCmdBeginTransformFeedbackEXT(
5736 VkCommandBuffer commandBuffer,
5737 uint32_t firstCounterBuffer,
5738 uint32_t counterBufferCount,
5739 const VkBuffer* pCounterBuffers,
5740 const VkDeviceSize* pCounterBufferOffsets)
5741{
5742 auto resources = ResourceTracker::get();
5743 VkDevice device = resources->getDevice(commandBuffer);;
5744 if (!resources->hasDeviceExtension(device, "VK_EXT_transform_feedback"))
5745 {
5746 sOnInvalidDynamicallyCheckedCall("vkCmdBeginTransformFeedbackEXT", "VK_EXT_transform_feedback");
5747 }
5748 AEMU_SCOPED_TRACE("vkCmdBeginTransformFeedbackEXT");
5749 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5750 vkEnc->vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
5751}
Yilong Lia8d45f12021-02-07 02:30:21 -08005752static void entry_vkCmdEndTransformFeedbackEXT(
5753 VkCommandBuffer commandBuffer,
5754 uint32_t firstCounterBuffer,
5755 uint32_t counterBufferCount,
5756 const VkBuffer* pCounterBuffers,
5757 const VkDeviceSize* pCounterBufferOffsets)
5758{
5759 AEMU_SCOPED_TRACE("vkCmdEndTransformFeedbackEXT");
5760 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5761 vkEnc->vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
5762}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005763static void dynCheck_entry_vkCmdEndTransformFeedbackEXT(
5764 VkCommandBuffer commandBuffer,
5765 uint32_t firstCounterBuffer,
5766 uint32_t counterBufferCount,
5767 const VkBuffer* pCounterBuffers,
5768 const VkDeviceSize* pCounterBufferOffsets)
5769{
5770 auto resources = ResourceTracker::get();
5771 VkDevice device = resources->getDevice(commandBuffer);;
5772 if (!resources->hasDeviceExtension(device, "VK_EXT_transform_feedback"))
5773 {
5774 sOnInvalidDynamicallyCheckedCall("vkCmdEndTransformFeedbackEXT", "VK_EXT_transform_feedback");
5775 }
5776 AEMU_SCOPED_TRACE("vkCmdEndTransformFeedbackEXT");
5777 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5778 vkEnc->vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
5779}
Yilong Lia8d45f12021-02-07 02:30:21 -08005780static void entry_vkCmdBeginQueryIndexedEXT(
5781 VkCommandBuffer commandBuffer,
5782 VkQueryPool queryPool,
5783 uint32_t query,
5784 VkQueryControlFlags flags,
5785 uint32_t index)
5786{
5787 AEMU_SCOPED_TRACE("vkCmdBeginQueryIndexedEXT");
5788 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5789 vkEnc->vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, true /* do lock */);
5790}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005791static void dynCheck_entry_vkCmdBeginQueryIndexedEXT(
5792 VkCommandBuffer commandBuffer,
5793 VkQueryPool queryPool,
5794 uint32_t query,
5795 VkQueryControlFlags flags,
5796 uint32_t index)
5797{
5798 auto resources = ResourceTracker::get();
5799 VkDevice device = resources->getDevice(commandBuffer);;
5800 if (!resources->hasDeviceExtension(device, "VK_EXT_transform_feedback"))
5801 {
5802 sOnInvalidDynamicallyCheckedCall("vkCmdBeginQueryIndexedEXT", "VK_EXT_transform_feedback");
5803 }
5804 AEMU_SCOPED_TRACE("vkCmdBeginQueryIndexedEXT");
5805 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5806 vkEnc->vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, true /* do lock */);
5807}
Yilong Lia8d45f12021-02-07 02:30:21 -08005808static void entry_vkCmdEndQueryIndexedEXT(
5809 VkCommandBuffer commandBuffer,
5810 VkQueryPool queryPool,
5811 uint32_t query,
5812 uint32_t index)
5813{
5814 AEMU_SCOPED_TRACE("vkCmdEndQueryIndexedEXT");
5815 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5816 vkEnc->vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, true /* do lock */);
5817}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005818static void dynCheck_entry_vkCmdEndQueryIndexedEXT(
5819 VkCommandBuffer commandBuffer,
5820 VkQueryPool queryPool,
5821 uint32_t query,
5822 uint32_t index)
5823{
5824 auto resources = ResourceTracker::get();
5825 VkDevice device = resources->getDevice(commandBuffer);;
5826 if (!resources->hasDeviceExtension(device, "VK_EXT_transform_feedback"))
5827 {
5828 sOnInvalidDynamicallyCheckedCall("vkCmdEndQueryIndexedEXT", "VK_EXT_transform_feedback");
5829 }
5830 AEMU_SCOPED_TRACE("vkCmdEndQueryIndexedEXT");
5831 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5832 vkEnc->vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, true /* do lock */);
5833}
Yilong Lia8d45f12021-02-07 02:30:21 -08005834static void entry_vkCmdDrawIndirectByteCountEXT(
5835 VkCommandBuffer commandBuffer,
5836 uint32_t instanceCount,
5837 uint32_t firstInstance,
5838 VkBuffer counterBuffer,
5839 VkDeviceSize counterBufferOffset,
5840 uint32_t counterOffset,
5841 uint32_t vertexStride)
5842{
5843 AEMU_SCOPED_TRACE("vkCmdDrawIndirectByteCountEXT");
5844 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5845 vkEnc->vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, true /* do lock */);
5846}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005847static void dynCheck_entry_vkCmdDrawIndirectByteCountEXT(
5848 VkCommandBuffer commandBuffer,
5849 uint32_t instanceCount,
5850 uint32_t firstInstance,
5851 VkBuffer counterBuffer,
5852 VkDeviceSize counterBufferOffset,
5853 uint32_t counterOffset,
5854 uint32_t vertexStride)
5855{
5856 auto resources = ResourceTracker::get();
5857 VkDevice device = resources->getDevice(commandBuffer);;
5858 if (!resources->hasDeviceExtension(device, "VK_EXT_transform_feedback"))
5859 {
5860 sOnInvalidDynamicallyCheckedCall("vkCmdDrawIndirectByteCountEXT", "VK_EXT_transform_feedback");
5861 }
5862 AEMU_SCOPED_TRACE("vkCmdDrawIndirectByteCountEXT");
5863 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5864 vkEnc->vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, true /* do lock */);
5865}
Yilong Lia8d45f12021-02-07 02:30:21 -08005866#endif
Yilong Li353409a2022-01-04 02:37:56 -08005867#ifdef VK_NVX_binary_import
5868static VkResult entry_vkCreateCuModuleNVX(
5869 VkDevice device,
5870 const VkCuModuleCreateInfoNVX* pCreateInfo,
5871 const VkAllocationCallbacks* pAllocator,
5872 VkCuModuleNVX* pModule)
5873{
5874 AEMU_SCOPED_TRACE("vkCreateCuModuleNVX");
5875 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5876 VkResult vkCreateCuModuleNVX_VkResult_return = (VkResult)0;
5877 vkCreateCuModuleNVX_VkResult_return = vkEnc->vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, true /* do lock */);
5878 return vkCreateCuModuleNVX_VkResult_return;
5879}
5880static VkResult dynCheck_entry_vkCreateCuModuleNVX(
5881 VkDevice device,
5882 const VkCuModuleCreateInfoNVX* pCreateInfo,
5883 const VkAllocationCallbacks* pAllocator,
5884 VkCuModuleNVX* pModule)
5885{
5886 auto resources = ResourceTracker::get();
5887 if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import"))
5888 {
5889 sOnInvalidDynamicallyCheckedCall("vkCreateCuModuleNVX", "VK_NVX_binary_import");
5890 }
5891 AEMU_SCOPED_TRACE("vkCreateCuModuleNVX");
5892 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5893 VkResult vkCreateCuModuleNVX_VkResult_return = (VkResult)0;
5894 vkCreateCuModuleNVX_VkResult_return = vkEnc->vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, true /* do lock */);
5895 return vkCreateCuModuleNVX_VkResult_return;
5896}
5897static VkResult entry_vkCreateCuFunctionNVX(
5898 VkDevice device,
5899 const VkCuFunctionCreateInfoNVX* pCreateInfo,
5900 const VkAllocationCallbacks* pAllocator,
5901 VkCuFunctionNVX* pFunction)
5902{
5903 AEMU_SCOPED_TRACE("vkCreateCuFunctionNVX");
5904 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5905 VkResult vkCreateCuFunctionNVX_VkResult_return = (VkResult)0;
5906 vkCreateCuFunctionNVX_VkResult_return = vkEnc->vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, true /* do lock */);
5907 return vkCreateCuFunctionNVX_VkResult_return;
5908}
5909static VkResult dynCheck_entry_vkCreateCuFunctionNVX(
5910 VkDevice device,
5911 const VkCuFunctionCreateInfoNVX* pCreateInfo,
5912 const VkAllocationCallbacks* pAllocator,
5913 VkCuFunctionNVX* pFunction)
5914{
5915 auto resources = ResourceTracker::get();
5916 if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import"))
5917 {
5918 sOnInvalidDynamicallyCheckedCall("vkCreateCuFunctionNVX", "VK_NVX_binary_import");
5919 }
5920 AEMU_SCOPED_TRACE("vkCreateCuFunctionNVX");
5921 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5922 VkResult vkCreateCuFunctionNVX_VkResult_return = (VkResult)0;
5923 vkCreateCuFunctionNVX_VkResult_return = vkEnc->vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, true /* do lock */);
5924 return vkCreateCuFunctionNVX_VkResult_return;
5925}
5926static void entry_vkDestroyCuModuleNVX(
5927 VkDevice device,
5928 VkCuModuleNVX module,
5929 const VkAllocationCallbacks* pAllocator)
5930{
5931 AEMU_SCOPED_TRACE("vkDestroyCuModuleNVX");
5932 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5933 vkEnc->vkDestroyCuModuleNVX(device, module, pAllocator, true /* do lock */);
5934}
5935static void dynCheck_entry_vkDestroyCuModuleNVX(
5936 VkDevice device,
5937 VkCuModuleNVX module,
5938 const VkAllocationCallbacks* pAllocator)
5939{
5940 auto resources = ResourceTracker::get();
5941 if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import"))
5942 {
5943 sOnInvalidDynamicallyCheckedCall("vkDestroyCuModuleNVX", "VK_NVX_binary_import");
5944 }
5945 AEMU_SCOPED_TRACE("vkDestroyCuModuleNVX");
5946 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5947 vkEnc->vkDestroyCuModuleNVX(device, module, pAllocator, true /* do lock */);
5948}
5949static void entry_vkDestroyCuFunctionNVX(
5950 VkDevice device,
5951 VkCuFunctionNVX function,
5952 const VkAllocationCallbacks* pAllocator)
5953{
5954 AEMU_SCOPED_TRACE("vkDestroyCuFunctionNVX");
5955 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5956 vkEnc->vkDestroyCuFunctionNVX(device, function, pAllocator, true /* do lock */);
5957}
5958static void dynCheck_entry_vkDestroyCuFunctionNVX(
5959 VkDevice device,
5960 VkCuFunctionNVX function,
5961 const VkAllocationCallbacks* pAllocator)
5962{
5963 auto resources = ResourceTracker::get();
5964 if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import"))
5965 {
5966 sOnInvalidDynamicallyCheckedCall("vkDestroyCuFunctionNVX", "VK_NVX_binary_import");
5967 }
5968 AEMU_SCOPED_TRACE("vkDestroyCuFunctionNVX");
5969 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
5970 vkEnc->vkDestroyCuFunctionNVX(device, function, pAllocator, true /* do lock */);
5971}
5972static void entry_vkCmdCuLaunchKernelNVX(
5973 VkCommandBuffer commandBuffer,
5974 const VkCuLaunchInfoNVX* pLaunchInfo)
5975{
5976 AEMU_SCOPED_TRACE("vkCmdCuLaunchKernelNVX");
5977 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5978 vkEnc->vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, true /* do lock */);
5979}
Yahan Zhouf183ac62022-04-13 11:10:26 -07005980static void dynCheck_entry_vkCmdCuLaunchKernelNVX(
5981 VkCommandBuffer commandBuffer,
5982 const VkCuLaunchInfoNVX* pLaunchInfo)
5983{
5984 auto resources = ResourceTracker::get();
5985 VkDevice device = resources->getDevice(commandBuffer);;
5986 if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import"))
5987 {
5988 sOnInvalidDynamicallyCheckedCall("vkCmdCuLaunchKernelNVX", "VK_NVX_binary_import");
5989 }
5990 AEMU_SCOPED_TRACE("vkCmdCuLaunchKernelNVX");
5991 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
5992 vkEnc->vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, true /* do lock */);
5993}
Yilong Li353409a2022-01-04 02:37:56 -08005994#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08005995#ifdef VK_NVX_image_view_handle
5996static uint32_t entry_vkGetImageViewHandleNVX(
5997 VkDevice device,
5998 const VkImageViewHandleInfoNVX* pInfo)
5999{
6000 AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
6001 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6002 uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
6003 vkGetImageViewHandleNVX_uint32_t_return = vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
6004 return vkGetImageViewHandleNVX_uint32_t_return;
6005}
6006static uint32_t dynCheck_entry_vkGetImageViewHandleNVX(
6007 VkDevice device,
6008 const VkImageViewHandleInfoNVX* pInfo)
6009{
6010 auto resources = ResourceTracker::get();
6011 if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle"))
6012 {
6013 sOnInvalidDynamicallyCheckedCall("vkGetImageViewHandleNVX", "VK_NVX_image_view_handle");
6014 }
6015 AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
6016 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6017 uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
6018 vkGetImageViewHandleNVX_uint32_t_return = vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
6019 return vkGetImageViewHandleNVX_uint32_t_return;
6020}
6021static VkResult entry_vkGetImageViewAddressNVX(
6022 VkDevice device,
6023 VkImageView imageView,
6024 VkImageViewAddressPropertiesNVX* pProperties)
6025{
6026 AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
6027 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6028 VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
6029 vkGetImageViewAddressNVX_VkResult_return = vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
6030 return vkGetImageViewAddressNVX_VkResult_return;
6031}
6032static VkResult dynCheck_entry_vkGetImageViewAddressNVX(
6033 VkDevice device,
6034 VkImageView imageView,
6035 VkImageViewAddressPropertiesNVX* pProperties)
6036{
6037 auto resources = ResourceTracker::get();
6038 if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle"))
6039 {
6040 sOnInvalidDynamicallyCheckedCall("vkGetImageViewAddressNVX", "VK_NVX_image_view_handle");
6041 }
6042 AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
6043 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6044 VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
6045 vkGetImageViewAddressNVX_VkResult_return = vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
6046 return vkGetImageViewAddressNVX_VkResult_return;
6047}
6048#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006049#ifdef VK_AMD_draw_indirect_count
6050static void entry_vkCmdDrawIndirectCountAMD(
6051 VkCommandBuffer commandBuffer,
6052 VkBuffer buffer,
6053 VkDeviceSize offset,
6054 VkBuffer countBuffer,
6055 VkDeviceSize countBufferOffset,
6056 uint32_t maxDrawCount,
6057 uint32_t stride)
6058{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006059 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006060 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006061 vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006062}
Yahan Zhouf183ac62022-04-13 11:10:26 -07006063static void dynCheck_entry_vkCmdDrawIndirectCountAMD(
6064 VkCommandBuffer commandBuffer,
6065 VkBuffer buffer,
6066 VkDeviceSize offset,
6067 VkBuffer countBuffer,
6068 VkDeviceSize countBufferOffset,
6069 uint32_t maxDrawCount,
6070 uint32_t stride)
6071{
6072 auto resources = ResourceTracker::get();
6073 VkDevice device = resources->getDevice(commandBuffer);;
6074 if (!resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count"))
6075 {
6076 sOnInvalidDynamicallyCheckedCall("vkCmdDrawIndirectCountAMD", "VK_AMD_draw_indirect_count");
6077 }
6078 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD");
6079 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6080 vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
6081}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006082static void entry_vkCmdDrawIndexedIndirectCountAMD(
6083 VkCommandBuffer commandBuffer,
6084 VkBuffer buffer,
6085 VkDeviceSize offset,
6086 VkBuffer countBuffer,
6087 VkDeviceSize countBufferOffset,
6088 uint32_t maxDrawCount,
6089 uint32_t stride)
6090{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006091 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006092 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006093 vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006094}
Yahan Zhouf183ac62022-04-13 11:10:26 -07006095static void dynCheck_entry_vkCmdDrawIndexedIndirectCountAMD(
6096 VkCommandBuffer commandBuffer,
6097 VkBuffer buffer,
6098 VkDeviceSize offset,
6099 VkBuffer countBuffer,
6100 VkDeviceSize countBufferOffset,
6101 uint32_t maxDrawCount,
6102 uint32_t stride)
6103{
6104 auto resources = ResourceTracker::get();
6105 VkDevice device = resources->getDevice(commandBuffer);;
6106 if (!resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count"))
6107 {
6108 sOnInvalidDynamicallyCheckedCall("vkCmdDrawIndexedIndirectCountAMD", "VK_AMD_draw_indirect_count");
6109 }
6110 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD");
6111 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6112 vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
6113}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006114#endif
6115#ifdef VK_AMD_negative_viewport_height
6116#endif
6117#ifdef VK_AMD_gpu_shader_half_float
6118#endif
6119#ifdef VK_AMD_shader_ballot
6120#endif
Yilong Li353409a2022-01-04 02:37:56 -08006121#ifdef VK_EXT_video_encode_h264
6122#endif
6123#ifdef VK_EXT_video_encode_h265
6124#endif
6125#ifdef VK_EXT_video_decode_h264
6126#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006127#ifdef VK_AMD_texture_gather_bias_lod
6128#endif
6129#ifdef VK_AMD_shader_info
6130static VkResult entry_vkGetShaderInfoAMD(
6131 VkDevice device,
6132 VkPipeline pipeline,
6133 VkShaderStageFlagBits shaderStage,
6134 VkShaderInfoTypeAMD infoType,
6135 size_t* pInfoSize,
6136 void* pInfo)
6137{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006138 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006139 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006140 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006141 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006142 return vkGetShaderInfoAMD_VkResult_return;
6143}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006144static VkResult dynCheck_entry_vkGetShaderInfoAMD(
6145 VkDevice device,
6146 VkPipeline pipeline,
6147 VkShaderStageFlagBits shaderStage,
6148 VkShaderInfoTypeAMD infoType,
6149 size_t* pInfoSize,
6150 void* pInfo)
6151{
6152 auto resources = ResourceTracker::get();
6153 if (!resources->hasDeviceExtension(device, "VK_AMD_shader_info"))
6154 {
6155 sOnInvalidDynamicallyCheckedCall("vkGetShaderInfoAMD", "VK_AMD_shader_info");
6156 }
6157 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006158 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006159 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006160 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006161 return vkGetShaderInfoAMD_VkResult_return;
6162}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006163#endif
6164#ifdef VK_AMD_shader_image_load_store_lod
6165#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006166#ifdef VK_GGP_stream_descriptor_surface
6167static VkResult entry_vkCreateStreamDescriptorSurfaceGGP(
6168 VkInstance instance,
6169 const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
6170 const VkAllocationCallbacks* pAllocator,
6171 VkSurfaceKHR* pSurface)
6172{
6173 AEMU_SCOPED_TRACE("vkCreateStreamDescriptorSurfaceGGP");
6174 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6175 VkResult vkCreateStreamDescriptorSurfaceGGP_VkResult_return = (VkResult)0;
6176 vkCreateStreamDescriptorSurfaceGGP_VkResult_return = vkEnc->vkCreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
6177 return vkCreateStreamDescriptorSurfaceGGP_VkResult_return;
6178}
6179#endif
6180#ifdef VK_NV_corner_sampled_image
6181#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006182#ifdef VK_IMG_format_pvrtc
6183#endif
6184#ifdef VK_NV_external_memory_capabilities
6185static VkResult entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
6186 VkPhysicalDevice physicalDevice,
6187 VkFormat format,
6188 VkImageType type,
6189 VkImageTiling tiling,
6190 VkImageUsageFlags usage,
6191 VkImageCreateFlags flags,
6192 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
6193 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
6194{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006195 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006196 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006197 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006198 vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006199 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
6200}
6201#endif
6202#ifdef VK_NV_external_memory
6203#endif
6204#ifdef VK_NV_external_memory_win32
6205static VkResult entry_vkGetMemoryWin32HandleNV(
6206 VkDevice device,
6207 VkDeviceMemory memory,
6208 VkExternalMemoryHandleTypeFlagsNV handleType,
6209 HANDLE* pHandle)
6210{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006211 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006212 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006213 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006214 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006215 return vkGetMemoryWin32HandleNV_VkResult_return;
6216}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006217static VkResult dynCheck_entry_vkGetMemoryWin32HandleNV(
6218 VkDevice device,
6219 VkDeviceMemory memory,
6220 VkExternalMemoryHandleTypeFlagsNV handleType,
6221 HANDLE* pHandle)
6222{
6223 auto resources = ResourceTracker::get();
6224 if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_win32"))
6225 {
6226 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleNV", "VK_NV_external_memory_win32");
6227 }
6228 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006229 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006230 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006231 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006232 return vkGetMemoryWin32HandleNV_VkResult_return;
6233}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006234#endif
6235#ifdef VK_NV_win32_keyed_mutex
6236#endif
6237#ifdef VK_EXT_validation_flags
6238#endif
6239#ifdef VK_NN_vi_surface
6240static VkResult entry_vkCreateViSurfaceNN(
6241 VkInstance instance,
6242 const VkViSurfaceCreateInfoNN* pCreateInfo,
6243 const VkAllocationCallbacks* pAllocator,
6244 VkSurfaceKHR* pSurface)
6245{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006246 AEMU_SCOPED_TRACE("vkCreateViSurfaceNN");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006247 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006248 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006249 vkCreateViSurfaceNN_VkResult_return = vkEnc->vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006250 return vkCreateViSurfaceNN_VkResult_return;
6251}
6252#endif
6253#ifdef VK_EXT_shader_subgroup_ballot
6254#endif
6255#ifdef VK_EXT_shader_subgroup_vote
6256#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006257#ifdef VK_EXT_texture_compression_astc_hdr
6258#endif
6259#ifdef VK_EXT_astc_decode_mode
6260#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006261#ifdef VK_EXT_conditional_rendering
6262static void entry_vkCmdBeginConditionalRenderingEXT(
6263 VkCommandBuffer commandBuffer,
6264 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
6265{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006266 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006267 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006268 vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006269}
Yahan Zhouf183ac62022-04-13 11:10:26 -07006270static void dynCheck_entry_vkCmdBeginConditionalRenderingEXT(
6271 VkCommandBuffer commandBuffer,
6272 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
6273{
6274 auto resources = ResourceTracker::get();
6275 VkDevice device = resources->getDevice(commandBuffer);;
6276 if (!resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering"))
6277 {
6278 sOnInvalidDynamicallyCheckedCall("vkCmdBeginConditionalRenderingEXT", "VK_EXT_conditional_rendering");
6279 }
6280 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
6281 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6282 vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, true /* do lock */);
6283}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006284static void entry_vkCmdEndConditionalRenderingEXT(
6285 VkCommandBuffer commandBuffer)
6286{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006287 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006288 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006289 vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006290}
Yahan Zhouf183ac62022-04-13 11:10:26 -07006291static void dynCheck_entry_vkCmdEndConditionalRenderingEXT(
6292 VkCommandBuffer commandBuffer)
6293{
6294 auto resources = ResourceTracker::get();
6295 VkDevice device = resources->getDevice(commandBuffer);;
6296 if (!resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering"))
6297 {
6298 sOnInvalidDynamicallyCheckedCall("vkCmdEndConditionalRenderingEXT", "VK_EXT_conditional_rendering");
6299 }
6300 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
6301 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6302 vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer, true /* do lock */);
6303}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006304#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006305#ifdef VK_NV_clip_space_w_scaling
6306static void entry_vkCmdSetViewportWScalingNV(
6307 VkCommandBuffer commandBuffer,
6308 uint32_t firstViewport,
6309 uint32_t viewportCount,
6310 const VkViewportWScalingNV* pViewportWScalings)
6311{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006312 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006313 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006314 vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006315}
Yahan Zhouf183ac62022-04-13 11:10:26 -07006316static void dynCheck_entry_vkCmdSetViewportWScalingNV(
6317 VkCommandBuffer commandBuffer,
6318 uint32_t firstViewport,
6319 uint32_t viewportCount,
6320 const VkViewportWScalingNV* pViewportWScalings)
6321{
6322 auto resources = ResourceTracker::get();
6323 VkDevice device = resources->getDevice(commandBuffer);;
6324 if (!resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling"))
6325 {
6326 sOnInvalidDynamicallyCheckedCall("vkCmdSetViewportWScalingNV", "VK_NV_clip_space_w_scaling");
6327 }
6328 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV");
6329 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6330 vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, true /* do lock */);
6331}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006332#endif
6333#ifdef VK_EXT_direct_mode_display
6334static VkResult entry_vkReleaseDisplayEXT(
6335 VkPhysicalDevice physicalDevice,
6336 VkDisplayKHR display)
6337{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006338 AEMU_SCOPED_TRACE("vkReleaseDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006339 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006340 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006341 vkReleaseDisplayEXT_VkResult_return = vkEnc->vkReleaseDisplayEXT(physicalDevice, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006342 return vkReleaseDisplayEXT_VkResult_return;
6343}
6344#endif
6345#ifdef VK_EXT_acquire_xlib_display
6346static VkResult entry_vkAcquireXlibDisplayEXT(
6347 VkPhysicalDevice physicalDevice,
6348 Display* dpy,
6349 VkDisplayKHR display)
6350{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006351 AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006352 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006353 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006354 vkAcquireXlibDisplayEXT_VkResult_return = vkEnc->vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006355 return vkAcquireXlibDisplayEXT_VkResult_return;
6356}
6357static VkResult entry_vkGetRandROutputDisplayEXT(
6358 VkPhysicalDevice physicalDevice,
6359 Display* dpy,
6360 RROutput rrOutput,
6361 VkDisplayKHR* pDisplay)
6362{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006363 AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006364 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006365 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006366 vkGetRandROutputDisplayEXT_VkResult_return = vkEnc->vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006367 return vkGetRandROutputDisplayEXT_VkResult_return;
6368}
6369#endif
6370#ifdef VK_EXT_display_surface_counter
6371static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
6372 VkPhysicalDevice physicalDevice,
6373 VkSurfaceKHR surface,
6374 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
6375{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006376 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006377 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006378 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006379 vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006380 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
6381}
6382#endif
6383#ifdef VK_EXT_display_control
6384static VkResult entry_vkDisplayPowerControlEXT(
6385 VkDevice device,
6386 VkDisplayKHR display,
6387 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
6388{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006389 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006390 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006391 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006392 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006393 return vkDisplayPowerControlEXT_VkResult_return;
6394}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006395static VkResult dynCheck_entry_vkDisplayPowerControlEXT(
6396 VkDevice device,
6397 VkDisplayKHR display,
6398 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
6399{
6400 auto resources = ResourceTracker::get();
6401 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
6402 {
6403 sOnInvalidDynamicallyCheckedCall("vkDisplayPowerControlEXT", "VK_EXT_display_control");
6404 }
6405 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006406 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006407 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006408 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006409 return vkDisplayPowerControlEXT_VkResult_return;
6410}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006411static VkResult entry_vkRegisterDeviceEventEXT(
6412 VkDevice device,
6413 const VkDeviceEventInfoEXT* pDeviceEventInfo,
6414 const VkAllocationCallbacks* pAllocator,
6415 VkFence* pFence)
6416{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006417 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006418 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006419 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006420 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006421 return vkRegisterDeviceEventEXT_VkResult_return;
6422}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006423static VkResult dynCheck_entry_vkRegisterDeviceEventEXT(
6424 VkDevice device,
6425 const VkDeviceEventInfoEXT* pDeviceEventInfo,
6426 const VkAllocationCallbacks* pAllocator,
6427 VkFence* pFence)
6428{
6429 auto resources = ResourceTracker::get();
6430 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
6431 {
6432 sOnInvalidDynamicallyCheckedCall("vkRegisterDeviceEventEXT", "VK_EXT_display_control");
6433 }
6434 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006435 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006436 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006437 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006438 return vkRegisterDeviceEventEXT_VkResult_return;
6439}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006440static VkResult entry_vkRegisterDisplayEventEXT(
6441 VkDevice device,
6442 VkDisplayKHR display,
6443 const VkDisplayEventInfoEXT* pDisplayEventInfo,
6444 const VkAllocationCallbacks* pAllocator,
6445 VkFence* pFence)
6446{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006447 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006448 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006449 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006450 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006451 return vkRegisterDisplayEventEXT_VkResult_return;
6452}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006453static VkResult dynCheck_entry_vkRegisterDisplayEventEXT(
6454 VkDevice device,
6455 VkDisplayKHR display,
6456 const VkDisplayEventInfoEXT* pDisplayEventInfo,
6457 const VkAllocationCallbacks* pAllocator,
6458 VkFence* pFence)
6459{
6460 auto resources = ResourceTracker::get();
6461 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
6462 {
6463 sOnInvalidDynamicallyCheckedCall("vkRegisterDisplayEventEXT", "VK_EXT_display_control");
6464 }
6465 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006466 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006467 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006468 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006469 return vkRegisterDisplayEventEXT_VkResult_return;
6470}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006471static VkResult entry_vkGetSwapchainCounterEXT(
6472 VkDevice device,
6473 VkSwapchainKHR swapchain,
6474 VkSurfaceCounterFlagBitsEXT counter,
6475 uint64_t* pCounterValue)
6476{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006477 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006478 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006479 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006480 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006481 return vkGetSwapchainCounterEXT_VkResult_return;
6482}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006483static VkResult dynCheck_entry_vkGetSwapchainCounterEXT(
6484 VkDevice device,
6485 VkSwapchainKHR swapchain,
6486 VkSurfaceCounterFlagBitsEXT counter,
6487 uint64_t* pCounterValue)
6488{
6489 auto resources = ResourceTracker::get();
6490 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
6491 {
6492 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainCounterEXT", "VK_EXT_display_control");
6493 }
6494 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006495 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006496 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006497 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006498 return vkGetSwapchainCounterEXT_VkResult_return;
6499}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006500#endif
6501#ifdef VK_GOOGLE_display_timing
6502static VkResult entry_vkGetRefreshCycleDurationGOOGLE(
6503 VkDevice device,
6504 VkSwapchainKHR swapchain,
6505 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
6506{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006507 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006508 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006509 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006510 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006511 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
6512}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006513static VkResult dynCheck_entry_vkGetRefreshCycleDurationGOOGLE(
6514 VkDevice device,
6515 VkSwapchainKHR swapchain,
6516 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
6517{
6518 auto resources = ResourceTracker::get();
6519 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
6520 {
6521 sOnInvalidDynamicallyCheckedCall("vkGetRefreshCycleDurationGOOGLE", "VK_GOOGLE_display_timing");
6522 }
6523 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006524 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006525 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006526 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006527 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
6528}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006529static VkResult entry_vkGetPastPresentationTimingGOOGLE(
6530 VkDevice device,
6531 VkSwapchainKHR swapchain,
6532 uint32_t* pPresentationTimingCount,
6533 VkPastPresentationTimingGOOGLE* pPresentationTimings)
6534{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006535 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006536 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006537 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006538 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006539 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
6540}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006541static VkResult dynCheck_entry_vkGetPastPresentationTimingGOOGLE(
6542 VkDevice device,
6543 VkSwapchainKHR swapchain,
6544 uint32_t* pPresentationTimingCount,
6545 VkPastPresentationTimingGOOGLE* pPresentationTimings)
6546{
6547 auto resources = ResourceTracker::get();
6548 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
6549 {
6550 sOnInvalidDynamicallyCheckedCall("vkGetPastPresentationTimingGOOGLE", "VK_GOOGLE_display_timing");
6551 }
6552 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006553 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006554 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006555 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006556 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
6557}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006558#endif
6559#ifdef VK_NV_sample_mask_override_coverage
6560#endif
6561#ifdef VK_NV_geometry_shader_passthrough
6562#endif
6563#ifdef VK_NV_viewport_array2
6564#endif
6565#ifdef VK_NVX_multiview_per_view_attributes
6566#endif
6567#ifdef VK_NV_viewport_swizzle
6568#endif
6569#ifdef VK_EXT_discard_rectangles
6570static void entry_vkCmdSetDiscardRectangleEXT(
6571 VkCommandBuffer commandBuffer,
6572 uint32_t firstDiscardRectangle,
6573 uint32_t discardRectangleCount,
6574 const VkRect2D* pDiscardRectangles)
6575{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006576 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006577 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006578 vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006579}
Yahan Zhouf183ac62022-04-13 11:10:26 -07006580static void dynCheck_entry_vkCmdSetDiscardRectangleEXT(
6581 VkCommandBuffer commandBuffer,
6582 uint32_t firstDiscardRectangle,
6583 uint32_t discardRectangleCount,
6584 const VkRect2D* pDiscardRectangles)
6585{
6586 auto resources = ResourceTracker::get();
6587 VkDevice device = resources->getDevice(commandBuffer);;
6588 if (!resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles"))
6589 {
6590 sOnInvalidDynamicallyCheckedCall("vkCmdSetDiscardRectangleEXT", "VK_EXT_discard_rectangles");
6591 }
6592 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT");
6593 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6594 vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, true /* do lock */);
6595}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006596#endif
6597#ifdef VK_EXT_conservative_rasterization
6598#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006599#ifdef VK_EXT_depth_clip_enable
6600#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006601#ifdef VK_EXT_swapchain_colorspace
6602#endif
6603#ifdef VK_EXT_hdr_metadata
6604static void entry_vkSetHdrMetadataEXT(
6605 VkDevice device,
6606 uint32_t swapchainCount,
6607 const VkSwapchainKHR* pSwapchains,
6608 const VkHdrMetadataEXT* pMetadata)
6609{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006610 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006611 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006612 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006613}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006614static void dynCheck_entry_vkSetHdrMetadataEXT(
6615 VkDevice device,
6616 uint32_t swapchainCount,
6617 const VkSwapchainKHR* pSwapchains,
6618 const VkHdrMetadataEXT* pMetadata)
6619{
6620 auto resources = ResourceTracker::get();
6621 if (!resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata"))
6622 {
6623 sOnInvalidDynamicallyCheckedCall("vkSetHdrMetadataEXT", "VK_EXT_hdr_metadata");
6624 }
6625 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006626 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006627 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006628}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006629#endif
6630#ifdef VK_MVK_ios_surface
6631static VkResult entry_vkCreateIOSSurfaceMVK(
6632 VkInstance instance,
6633 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
6634 const VkAllocationCallbacks* pAllocator,
6635 VkSurfaceKHR* pSurface)
6636{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006637 AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006638 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006639 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006640 vkCreateIOSSurfaceMVK_VkResult_return = vkEnc->vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006641 return vkCreateIOSSurfaceMVK_VkResult_return;
6642}
6643#endif
6644#ifdef VK_MVK_macos_surface
6645static VkResult entry_vkCreateMacOSSurfaceMVK(
6646 VkInstance instance,
6647 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
6648 const VkAllocationCallbacks* pAllocator,
6649 VkSurfaceKHR* pSurface)
6650{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006651 AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006652 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006653 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006654 vkCreateMacOSSurfaceMVK_VkResult_return = vkEnc->vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006655 return vkCreateMacOSSurfaceMVK_VkResult_return;
6656}
6657#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006658#ifdef VK_MVK_moltenvk
6659static void entry_vkGetMTLDeviceMVK(
6660 VkPhysicalDevice physicalDevice,
6661 void** pMTLDevice)
6662{
6663 AEMU_SCOPED_TRACE("vkGetMTLDeviceMVK");
6664 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6665 vkEnc->vkGetMTLDeviceMVK(physicalDevice, pMTLDevice, true /* do lock */);
6666}
6667static VkResult entry_vkSetMTLTextureMVK(
6668 VkImage image,
6669 void* mtlTexture)
6670{
6671 AEMU_SCOPED_TRACE("vkSetMTLTextureMVK");
6672 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6673 VkResult vkSetMTLTextureMVK_VkResult_return = (VkResult)0;
6674 vkSetMTLTextureMVK_VkResult_return = vkEnc->vkSetMTLTextureMVK(image, mtlTexture, true /* do lock */);
6675 return vkSetMTLTextureMVK_VkResult_return;
6676}
6677static void entry_vkGetMTLTextureMVK(
6678 VkImage image,
6679 void** pMTLTexture)
6680{
6681 AEMU_SCOPED_TRACE("vkGetMTLTextureMVK");
6682 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6683 vkEnc->vkGetMTLTextureMVK(image, pMTLTexture, true /* do lock */);
6684}
6685static void entry_vkGetMTLBufferMVK(
6686 VkBuffer buffer,
6687 void** pMTLBuffer)
6688{
6689 AEMU_SCOPED_TRACE("vkGetMTLBufferMVK");
6690 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6691 vkEnc->vkGetMTLBufferMVK(buffer, pMTLBuffer, true /* do lock */);
6692}
6693static VkResult entry_vkUseIOSurfaceMVK(
6694 VkImage image,
6695 void* ioSurface)
6696{
6697 AEMU_SCOPED_TRACE("vkUseIOSurfaceMVK");
6698 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6699 VkResult vkUseIOSurfaceMVK_VkResult_return = (VkResult)0;
6700 vkUseIOSurfaceMVK_VkResult_return = vkEnc->vkUseIOSurfaceMVK(image, ioSurface, true /* do lock */);
6701 return vkUseIOSurfaceMVK_VkResult_return;
6702}
6703static void entry_vkGetIOSurfaceMVK(
6704 VkImage image,
6705 void** pIOSurface)
6706{
6707 AEMU_SCOPED_TRACE("vkGetIOSurfaceMVK");
6708 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
6709 vkEnc->vkGetIOSurfaceMVK(image, pIOSurface, true /* do lock */);
6710}
6711#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006712#ifdef VK_EXT_external_memory_dma_buf
6713#endif
6714#ifdef VK_EXT_queue_family_foreign
6715#endif
6716#ifdef VK_EXT_debug_utils
6717static VkResult entry_vkSetDebugUtilsObjectNameEXT(
6718 VkDevice device,
6719 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
6720{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006721 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006722 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006723 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006724 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006725 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
6726}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006727static VkResult dynCheck_entry_vkSetDebugUtilsObjectNameEXT(
6728 VkDevice device,
6729 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
6730{
6731 auto resources = ResourceTracker::get();
6732 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
6733 {
6734 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectNameEXT", "VK_EXT_debug_utils");
6735 }
6736 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006737 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006738 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006739 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006740 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
6741}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006742static VkResult entry_vkSetDebugUtilsObjectTagEXT(
6743 VkDevice device,
6744 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
6745{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006746 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006747 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006748 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006749 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006750 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
6751}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006752static VkResult dynCheck_entry_vkSetDebugUtilsObjectTagEXT(
6753 VkDevice device,
6754 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
6755{
6756 auto resources = ResourceTracker::get();
6757 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
6758 {
6759 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectTagEXT", "VK_EXT_debug_utils");
6760 }
6761 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006762 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006763 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006764 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006765 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
6766}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006767static void entry_vkQueueBeginDebugUtilsLabelEXT(
6768 VkQueue queue,
6769 const VkDebugUtilsLabelEXT* pLabelInfo)
6770{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006771 AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006772 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006773 vkEnc->vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006774}
6775static void entry_vkQueueEndDebugUtilsLabelEXT(
6776 VkQueue queue)
6777{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006778 AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006779 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006780 vkEnc->vkQueueEndDebugUtilsLabelEXT(queue, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006781}
6782static void entry_vkQueueInsertDebugUtilsLabelEXT(
6783 VkQueue queue,
6784 const VkDebugUtilsLabelEXT* pLabelInfo)
6785{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006786 AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006787 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006788 vkEnc->vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006789}
6790static void entry_vkCmdBeginDebugUtilsLabelEXT(
6791 VkCommandBuffer commandBuffer,
6792 const VkDebugUtilsLabelEXT* pLabelInfo)
6793{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006794 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006795 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006796 vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006797}
Yahan Zhouf183ac62022-04-13 11:10:26 -07006798static void dynCheck_entry_vkCmdBeginDebugUtilsLabelEXT(
6799 VkCommandBuffer commandBuffer,
6800 const VkDebugUtilsLabelEXT* pLabelInfo)
6801{
6802 auto resources = ResourceTracker::get();
6803 VkDevice device = resources->getDevice(commandBuffer);;
6804 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
6805 {
6806 sOnInvalidDynamicallyCheckedCall("vkCmdBeginDebugUtilsLabelEXT", "VK_EXT_debug_utils");
6807 }
6808 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT");
6809 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6810 vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
6811}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006812static void entry_vkCmdEndDebugUtilsLabelEXT(
6813 VkCommandBuffer commandBuffer)
6814{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006815 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006816 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006817 vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006818}
Yahan Zhouf183ac62022-04-13 11:10:26 -07006819static void dynCheck_entry_vkCmdEndDebugUtilsLabelEXT(
6820 VkCommandBuffer commandBuffer)
6821{
6822 auto resources = ResourceTracker::get();
6823 VkDevice device = resources->getDevice(commandBuffer);;
6824 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
6825 {
6826 sOnInvalidDynamicallyCheckedCall("vkCmdEndDebugUtilsLabelEXT", "VK_EXT_debug_utils");
6827 }
6828 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT");
6829 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6830 vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer, true /* do lock */);
6831}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006832static void entry_vkCmdInsertDebugUtilsLabelEXT(
6833 VkCommandBuffer commandBuffer,
6834 const VkDebugUtilsLabelEXT* pLabelInfo)
6835{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006836 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006837 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006838 vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006839}
Yahan Zhouf183ac62022-04-13 11:10:26 -07006840static void dynCheck_entry_vkCmdInsertDebugUtilsLabelEXT(
6841 VkCommandBuffer commandBuffer,
6842 const VkDebugUtilsLabelEXT* pLabelInfo)
6843{
6844 auto resources = ResourceTracker::get();
6845 VkDevice device = resources->getDevice(commandBuffer);;
6846 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
6847 {
6848 sOnInvalidDynamicallyCheckedCall("vkCmdInsertDebugUtilsLabelEXT", "VK_EXT_debug_utils");
6849 }
6850 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT");
6851 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6852 vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
6853}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006854static VkResult entry_vkCreateDebugUtilsMessengerEXT(
6855 VkInstance instance,
6856 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
6857 const VkAllocationCallbacks* pAllocator,
6858 VkDebugUtilsMessengerEXT* pMessenger)
6859{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006860 AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006861 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006862 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006863 vkCreateDebugUtilsMessengerEXT_VkResult_return = vkEnc->vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006864 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
6865}
6866static void entry_vkDestroyDebugUtilsMessengerEXT(
6867 VkInstance instance,
6868 VkDebugUtilsMessengerEXT messenger,
6869 const VkAllocationCallbacks* pAllocator)
6870{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006871 AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006872 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006873 vkEnc->vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006874}
6875static void entry_vkSubmitDebugUtilsMessageEXT(
6876 VkInstance instance,
6877 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
6878 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
6879 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
6880{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006881 AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006882 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006883 vkEnc->vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006884}
6885#endif
6886#ifdef VK_ANDROID_external_memory_android_hardware_buffer
6887static VkResult entry_vkGetAndroidHardwareBufferPropertiesANDROID(
6888 VkDevice device,
6889 const AHardwareBuffer* buffer,
6890 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
6891{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006892 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006893 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006894 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08006895 auto resources = ResourceTracker::get();
6896 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006897 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
6898}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006899static VkResult dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID(
6900 VkDevice device,
6901 const AHardwareBuffer* buffer,
6902 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
6903{
6904 auto resources = ResourceTracker::get();
6905 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
6906 {
6907 sOnInvalidDynamicallyCheckedCall("vkGetAndroidHardwareBufferPropertiesANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
6908 }
6909 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006910 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006911 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
6912 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
6913 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
6914}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006915static VkResult entry_vkGetMemoryAndroidHardwareBufferANDROID(
6916 VkDevice device,
6917 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
6918 AHardwareBuffer** pBuffer)
6919{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006920 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006921 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006922 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08006923 auto resources = ResourceTracker::get();
6924 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006925 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
6926}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006927static VkResult dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID(
6928 VkDevice device,
6929 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
6930 AHardwareBuffer** pBuffer)
6931{
6932 auto resources = ResourceTracker::get();
6933 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
6934 {
6935 sOnInvalidDynamicallyCheckedCall("vkGetMemoryAndroidHardwareBufferANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
6936 }
6937 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006938 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07006939 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
6940 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
6941 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
6942}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006943#endif
6944#ifdef VK_EXT_sampler_filter_minmax
6945#endif
6946#ifdef VK_AMD_gpu_shader_int16
6947#endif
6948#ifdef VK_AMD_mixed_attachment_samples
6949#endif
6950#ifdef VK_AMD_shader_fragment_mask
6951#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006952#ifdef VK_EXT_inline_uniform_block
6953#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006954#ifdef VK_EXT_shader_stencil_export
6955#endif
6956#ifdef VK_EXT_sample_locations
6957static void entry_vkCmdSetSampleLocationsEXT(
6958 VkCommandBuffer commandBuffer,
6959 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
6960{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006961 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006962 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006963 vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006964}
Yahan Zhouf183ac62022-04-13 11:10:26 -07006965static void dynCheck_entry_vkCmdSetSampleLocationsEXT(
6966 VkCommandBuffer commandBuffer,
6967 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
6968{
6969 auto resources = ResourceTracker::get();
6970 VkDevice device = resources->getDevice(commandBuffer);;
6971 if (!resources->hasDeviceExtension(device, "VK_EXT_sample_locations"))
6972 {
6973 sOnInvalidDynamicallyCheckedCall("vkCmdSetSampleLocationsEXT", "VK_EXT_sample_locations");
6974 }
6975 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT");
6976 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
6977 vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, true /* do lock */);
6978}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006979static void entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(
6980 VkPhysicalDevice physicalDevice,
6981 VkSampleCountFlagBits samples,
6982 VkMultisamplePropertiesEXT* pMultisampleProperties)
6983{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006984 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08006985 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08006986 vkEnc->vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006987}
6988#endif
6989#ifdef VK_EXT_blend_operation_advanced
6990#endif
6991#ifdef VK_NV_fragment_coverage_to_color
6992#endif
6993#ifdef VK_NV_framebuffer_mixed_samples
6994#endif
6995#ifdef VK_NV_fill_rectangle
6996#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08006997#ifdef VK_NV_shader_sm_builtins
6998#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006999#ifdef VK_EXT_post_depth_coverage
7000#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007001#ifdef VK_EXT_image_drm_format_modifier
7002static VkResult entry_vkGetImageDrmFormatModifierPropertiesEXT(
7003 VkDevice device,
7004 VkImage image,
7005 VkImageDrmFormatModifierPropertiesEXT* pProperties)
7006{
7007 AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
7008 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7009 VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
7010 vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, true /* do lock */);
7011 return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
7012}
7013static VkResult dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT(
7014 VkDevice device,
7015 VkImage image,
7016 VkImageDrmFormatModifierPropertiesEXT* pProperties)
7017{
7018 auto resources = ResourceTracker::get();
7019 if (!resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier"))
7020 {
7021 sOnInvalidDynamicallyCheckedCall("vkGetImageDrmFormatModifierPropertiesEXT", "VK_EXT_image_drm_format_modifier");
7022 }
7023 AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
7024 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7025 VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
7026 vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, true /* do lock */);
7027 return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
7028}
7029#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007030#ifdef VK_EXT_validation_cache
7031static VkResult entry_vkCreateValidationCacheEXT(
7032 VkDevice device,
7033 const VkValidationCacheCreateInfoEXT* pCreateInfo,
7034 const VkAllocationCallbacks* pAllocator,
7035 VkValidationCacheEXT* pValidationCache)
7036{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007037 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007038 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007039 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007040 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007041 return vkCreateValidationCacheEXT_VkResult_return;
7042}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007043static VkResult dynCheck_entry_vkCreateValidationCacheEXT(
7044 VkDevice device,
7045 const VkValidationCacheCreateInfoEXT* pCreateInfo,
7046 const VkAllocationCallbacks* pAllocator,
7047 VkValidationCacheEXT* pValidationCache)
7048{
7049 auto resources = ResourceTracker::get();
7050 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
7051 {
7052 sOnInvalidDynamicallyCheckedCall("vkCreateValidationCacheEXT", "VK_EXT_validation_cache");
7053 }
7054 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007055 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007056 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007057 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007058 return vkCreateValidationCacheEXT_VkResult_return;
7059}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007060static void entry_vkDestroyValidationCacheEXT(
7061 VkDevice device,
7062 VkValidationCacheEXT validationCache,
7063 const VkAllocationCallbacks* pAllocator)
7064{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007065 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007066 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007067 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007068}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007069static void dynCheck_entry_vkDestroyValidationCacheEXT(
7070 VkDevice device,
7071 VkValidationCacheEXT validationCache,
7072 const VkAllocationCallbacks* pAllocator)
7073{
7074 auto resources = ResourceTracker::get();
7075 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
7076 {
7077 sOnInvalidDynamicallyCheckedCall("vkDestroyValidationCacheEXT", "VK_EXT_validation_cache");
7078 }
7079 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007080 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007081 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007082}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007083static VkResult entry_vkMergeValidationCachesEXT(
7084 VkDevice device,
7085 VkValidationCacheEXT dstCache,
7086 uint32_t srcCacheCount,
7087 const VkValidationCacheEXT* pSrcCaches)
7088{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007089 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007090 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007091 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007092 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007093 return vkMergeValidationCachesEXT_VkResult_return;
7094}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007095static VkResult dynCheck_entry_vkMergeValidationCachesEXT(
7096 VkDevice device,
7097 VkValidationCacheEXT dstCache,
7098 uint32_t srcCacheCount,
7099 const VkValidationCacheEXT* pSrcCaches)
7100{
7101 auto resources = ResourceTracker::get();
7102 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
7103 {
7104 sOnInvalidDynamicallyCheckedCall("vkMergeValidationCachesEXT", "VK_EXT_validation_cache");
7105 }
7106 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007107 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007108 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007109 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007110 return vkMergeValidationCachesEXT_VkResult_return;
7111}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007112static VkResult entry_vkGetValidationCacheDataEXT(
7113 VkDevice device,
7114 VkValidationCacheEXT validationCache,
7115 size_t* pDataSize,
7116 void* pData)
7117{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007118 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007119 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007120 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007121 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007122 return vkGetValidationCacheDataEXT_VkResult_return;
7123}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007124static VkResult dynCheck_entry_vkGetValidationCacheDataEXT(
7125 VkDevice device,
7126 VkValidationCacheEXT validationCache,
7127 size_t* pDataSize,
7128 void* pData)
7129{
7130 auto resources = ResourceTracker::get();
7131 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
7132 {
7133 sOnInvalidDynamicallyCheckedCall("vkGetValidationCacheDataEXT", "VK_EXT_validation_cache");
7134 }
7135 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007136 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007137 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007138 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007139 return vkGetValidationCacheDataEXT_VkResult_return;
7140}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007141#endif
7142#ifdef VK_EXT_descriptor_indexing
7143#endif
7144#ifdef VK_EXT_shader_viewport_index_layer
7145#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007146#ifdef VK_NV_shading_rate_image
7147static void entry_vkCmdBindShadingRateImageNV(
7148 VkCommandBuffer commandBuffer,
7149 VkImageView imageView,
7150 VkImageLayout imageLayout)
7151{
7152 AEMU_SCOPED_TRACE("vkCmdBindShadingRateImageNV");
7153 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7154 vkEnc->vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, true /* do lock */);
7155}
Yahan Zhouf183ac62022-04-13 11:10:26 -07007156static void dynCheck_entry_vkCmdBindShadingRateImageNV(
7157 VkCommandBuffer commandBuffer,
7158 VkImageView imageView,
7159 VkImageLayout imageLayout)
7160{
7161 auto resources = ResourceTracker::get();
7162 VkDevice device = resources->getDevice(commandBuffer);;
7163 if (!resources->hasDeviceExtension(device, "VK_NV_shading_rate_image"))
7164 {
7165 sOnInvalidDynamicallyCheckedCall("vkCmdBindShadingRateImageNV", "VK_NV_shading_rate_image");
7166 }
7167 AEMU_SCOPED_TRACE("vkCmdBindShadingRateImageNV");
7168 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7169 vkEnc->vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, true /* do lock */);
7170}
Yilong Lia8d45f12021-02-07 02:30:21 -08007171static void entry_vkCmdSetViewportShadingRatePaletteNV(
7172 VkCommandBuffer commandBuffer,
7173 uint32_t firstViewport,
7174 uint32_t viewportCount,
7175 const VkShadingRatePaletteNV* pShadingRatePalettes)
7176{
7177 AEMU_SCOPED_TRACE("vkCmdSetViewportShadingRatePaletteNV");
7178 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7179 vkEnc->vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, true /* do lock */);
7180}
Yahan Zhouf183ac62022-04-13 11:10:26 -07007181static void dynCheck_entry_vkCmdSetViewportShadingRatePaletteNV(
7182 VkCommandBuffer commandBuffer,
7183 uint32_t firstViewport,
7184 uint32_t viewportCount,
7185 const VkShadingRatePaletteNV* pShadingRatePalettes)
7186{
7187 auto resources = ResourceTracker::get();
7188 VkDevice device = resources->getDevice(commandBuffer);;
7189 if (!resources->hasDeviceExtension(device, "VK_NV_shading_rate_image"))
7190 {
7191 sOnInvalidDynamicallyCheckedCall("vkCmdSetViewportShadingRatePaletteNV", "VK_NV_shading_rate_image");
7192 }
7193 AEMU_SCOPED_TRACE("vkCmdSetViewportShadingRatePaletteNV");
7194 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7195 vkEnc->vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, true /* do lock */);
7196}
Yilong Lia8d45f12021-02-07 02:30:21 -08007197static void entry_vkCmdSetCoarseSampleOrderNV(
7198 VkCommandBuffer commandBuffer,
7199 VkCoarseSampleOrderTypeNV sampleOrderType,
7200 uint32_t customSampleOrderCount,
7201 const VkCoarseSampleOrderCustomNV* pCustomSampleOrders)
7202{
7203 AEMU_SCOPED_TRACE("vkCmdSetCoarseSampleOrderNV");
7204 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7205 vkEnc->vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, true /* do lock */);
7206}
Yahan Zhouf183ac62022-04-13 11:10:26 -07007207static void dynCheck_entry_vkCmdSetCoarseSampleOrderNV(
7208 VkCommandBuffer commandBuffer,
7209 VkCoarseSampleOrderTypeNV sampleOrderType,
7210 uint32_t customSampleOrderCount,
7211 const VkCoarseSampleOrderCustomNV* pCustomSampleOrders)
7212{
7213 auto resources = ResourceTracker::get();
7214 VkDevice device = resources->getDevice(commandBuffer);;
7215 if (!resources->hasDeviceExtension(device, "VK_NV_shading_rate_image"))
7216 {
7217 sOnInvalidDynamicallyCheckedCall("vkCmdSetCoarseSampleOrderNV", "VK_NV_shading_rate_image");
7218 }
7219 AEMU_SCOPED_TRACE("vkCmdSetCoarseSampleOrderNV");
7220 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7221 vkEnc->vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, true /* do lock */);
7222}
Yilong Lia8d45f12021-02-07 02:30:21 -08007223#endif
7224#ifdef VK_NV_ray_tracing
7225static VkResult entry_vkCreateAccelerationStructureNV(
7226 VkDevice device,
7227 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
7228 const VkAllocationCallbacks* pAllocator,
7229 VkAccelerationStructureNV* pAccelerationStructure)
7230{
7231 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
7232 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7233 VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
7234 vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
7235 return vkCreateAccelerationStructureNV_VkResult_return;
7236}
7237static VkResult dynCheck_entry_vkCreateAccelerationStructureNV(
7238 VkDevice device,
7239 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
7240 const VkAllocationCallbacks* pAllocator,
7241 VkAccelerationStructureNV* pAccelerationStructure)
7242{
7243 auto resources = ResourceTracker::get();
7244 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
7245 {
7246 sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureNV", "VK_NV_ray_tracing");
7247 }
7248 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
7249 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7250 VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
7251 vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
7252 return vkCreateAccelerationStructureNV_VkResult_return;
7253}
7254static void entry_vkDestroyAccelerationStructureNV(
7255 VkDevice device,
7256 VkAccelerationStructureNV accelerationStructure,
7257 const VkAllocationCallbacks* pAllocator)
7258{
7259 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
7260 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7261 vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, true /* do lock */);
7262}
7263static void dynCheck_entry_vkDestroyAccelerationStructureNV(
7264 VkDevice device,
7265 VkAccelerationStructureNV accelerationStructure,
7266 const VkAllocationCallbacks* pAllocator)
7267{
7268 auto resources = ResourceTracker::get();
7269 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
7270 {
7271 sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureNV", "VK_NV_ray_tracing");
7272 }
7273 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
7274 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7275 vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, true /* do lock */);
7276}
7277static void entry_vkGetAccelerationStructureMemoryRequirementsNV(
7278 VkDevice device,
7279 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
7280 VkMemoryRequirements2KHR* pMemoryRequirements)
7281{
7282 AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
7283 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7284 vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
7285}
7286static void dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV(
7287 VkDevice device,
7288 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
7289 VkMemoryRequirements2KHR* pMemoryRequirements)
7290{
7291 auto resources = ResourceTracker::get();
7292 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
7293 {
7294 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureMemoryRequirementsNV", "VK_NV_ray_tracing");
7295 }
7296 AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
7297 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7298 vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
7299}
7300static VkResult entry_vkBindAccelerationStructureMemoryNV(
7301 VkDevice device,
7302 uint32_t bindInfoCount,
7303 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
7304{
7305 AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
7306 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7307 VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
7308 vkBindAccelerationStructureMemoryNV_VkResult_return = vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, true /* do lock */);
7309 return vkBindAccelerationStructureMemoryNV_VkResult_return;
7310}
7311static VkResult dynCheck_entry_vkBindAccelerationStructureMemoryNV(
7312 VkDevice device,
7313 uint32_t bindInfoCount,
7314 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
7315{
7316 auto resources = ResourceTracker::get();
7317 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
7318 {
7319 sOnInvalidDynamicallyCheckedCall("vkBindAccelerationStructureMemoryNV", "VK_NV_ray_tracing");
7320 }
7321 AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
7322 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7323 VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
7324 vkBindAccelerationStructureMemoryNV_VkResult_return = vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, true /* do lock */);
7325 return vkBindAccelerationStructureMemoryNV_VkResult_return;
7326}
7327static void entry_vkCmdBuildAccelerationStructureNV(
7328 VkCommandBuffer commandBuffer,
7329 const VkAccelerationStructureInfoNV* pInfo,
7330 VkBuffer instanceData,
7331 VkDeviceSize instanceOffset,
7332 VkBool32 update,
7333 VkAccelerationStructureNV dst,
7334 VkAccelerationStructureNV src,
7335 VkBuffer scratch,
7336 VkDeviceSize scratchOffset)
7337{
7338 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructureNV");
7339 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7340 vkEnc->vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, true /* do lock */);
7341}
Yahan Zhouf183ac62022-04-13 11:10:26 -07007342static void dynCheck_entry_vkCmdBuildAccelerationStructureNV(
7343 VkCommandBuffer commandBuffer,
7344 const VkAccelerationStructureInfoNV* pInfo,
7345 VkBuffer instanceData,
7346 VkDeviceSize instanceOffset,
7347 VkBool32 update,
7348 VkAccelerationStructureNV dst,
7349 VkAccelerationStructureNV src,
7350 VkBuffer scratch,
7351 VkDeviceSize scratchOffset)
7352{
7353 auto resources = ResourceTracker::get();
7354 VkDevice device = resources->getDevice(commandBuffer);;
7355 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
7356 {
7357 sOnInvalidDynamicallyCheckedCall("vkCmdBuildAccelerationStructureNV", "VK_NV_ray_tracing");
7358 }
7359 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructureNV");
7360 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7361 vkEnc->vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, true /* do lock */);
7362}
Yilong Lia8d45f12021-02-07 02:30:21 -08007363static void entry_vkCmdCopyAccelerationStructureNV(
7364 VkCommandBuffer commandBuffer,
7365 VkAccelerationStructureNV dst,
7366 VkAccelerationStructureNV src,
7367 VkCopyAccelerationStructureModeKHR mode)
7368{
7369 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureNV");
7370 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7371 vkEnc->vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, true /* do lock */);
7372}
Yahan Zhouf183ac62022-04-13 11:10:26 -07007373static void dynCheck_entry_vkCmdCopyAccelerationStructureNV(
7374 VkCommandBuffer commandBuffer,
7375 VkAccelerationStructureNV dst,
7376 VkAccelerationStructureNV src,
7377 VkCopyAccelerationStructureModeKHR mode)
7378{
7379 auto resources = ResourceTracker::get();
7380 VkDevice device = resources->getDevice(commandBuffer);;
7381 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
7382 {
7383 sOnInvalidDynamicallyCheckedCall("vkCmdCopyAccelerationStructureNV", "VK_NV_ray_tracing");
7384 }
7385 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureNV");
7386 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7387 vkEnc->vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, true /* do lock */);
7388}
Yilong Lia8d45f12021-02-07 02:30:21 -08007389static void entry_vkCmdTraceRaysNV(
7390 VkCommandBuffer commandBuffer,
7391 VkBuffer raygenShaderBindingTableBuffer,
7392 VkDeviceSize raygenShaderBindingOffset,
7393 VkBuffer missShaderBindingTableBuffer,
7394 VkDeviceSize missShaderBindingOffset,
7395 VkDeviceSize missShaderBindingStride,
7396 VkBuffer hitShaderBindingTableBuffer,
7397 VkDeviceSize hitShaderBindingOffset,
7398 VkDeviceSize hitShaderBindingStride,
7399 VkBuffer callableShaderBindingTableBuffer,
7400 VkDeviceSize callableShaderBindingOffset,
7401 VkDeviceSize callableShaderBindingStride,
7402 uint32_t width,
7403 uint32_t height,
7404 uint32_t depth)
7405{
7406 AEMU_SCOPED_TRACE("vkCmdTraceRaysNV");
7407 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7408 vkEnc->vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, true /* do lock */);
7409}
Yahan Zhouf183ac62022-04-13 11:10:26 -07007410static void dynCheck_entry_vkCmdTraceRaysNV(
7411 VkCommandBuffer commandBuffer,
7412 VkBuffer raygenShaderBindingTableBuffer,
7413 VkDeviceSize raygenShaderBindingOffset,
7414 VkBuffer missShaderBindingTableBuffer,
7415 VkDeviceSize missShaderBindingOffset,
7416 VkDeviceSize missShaderBindingStride,
7417 VkBuffer hitShaderBindingTableBuffer,
7418 VkDeviceSize hitShaderBindingOffset,
7419 VkDeviceSize hitShaderBindingStride,
7420 VkBuffer callableShaderBindingTableBuffer,
7421 VkDeviceSize callableShaderBindingOffset,
7422 VkDeviceSize callableShaderBindingStride,
7423 uint32_t width,
7424 uint32_t height,
7425 uint32_t depth)
7426{
7427 auto resources = ResourceTracker::get();
7428 VkDevice device = resources->getDevice(commandBuffer);;
7429 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
7430 {
7431 sOnInvalidDynamicallyCheckedCall("vkCmdTraceRaysNV", "VK_NV_ray_tracing");
7432 }
7433 AEMU_SCOPED_TRACE("vkCmdTraceRaysNV");
7434 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7435 vkEnc->vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, true /* do lock */);
7436}
Yilong Lia8d45f12021-02-07 02:30:21 -08007437static VkResult entry_vkCreateRayTracingPipelinesNV(
7438 VkDevice device,
7439 VkPipelineCache pipelineCache,
7440 uint32_t createInfoCount,
7441 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
7442 const VkAllocationCallbacks* pAllocator,
7443 VkPipeline* pPipelines)
7444{
7445 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
7446 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7447 VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
7448 vkCreateRayTracingPipelinesNV_VkResult_return = vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
7449 return vkCreateRayTracingPipelinesNV_VkResult_return;
7450}
7451static VkResult dynCheck_entry_vkCreateRayTracingPipelinesNV(
7452 VkDevice device,
7453 VkPipelineCache pipelineCache,
7454 uint32_t createInfoCount,
7455 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
7456 const VkAllocationCallbacks* pAllocator,
7457 VkPipeline* pPipelines)
7458{
7459 auto resources = ResourceTracker::get();
7460 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
7461 {
7462 sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesNV", "VK_NV_ray_tracing");
7463 }
7464 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
7465 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7466 VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
7467 vkCreateRayTracingPipelinesNV_VkResult_return = vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
7468 return vkCreateRayTracingPipelinesNV_VkResult_return;
7469}
7470static VkResult entry_vkGetRayTracingShaderGroupHandlesKHR(
7471 VkDevice device,
7472 VkPipeline pipeline,
7473 uint32_t firstGroup,
7474 uint32_t groupCount,
7475 size_t dataSize,
7476 void* pData)
7477{
7478 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
7479 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7480 VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
7481 vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
7482 return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
7483}
7484static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR(
7485 VkDevice device,
7486 VkPipeline pipeline,
7487 uint32_t firstGroup,
7488 uint32_t groupCount,
7489 size_t dataSize,
7490 void* pData)
7491{
7492 auto resources = ResourceTracker::get();
7493 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
7494 {
7495 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesKHR", "VK_NV_ray_tracing");
7496 }
7497 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
7498 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7499 VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
7500 vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
7501 return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
7502}
7503static VkResult entry_vkGetRayTracingShaderGroupHandlesNV(
7504 VkDevice device,
7505 VkPipeline pipeline,
7506 uint32_t firstGroup,
7507 uint32_t groupCount,
7508 size_t dataSize,
7509 void* pData)
7510{
7511 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
7512 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7513 VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
7514 vkGetRayTracingShaderGroupHandlesNV_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
7515 return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
7516}
7517static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV(
7518 VkDevice device,
7519 VkPipeline pipeline,
7520 uint32_t firstGroup,
7521 uint32_t groupCount,
7522 size_t dataSize,
7523 void* pData)
7524{
7525 auto resources = ResourceTracker::get();
7526 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
7527 {
7528 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesNV", "VK_NV_ray_tracing");
7529 }
7530 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
7531 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7532 VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
7533 vkGetRayTracingShaderGroupHandlesNV_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
7534 return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
7535}
7536static VkResult entry_vkGetAccelerationStructureHandleNV(
7537 VkDevice device,
7538 VkAccelerationStructureNV accelerationStructure,
7539 size_t dataSize,
7540 void* pData)
7541{
7542 AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
7543 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7544 VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
7545 vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, true /* do lock */);
7546 return vkGetAccelerationStructureHandleNV_VkResult_return;
7547}
7548static VkResult dynCheck_entry_vkGetAccelerationStructureHandleNV(
7549 VkDevice device,
7550 VkAccelerationStructureNV accelerationStructure,
7551 size_t dataSize,
7552 void* pData)
7553{
7554 auto resources = ResourceTracker::get();
7555 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
7556 {
7557 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureHandleNV", "VK_NV_ray_tracing");
7558 }
7559 AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
7560 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7561 VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
7562 vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, true /* do lock */);
7563 return vkGetAccelerationStructureHandleNV_VkResult_return;
7564}
7565static void entry_vkCmdWriteAccelerationStructuresPropertiesNV(
7566 VkCommandBuffer commandBuffer,
7567 uint32_t accelerationStructureCount,
7568 const VkAccelerationStructureNV* pAccelerationStructures,
7569 VkQueryType queryType,
7570 VkQueryPool queryPool,
7571 uint32_t firstQuery)
7572{
7573 AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesNV");
7574 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7575 vkEnc->vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
7576}
Yahan Zhouf183ac62022-04-13 11:10:26 -07007577static void dynCheck_entry_vkCmdWriteAccelerationStructuresPropertiesNV(
7578 VkCommandBuffer commandBuffer,
7579 uint32_t accelerationStructureCount,
7580 const VkAccelerationStructureNV* pAccelerationStructures,
7581 VkQueryType queryType,
7582 VkQueryPool queryPool,
7583 uint32_t firstQuery)
7584{
7585 auto resources = ResourceTracker::get();
7586 VkDevice device = resources->getDevice(commandBuffer);;
7587 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
7588 {
7589 sOnInvalidDynamicallyCheckedCall("vkCmdWriteAccelerationStructuresPropertiesNV", "VK_NV_ray_tracing");
7590 }
7591 AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesNV");
7592 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7593 vkEnc->vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
7594}
Yilong Lia8d45f12021-02-07 02:30:21 -08007595static VkResult entry_vkCompileDeferredNV(
7596 VkDevice device,
7597 VkPipeline pipeline,
7598 uint32_t shader)
7599{
7600 AEMU_SCOPED_TRACE("vkCompileDeferredNV");
7601 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7602 VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
7603 vkCompileDeferredNV_VkResult_return = vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
7604 return vkCompileDeferredNV_VkResult_return;
7605}
7606static VkResult dynCheck_entry_vkCompileDeferredNV(
7607 VkDevice device,
7608 VkPipeline pipeline,
7609 uint32_t shader)
7610{
7611 auto resources = ResourceTracker::get();
7612 if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
7613 {
7614 sOnInvalidDynamicallyCheckedCall("vkCompileDeferredNV", "VK_NV_ray_tracing");
7615 }
7616 AEMU_SCOPED_TRACE("vkCompileDeferredNV");
7617 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7618 VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
7619 vkCompileDeferredNV_VkResult_return = vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
7620 return vkCompileDeferredNV_VkResult_return;
7621}
7622#endif
7623#ifdef VK_NV_representative_fragment_test
7624#endif
7625#ifdef VK_EXT_filter_cubic
7626#endif
7627#ifdef VK_QCOM_render_pass_shader_resolve
7628#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007629#ifdef VK_EXT_global_priority
7630#endif
7631#ifdef VK_EXT_external_memory_host
7632static VkResult entry_vkGetMemoryHostPointerPropertiesEXT(
7633 VkDevice device,
7634 VkExternalMemoryHandleTypeFlagBits handleType,
7635 const void* pHostPointer,
7636 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
7637{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007638 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007639 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007640 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007641 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007642 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
7643}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007644static VkResult dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT(
7645 VkDevice device,
7646 VkExternalMemoryHandleTypeFlagBits handleType,
7647 const void* pHostPointer,
7648 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
7649{
7650 auto resources = ResourceTracker::get();
7651 if (!resources->hasDeviceExtension(device, "VK_EXT_external_memory_host"))
7652 {
7653 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostPointerPropertiesEXT", "VK_EXT_external_memory_host");
7654 }
7655 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007656 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007657 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007658 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007659 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
7660}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007661#endif
7662#ifdef VK_AMD_buffer_marker
7663static void entry_vkCmdWriteBufferMarkerAMD(
7664 VkCommandBuffer commandBuffer,
7665 VkPipelineStageFlagBits pipelineStage,
7666 VkBuffer dstBuffer,
7667 VkDeviceSize dstOffset,
7668 uint32_t marker)
7669{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007670 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007671 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007672 vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007673}
Yahan Zhouf183ac62022-04-13 11:10:26 -07007674static void dynCheck_entry_vkCmdWriteBufferMarkerAMD(
7675 VkCommandBuffer commandBuffer,
7676 VkPipelineStageFlagBits pipelineStage,
7677 VkBuffer dstBuffer,
7678 VkDeviceSize dstOffset,
7679 uint32_t marker)
7680{
7681 auto resources = ResourceTracker::get();
7682 VkDevice device = resources->getDevice(commandBuffer);;
7683 if (!resources->hasDeviceExtension(device, "VK_AMD_buffer_marker"))
7684 {
7685 sOnInvalidDynamicallyCheckedCall("vkCmdWriteBufferMarkerAMD", "VK_AMD_buffer_marker");
7686 }
7687 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD");
7688 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7689 vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, true /* do lock */);
7690}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007691#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007692#ifdef VK_AMD_pipeline_compiler_control
7693#endif
7694#ifdef VK_EXT_calibrated_timestamps
7695static VkResult entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
7696 VkPhysicalDevice physicalDevice,
7697 uint32_t* pTimeDomainCount,
7698 VkTimeDomainEXT* pTimeDomains)
7699{
7700 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCalibrateableTimeDomainsEXT");
7701 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7702 VkResult vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return = (VkResult)0;
7703 vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return = vkEnc->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, true /* do lock */);
7704 return vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return;
7705}
7706static VkResult entry_vkGetCalibratedTimestampsEXT(
7707 VkDevice device,
7708 uint32_t timestampCount,
7709 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
7710 uint64_t* pTimestamps,
7711 uint64_t* pMaxDeviation)
7712{
7713 AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
7714 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7715 VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
7716 vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
7717 return vkGetCalibratedTimestampsEXT_VkResult_return;
7718}
7719static VkResult dynCheck_entry_vkGetCalibratedTimestampsEXT(
7720 VkDevice device,
7721 uint32_t timestampCount,
7722 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
7723 uint64_t* pTimestamps,
7724 uint64_t* pMaxDeviation)
7725{
7726 auto resources = ResourceTracker::get();
7727 if (!resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps"))
7728 {
7729 sOnInvalidDynamicallyCheckedCall("vkGetCalibratedTimestampsEXT", "VK_EXT_calibrated_timestamps");
7730 }
7731 AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
7732 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7733 VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
7734 vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
7735 return vkGetCalibratedTimestampsEXT_VkResult_return;
7736}
7737#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007738#ifdef VK_AMD_shader_core_properties
7739#endif
Yilong Li353409a2022-01-04 02:37:56 -08007740#ifdef VK_EXT_video_decode_h265
7741#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007742#ifdef VK_AMD_memory_overallocation_behavior
7743#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007744#ifdef VK_EXT_vertex_attribute_divisor
7745#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007746#ifdef VK_GGP_frame_token
7747#endif
7748#ifdef VK_EXT_pipeline_creation_feedback
7749#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007750#ifdef VK_NV_shader_subgroup_partitioned
7751#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007752#ifdef VK_NV_compute_shader_derivatives
7753#endif
7754#ifdef VK_NV_mesh_shader
7755static void entry_vkCmdDrawMeshTasksNV(
7756 VkCommandBuffer commandBuffer,
7757 uint32_t taskCount,
7758 uint32_t firstTask)
7759{
7760 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksNV");
7761 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7762 vkEnc->vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, true /* do lock */);
7763}
Yahan Zhouf183ac62022-04-13 11:10:26 -07007764static void dynCheck_entry_vkCmdDrawMeshTasksNV(
7765 VkCommandBuffer commandBuffer,
7766 uint32_t taskCount,
7767 uint32_t firstTask)
7768{
7769 auto resources = ResourceTracker::get();
7770 VkDevice device = resources->getDevice(commandBuffer);;
7771 if (!resources->hasDeviceExtension(device, "VK_NV_mesh_shader"))
7772 {
7773 sOnInvalidDynamicallyCheckedCall("vkCmdDrawMeshTasksNV", "VK_NV_mesh_shader");
7774 }
7775 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksNV");
7776 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7777 vkEnc->vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, true /* do lock */);
7778}
Yilong Lia8d45f12021-02-07 02:30:21 -08007779static void entry_vkCmdDrawMeshTasksIndirectNV(
7780 VkCommandBuffer commandBuffer,
7781 VkBuffer buffer,
7782 VkDeviceSize offset,
7783 uint32_t drawCount,
7784 uint32_t stride)
7785{
7786 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectNV");
7787 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7788 vkEnc->vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
7789}
Yahan Zhouf183ac62022-04-13 11:10:26 -07007790static void dynCheck_entry_vkCmdDrawMeshTasksIndirectNV(
7791 VkCommandBuffer commandBuffer,
7792 VkBuffer buffer,
7793 VkDeviceSize offset,
7794 uint32_t drawCount,
7795 uint32_t stride)
7796{
7797 auto resources = ResourceTracker::get();
7798 VkDevice device = resources->getDevice(commandBuffer);;
7799 if (!resources->hasDeviceExtension(device, "VK_NV_mesh_shader"))
7800 {
7801 sOnInvalidDynamicallyCheckedCall("vkCmdDrawMeshTasksIndirectNV", "VK_NV_mesh_shader");
7802 }
7803 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectNV");
7804 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7805 vkEnc->vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
7806}
Yilong Lia8d45f12021-02-07 02:30:21 -08007807static void entry_vkCmdDrawMeshTasksIndirectCountNV(
7808 VkCommandBuffer commandBuffer,
7809 VkBuffer buffer,
7810 VkDeviceSize offset,
7811 VkBuffer countBuffer,
7812 VkDeviceSize countBufferOffset,
7813 uint32_t maxDrawCount,
7814 uint32_t stride)
7815{
7816 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectCountNV");
7817 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7818 vkEnc->vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
7819}
Yahan Zhouf183ac62022-04-13 11:10:26 -07007820static void dynCheck_entry_vkCmdDrawMeshTasksIndirectCountNV(
7821 VkCommandBuffer commandBuffer,
7822 VkBuffer buffer,
7823 VkDeviceSize offset,
7824 VkBuffer countBuffer,
7825 VkDeviceSize countBufferOffset,
7826 uint32_t maxDrawCount,
7827 uint32_t stride)
7828{
7829 auto resources = ResourceTracker::get();
7830 VkDevice device = resources->getDevice(commandBuffer);;
7831 if (!resources->hasDeviceExtension(device, "VK_NV_mesh_shader"))
7832 {
7833 sOnInvalidDynamicallyCheckedCall("vkCmdDrawMeshTasksIndirectCountNV", "VK_NV_mesh_shader");
7834 }
7835 AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectCountNV");
7836 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7837 vkEnc->vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
7838}
Yilong Lia8d45f12021-02-07 02:30:21 -08007839#endif
7840#ifdef VK_NV_fragment_shader_barycentric
7841#endif
7842#ifdef VK_NV_shader_image_footprint
7843#endif
7844#ifdef VK_NV_scissor_exclusive
7845static void entry_vkCmdSetExclusiveScissorNV(
7846 VkCommandBuffer commandBuffer,
7847 uint32_t firstExclusiveScissor,
7848 uint32_t exclusiveScissorCount,
7849 const VkRect2D* pExclusiveScissors)
7850{
7851 AEMU_SCOPED_TRACE("vkCmdSetExclusiveScissorNV");
7852 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7853 vkEnc->vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, true /* do lock */);
7854}
Yahan Zhouf183ac62022-04-13 11:10:26 -07007855static void dynCheck_entry_vkCmdSetExclusiveScissorNV(
7856 VkCommandBuffer commandBuffer,
7857 uint32_t firstExclusiveScissor,
7858 uint32_t exclusiveScissorCount,
7859 const VkRect2D* pExclusiveScissors)
7860{
7861 auto resources = ResourceTracker::get();
7862 VkDevice device = resources->getDevice(commandBuffer);;
7863 if (!resources->hasDeviceExtension(device, "VK_NV_scissor_exclusive"))
7864 {
7865 sOnInvalidDynamicallyCheckedCall("vkCmdSetExclusiveScissorNV", "VK_NV_scissor_exclusive");
7866 }
7867 AEMU_SCOPED_TRACE("vkCmdSetExclusiveScissorNV");
7868 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7869 vkEnc->vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, true /* do lock */);
7870}
Yilong Lia8d45f12021-02-07 02:30:21 -08007871#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007872#ifdef VK_NV_device_diagnostic_checkpoints
7873static void entry_vkCmdSetCheckpointNV(
7874 VkCommandBuffer commandBuffer,
7875 const void* pCheckpointMarker)
7876{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007877 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007878 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007879 vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007880}
Yahan Zhouf183ac62022-04-13 11:10:26 -07007881static void dynCheck_entry_vkCmdSetCheckpointNV(
7882 VkCommandBuffer commandBuffer,
7883 const void* pCheckpointMarker)
7884{
7885 auto resources = ResourceTracker::get();
7886 VkDevice device = resources->getDevice(commandBuffer);;
7887 if (!resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints"))
7888 {
7889 sOnInvalidDynamicallyCheckedCall("vkCmdSetCheckpointNV", "VK_NV_device_diagnostic_checkpoints");
7890 }
7891 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
7892 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7893 vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, true /* do lock */);
7894}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007895static void entry_vkGetQueueCheckpointDataNV(
7896 VkQueue queue,
7897 uint32_t* pCheckpointDataCount,
7898 VkCheckpointDataNV* pCheckpointData)
7899{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007900 AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007901 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08007902 vkEnc->vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, true /* do lock */);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08007903}
7904#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08007905#ifdef VK_INTEL_shader_integer_functions2
7906#endif
7907#ifdef VK_INTEL_performance_query
7908static VkResult entry_vkInitializePerformanceApiINTEL(
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08007909 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08007910 const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08007911{
Yilong Lia8d45f12021-02-07 02:30:21 -08007912 AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007913 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Yilong Lia8d45f12021-02-07 02:30:21 -08007914 VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
7915 vkInitializePerformanceApiINTEL_VkResult_return = vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
7916 return vkInitializePerformanceApiINTEL_VkResult_return;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08007917}
Yilong Lia8d45f12021-02-07 02:30:21 -08007918static VkResult dynCheck_entry_vkInitializePerformanceApiINTEL(
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007919 VkDevice device,
Yilong Lia8d45f12021-02-07 02:30:21 -08007920 const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007921{
7922 auto resources = ResourceTracker::get();
Yilong Lia8d45f12021-02-07 02:30:21 -08007923 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007924 {
Yilong Lia8d45f12021-02-07 02:30:21 -08007925 sOnInvalidDynamicallyCheckedCall("vkInitializePerformanceApiINTEL", "VK_INTEL_performance_query");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007926 }
Yilong Lia8d45f12021-02-07 02:30:21 -08007927 AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
Lingfeng Yang4f539502021-01-22 23:01:57 -08007928 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Yilong Lia8d45f12021-02-07 02:30:21 -08007929 VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
7930 vkInitializePerformanceApiINTEL_VkResult_return = vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
7931 return vkInitializePerformanceApiINTEL_VkResult_return;
7932}
7933static void entry_vkUninitializePerformanceApiINTEL(
7934 VkDevice device)
7935{
7936 AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
7937 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7938 vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
7939}
7940static void dynCheck_entry_vkUninitializePerformanceApiINTEL(
7941 VkDevice device)
7942{
7943 auto resources = ResourceTracker::get();
7944 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
7945 {
7946 sOnInvalidDynamicallyCheckedCall("vkUninitializePerformanceApiINTEL", "VK_INTEL_performance_query");
7947 }
7948 AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
7949 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
7950 vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
7951}
7952static VkResult entry_vkCmdSetPerformanceMarkerINTEL(
7953 VkCommandBuffer commandBuffer,
7954 const VkPerformanceMarkerInfoINTEL* pMarkerInfo)
7955{
7956 AEMU_SCOPED_TRACE("vkCmdSetPerformanceMarkerINTEL");
7957 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7958 VkResult vkCmdSetPerformanceMarkerINTEL_VkResult_return = (VkResult)0;
7959 vkCmdSetPerformanceMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
7960 return vkCmdSetPerformanceMarkerINTEL_VkResult_return;
7961}
Yahan Zhouf183ac62022-04-13 11:10:26 -07007962static VkResult dynCheck_entry_vkCmdSetPerformanceMarkerINTEL(
7963 VkCommandBuffer commandBuffer,
7964 const VkPerformanceMarkerInfoINTEL* pMarkerInfo)
7965{
7966 auto resources = ResourceTracker::get();
7967 VkDevice device = resources->getDevice(commandBuffer);;
7968 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
7969 {
7970 sOnInvalidDynamicallyCheckedCall("vkCmdSetPerformanceMarkerINTEL", "VK_INTEL_performance_query");
7971 }
7972 AEMU_SCOPED_TRACE("vkCmdSetPerformanceMarkerINTEL");
7973 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7974 VkResult vkCmdSetPerformanceMarkerINTEL_VkResult_return = (VkResult)0;
7975 vkCmdSetPerformanceMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
7976 return vkCmdSetPerformanceMarkerINTEL_VkResult_return;
7977}
Yilong Lia8d45f12021-02-07 02:30:21 -08007978static VkResult entry_vkCmdSetPerformanceStreamMarkerINTEL(
7979 VkCommandBuffer commandBuffer,
7980 const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo)
7981{
7982 AEMU_SCOPED_TRACE("vkCmdSetPerformanceStreamMarkerINTEL");
7983 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
7984 VkResult vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = (VkResult)0;
7985 vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
7986 return vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return;
7987}
Yahan Zhouf183ac62022-04-13 11:10:26 -07007988static VkResult dynCheck_entry_vkCmdSetPerformanceStreamMarkerINTEL(
7989 VkCommandBuffer commandBuffer,
7990 const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo)
7991{
7992 auto resources = ResourceTracker::get();
7993 VkDevice device = resources->getDevice(commandBuffer);;
7994 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
7995 {
7996 sOnInvalidDynamicallyCheckedCall("vkCmdSetPerformanceStreamMarkerINTEL", "VK_INTEL_performance_query");
7997 }
7998 AEMU_SCOPED_TRACE("vkCmdSetPerformanceStreamMarkerINTEL");
7999 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8000 VkResult vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = (VkResult)0;
8001 vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
8002 return vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return;
8003}
Yilong Lia8d45f12021-02-07 02:30:21 -08008004static VkResult entry_vkCmdSetPerformanceOverrideINTEL(
8005 VkCommandBuffer commandBuffer,
8006 const VkPerformanceOverrideInfoINTEL* pOverrideInfo)
8007{
8008 AEMU_SCOPED_TRACE("vkCmdSetPerformanceOverrideINTEL");
8009 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8010 VkResult vkCmdSetPerformanceOverrideINTEL_VkResult_return = (VkResult)0;
8011 vkCmdSetPerformanceOverrideINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, true /* do lock */);
8012 return vkCmdSetPerformanceOverrideINTEL_VkResult_return;
8013}
Yahan Zhouf183ac62022-04-13 11:10:26 -07008014static VkResult dynCheck_entry_vkCmdSetPerformanceOverrideINTEL(
8015 VkCommandBuffer commandBuffer,
8016 const VkPerformanceOverrideInfoINTEL* pOverrideInfo)
8017{
8018 auto resources = ResourceTracker::get();
8019 VkDevice device = resources->getDevice(commandBuffer);;
8020 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
8021 {
8022 sOnInvalidDynamicallyCheckedCall("vkCmdSetPerformanceOverrideINTEL", "VK_INTEL_performance_query");
8023 }
8024 AEMU_SCOPED_TRACE("vkCmdSetPerformanceOverrideINTEL");
8025 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8026 VkResult vkCmdSetPerformanceOverrideINTEL_VkResult_return = (VkResult)0;
8027 vkCmdSetPerformanceOverrideINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, true /* do lock */);
8028 return vkCmdSetPerformanceOverrideINTEL_VkResult_return;
8029}
Yilong Lia8d45f12021-02-07 02:30:21 -08008030static VkResult entry_vkAcquirePerformanceConfigurationINTEL(
8031 VkDevice device,
8032 const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
8033 VkPerformanceConfigurationINTEL* pConfiguration)
8034{
8035 AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
8036 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8037 VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
8038 vkAcquirePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, true /* do lock */);
8039 return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
8040}
8041static VkResult dynCheck_entry_vkAcquirePerformanceConfigurationINTEL(
8042 VkDevice device,
8043 const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
8044 VkPerformanceConfigurationINTEL* pConfiguration)
8045{
8046 auto resources = ResourceTracker::get();
8047 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
8048 {
8049 sOnInvalidDynamicallyCheckedCall("vkAcquirePerformanceConfigurationINTEL", "VK_INTEL_performance_query");
8050 }
8051 AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
8052 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8053 VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
8054 vkAcquirePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, true /* do lock */);
8055 return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
8056}
8057static VkResult entry_vkReleasePerformanceConfigurationINTEL(
8058 VkDevice device,
8059 VkPerformanceConfigurationINTEL configuration)
8060{
8061 AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
8062 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8063 VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
8064 vkReleasePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
8065 return vkReleasePerformanceConfigurationINTEL_VkResult_return;
8066}
8067static VkResult dynCheck_entry_vkReleasePerformanceConfigurationINTEL(
8068 VkDevice device,
8069 VkPerformanceConfigurationINTEL configuration)
8070{
8071 auto resources = ResourceTracker::get();
8072 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
8073 {
8074 sOnInvalidDynamicallyCheckedCall("vkReleasePerformanceConfigurationINTEL", "VK_INTEL_performance_query");
8075 }
8076 AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
8077 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8078 VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
8079 vkReleasePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
8080 return vkReleasePerformanceConfigurationINTEL_VkResult_return;
8081}
8082static VkResult entry_vkQueueSetPerformanceConfigurationINTEL(
8083 VkQueue queue,
8084 VkPerformanceConfigurationINTEL configuration)
8085{
8086 AEMU_SCOPED_TRACE("vkQueueSetPerformanceConfigurationINTEL");
8087 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
8088 VkResult vkQueueSetPerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
8089 vkQueueSetPerformanceConfigurationINTEL_VkResult_return = vkEnc->vkQueueSetPerformanceConfigurationINTEL(queue, configuration, true /* do lock */);
8090 return vkQueueSetPerformanceConfigurationINTEL_VkResult_return;
8091}
8092static VkResult entry_vkGetPerformanceParameterINTEL(
8093 VkDevice device,
8094 VkPerformanceParameterTypeINTEL parameter,
8095 VkPerformanceValueINTEL* pValue)
8096{
8097 AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
8098 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8099 VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
8100 vkGetPerformanceParameterINTEL_VkResult_return = vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
8101 return vkGetPerformanceParameterINTEL_VkResult_return;
8102}
8103static VkResult dynCheck_entry_vkGetPerformanceParameterINTEL(
8104 VkDevice device,
8105 VkPerformanceParameterTypeINTEL parameter,
8106 VkPerformanceValueINTEL* pValue)
8107{
8108 auto resources = ResourceTracker::get();
8109 if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
8110 {
8111 sOnInvalidDynamicallyCheckedCall("vkGetPerformanceParameterINTEL", "VK_INTEL_performance_query");
8112 }
8113 AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
8114 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8115 VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
8116 vkGetPerformanceParameterINTEL_VkResult_return = vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
8117 return vkGetPerformanceParameterINTEL_VkResult_return;
8118}
8119#endif
8120#ifdef VK_EXT_pci_bus_info
8121#endif
8122#ifdef VK_AMD_display_native_hdr
8123static void entry_vkSetLocalDimmingAMD(
8124 VkDevice device,
8125 VkSwapchainKHR swapChain,
8126 VkBool32 localDimmingEnable)
8127{
8128 AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
8129 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8130 vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
8131}
8132static void dynCheck_entry_vkSetLocalDimmingAMD(
8133 VkDevice device,
8134 VkSwapchainKHR swapChain,
8135 VkBool32 localDimmingEnable)
8136{
8137 auto resources = ResourceTracker::get();
8138 if (!resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr"))
8139 {
8140 sOnInvalidDynamicallyCheckedCall("vkSetLocalDimmingAMD", "VK_AMD_display_native_hdr");
8141 }
8142 AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
8143 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8144 vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
8145}
8146#endif
8147#ifdef VK_FUCHSIA_imagepipe_surface
8148static VkResult entry_vkCreateImagePipeSurfaceFUCHSIA(
8149 VkInstance instance,
8150 const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
8151 const VkAllocationCallbacks* pAllocator,
8152 VkSurfaceKHR* pSurface)
8153{
8154 AEMU_SCOPED_TRACE("vkCreateImagePipeSurfaceFUCHSIA");
8155 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8156 VkResult vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = (VkResult)0;
8157 vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = vkEnc->vkCreateImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
8158 return vkCreateImagePipeSurfaceFUCHSIA_VkResult_return;
8159}
8160#endif
8161#ifdef VK_EXT_metal_surface
8162static VkResult entry_vkCreateMetalSurfaceEXT(
8163 VkInstance instance,
8164 const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
8165 const VkAllocationCallbacks* pAllocator,
8166 VkSurfaceKHR* pSurface)
8167{
8168 AEMU_SCOPED_TRACE("vkCreateMetalSurfaceEXT");
8169 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8170 VkResult vkCreateMetalSurfaceEXT_VkResult_return = (VkResult)0;
8171 vkCreateMetalSurfaceEXT_VkResult_return = vkEnc->vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
8172 return vkCreateMetalSurfaceEXT_VkResult_return;
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008173}
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08008174#endif
Yilong Li48081632021-04-13 22:38:10 -07008175#ifdef VK_EXT_fragment_density_map
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008176#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008177#ifdef VK_EXT_scalar_block_layout
8178#endif
8179#ifdef VK_GOOGLE_hlsl_functionality1
8180#endif
8181#ifdef VK_GOOGLE_decorate_string
8182#endif
8183#ifdef VK_EXT_subgroup_size_control
8184#endif
8185#ifdef VK_AMD_shader_core_properties2
8186#endif
8187#ifdef VK_AMD_device_coherent_memory
8188#endif
8189#ifdef VK_EXT_shader_image_atomic_int64
8190#endif
8191#ifdef VK_EXT_memory_budget
8192#endif
8193#ifdef VK_EXT_memory_priority
8194#endif
8195#ifdef VK_NV_dedicated_allocation_image_aliasing
8196#endif
8197#ifdef VK_EXT_buffer_device_address
8198static VkDeviceAddress entry_vkGetBufferDeviceAddressEXT(
8199 VkDevice device,
8200 const VkBufferDeviceAddressInfo* pInfo)
8201{
8202 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
8203 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8204 VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
8205 vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
8206 return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
8207}
8208static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressEXT(
8209 VkDevice device,
8210 const VkBufferDeviceAddressInfo* pInfo)
8211{
8212 auto resources = ResourceTracker::get();
8213 if (!resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address"))
8214 {
8215 sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressEXT", "VK_EXT_buffer_device_address");
8216 }
8217 AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
8218 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8219 VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
8220 vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
8221 return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
8222}
8223#endif
8224#ifdef VK_EXT_tooling_info
8225static VkResult entry_vkGetPhysicalDeviceToolPropertiesEXT(
8226 VkPhysicalDevice physicalDevice,
8227 uint32_t* pToolCount,
8228 VkPhysicalDeviceToolPropertiesEXT* pToolProperties)
8229{
8230 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceToolPropertiesEXT");
8231 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8232 VkResult vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = (VkResult)0;
8233 vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = vkEnc->vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, true /* do lock */);
8234 return vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return;
8235}
8236#endif
8237#ifdef VK_EXT_separate_stencil_usage
8238#endif
8239#ifdef VK_EXT_validation_features
8240#endif
8241#ifdef VK_NV_cooperative_matrix
8242static VkResult entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
8243 VkPhysicalDevice physicalDevice,
8244 uint32_t* pPropertyCount,
8245 VkCooperativeMatrixPropertiesNV* pProperties)
8246{
8247 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
8248 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8249 VkResult vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return = (VkResult)0;
8250 vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
8251 return vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return;
8252}
8253#endif
8254#ifdef VK_NV_coverage_reduction_mode
8255static VkResult entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
8256 VkPhysicalDevice physicalDevice,
8257 uint32_t* pCombinationCount,
8258 VkFramebufferMixedSamplesCombinationNV* pCombinations)
8259{
8260 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
8261 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8262 VkResult vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return = (VkResult)0;
8263 vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return = vkEnc->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, true /* do lock */);
8264 return vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return;
8265}
8266#endif
8267#ifdef VK_EXT_fragment_shader_interlock
8268#endif
8269#ifdef VK_EXT_ycbcr_image_arrays
8270#endif
Yilong Li353409a2022-01-04 02:37:56 -08008271#ifdef VK_EXT_provoking_vertex
8272#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008273#ifdef VK_EXT_full_screen_exclusive
8274static VkResult entry_vkGetPhysicalDeviceSurfacePresentModes2EXT(
8275 VkPhysicalDevice physicalDevice,
8276 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
8277 uint32_t* pPresentModeCount,
8278 VkPresentModeKHR* pPresentModes)
8279{
8280 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModes2EXT");
8281 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8282 VkResult vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
8283 vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes, true /* do lock */);
8284 return vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return;
8285}
8286static VkResult entry_vkAcquireFullScreenExclusiveModeEXT(
8287 VkDevice device,
8288 VkSwapchainKHR swapchain)
8289{
8290 AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
8291 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8292 VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
8293 vkAcquireFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
8294 return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
8295}
8296static VkResult dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT(
8297 VkDevice device,
8298 VkSwapchainKHR swapchain)
8299{
8300 auto resources = ResourceTracker::get();
8301 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
8302 {
8303 sOnInvalidDynamicallyCheckedCall("vkAcquireFullScreenExclusiveModeEXT", "VK_EXT_full_screen_exclusive");
8304 }
8305 AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
8306 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8307 VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
8308 vkAcquireFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
8309 return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
8310}
8311static VkResult entry_vkReleaseFullScreenExclusiveModeEXT(
8312 VkDevice device,
8313 VkSwapchainKHR swapchain)
8314{
8315 AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
8316 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8317 VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
8318 vkReleaseFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
8319 return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
8320}
8321static VkResult dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT(
8322 VkDevice device,
8323 VkSwapchainKHR swapchain)
8324{
8325 auto resources = ResourceTracker::get();
8326 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
8327 {
8328 sOnInvalidDynamicallyCheckedCall("vkReleaseFullScreenExclusiveModeEXT", "VK_EXT_full_screen_exclusive");
8329 }
8330 AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
8331 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8332 VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
8333 vkReleaseFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
8334 return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
8335}
8336static VkResult entry_vkGetDeviceGroupSurfacePresentModes2EXT(
8337 VkDevice device,
8338 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
8339 VkDeviceGroupPresentModeFlagsKHR* pModes)
8340{
8341 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
8342 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8343 VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
8344 vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, true /* do lock */);
8345 return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
8346}
8347static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT(
8348 VkDevice device,
8349 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
8350 VkDeviceGroupPresentModeFlagsKHR* pModes)
8351{
8352 auto resources = ResourceTracker::get();
8353 if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
8354 {
8355 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModes2EXT", "VK_EXT_full_screen_exclusive");
8356 }
8357 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
8358 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8359 VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
8360 vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, true /* do lock */);
8361 return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
8362}
8363#endif
8364#ifdef VK_EXT_headless_surface
8365static VkResult entry_vkCreateHeadlessSurfaceEXT(
8366 VkInstance instance,
8367 const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo,
8368 const VkAllocationCallbacks* pAllocator,
8369 VkSurfaceKHR* pSurface)
8370{
8371 AEMU_SCOPED_TRACE("vkCreateHeadlessSurfaceEXT");
8372 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8373 VkResult vkCreateHeadlessSurfaceEXT_VkResult_return = (VkResult)0;
8374 vkCreateHeadlessSurfaceEXT_VkResult_return = vkEnc->vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
8375 return vkCreateHeadlessSurfaceEXT_VkResult_return;
8376}
8377#endif
8378#ifdef VK_EXT_line_rasterization
8379static void entry_vkCmdSetLineStippleEXT(
8380 VkCommandBuffer commandBuffer,
8381 uint32_t lineStippleFactor,
8382 uint16_t lineStipplePattern)
8383{
8384 AEMU_SCOPED_TRACE("vkCmdSetLineStippleEXT");
8385 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8386 vkEnc->vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, true /* do lock */);
8387}
Yahan Zhouf183ac62022-04-13 11:10:26 -07008388static void dynCheck_entry_vkCmdSetLineStippleEXT(
8389 VkCommandBuffer commandBuffer,
8390 uint32_t lineStippleFactor,
8391 uint16_t lineStipplePattern)
8392{
8393 auto resources = ResourceTracker::get();
8394 VkDevice device = resources->getDevice(commandBuffer);;
8395 if (!resources->hasDeviceExtension(device, "VK_EXT_line_rasterization"))
8396 {
8397 sOnInvalidDynamicallyCheckedCall("vkCmdSetLineStippleEXT", "VK_EXT_line_rasterization");
8398 }
8399 AEMU_SCOPED_TRACE("vkCmdSetLineStippleEXT");
8400 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8401 vkEnc->vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, true /* do lock */);
8402}
Yilong Lia8d45f12021-02-07 02:30:21 -08008403#endif
8404#ifdef VK_EXT_shader_atomic_float
8405#endif
8406#ifdef VK_EXT_host_query_reset
8407static void entry_vkResetQueryPoolEXT(
8408 VkDevice device,
8409 VkQueryPool queryPool,
8410 uint32_t firstQuery,
8411 uint32_t queryCount)
8412{
8413 AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
8414 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8415 vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
8416}
8417static void dynCheck_entry_vkResetQueryPoolEXT(
8418 VkDevice device,
8419 VkQueryPool queryPool,
8420 uint32_t firstQuery,
8421 uint32_t queryCount)
8422{
8423 auto resources = ResourceTracker::get();
8424 if (!resources->hasDeviceExtension(device, "VK_EXT_host_query_reset"))
8425 {
8426 sOnInvalidDynamicallyCheckedCall("vkResetQueryPoolEXT", "VK_EXT_host_query_reset");
8427 }
8428 AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
8429 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8430 vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
8431}
8432#endif
8433#ifdef VK_EXT_index_type_uint8
8434#endif
8435#ifdef VK_EXT_extended_dynamic_state
8436static void entry_vkCmdSetCullModeEXT(
8437 VkCommandBuffer commandBuffer,
8438 VkCullModeFlags cullMode)
8439{
8440 AEMU_SCOPED_TRACE("vkCmdSetCullModeEXT");
8441 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8442 vkEnc->vkCmdSetCullModeEXT(commandBuffer, cullMode, true /* do lock */);
8443}
Yahan Zhouf183ac62022-04-13 11:10:26 -07008444static void dynCheck_entry_vkCmdSetCullModeEXT(
8445 VkCommandBuffer commandBuffer,
8446 VkCullModeFlags cullMode)
8447{
8448 auto resources = ResourceTracker::get();
8449 VkDevice device = resources->getDevice(commandBuffer);;
8450 if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
8451 {
8452 sOnInvalidDynamicallyCheckedCall("vkCmdSetCullModeEXT", "VK_EXT_extended_dynamic_state");
8453 }
8454 AEMU_SCOPED_TRACE("vkCmdSetCullModeEXT");
8455 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8456 vkEnc->vkCmdSetCullModeEXT(commandBuffer, cullMode, true /* do lock */);
8457}
Yilong Lia8d45f12021-02-07 02:30:21 -08008458static void entry_vkCmdSetFrontFaceEXT(
8459 VkCommandBuffer commandBuffer,
8460 VkFrontFace frontFace)
8461{
8462 AEMU_SCOPED_TRACE("vkCmdSetFrontFaceEXT");
8463 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8464 vkEnc->vkCmdSetFrontFaceEXT(commandBuffer, frontFace, true /* do lock */);
8465}
Yahan Zhouf183ac62022-04-13 11:10:26 -07008466static void dynCheck_entry_vkCmdSetFrontFaceEXT(
8467 VkCommandBuffer commandBuffer,
8468 VkFrontFace frontFace)
8469{
8470 auto resources = ResourceTracker::get();
8471 VkDevice device = resources->getDevice(commandBuffer);;
8472 if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
8473 {
8474 sOnInvalidDynamicallyCheckedCall("vkCmdSetFrontFaceEXT", "VK_EXT_extended_dynamic_state");
8475 }
8476 AEMU_SCOPED_TRACE("vkCmdSetFrontFaceEXT");
8477 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8478 vkEnc->vkCmdSetFrontFaceEXT(commandBuffer, frontFace, true /* do lock */);
8479}
Yilong Lia8d45f12021-02-07 02:30:21 -08008480static void entry_vkCmdSetPrimitiveTopologyEXT(
8481 VkCommandBuffer commandBuffer,
8482 VkPrimitiveTopology primitiveTopology)
8483{
8484 AEMU_SCOPED_TRACE("vkCmdSetPrimitiveTopologyEXT");
8485 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8486 vkEnc->vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, true /* do lock */);
8487}
Yahan Zhouf183ac62022-04-13 11:10:26 -07008488static void dynCheck_entry_vkCmdSetPrimitiveTopologyEXT(
8489 VkCommandBuffer commandBuffer,
8490 VkPrimitiveTopology primitiveTopology)
8491{
8492 auto resources = ResourceTracker::get();
8493 VkDevice device = resources->getDevice(commandBuffer);;
8494 if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
8495 {
8496 sOnInvalidDynamicallyCheckedCall("vkCmdSetPrimitiveTopologyEXT", "VK_EXT_extended_dynamic_state");
8497 }
8498 AEMU_SCOPED_TRACE("vkCmdSetPrimitiveTopologyEXT");
8499 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8500 vkEnc->vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, true /* do lock */);
8501}
Yilong Lia8d45f12021-02-07 02:30:21 -08008502static void entry_vkCmdSetViewportWithCountEXT(
8503 VkCommandBuffer commandBuffer,
8504 uint32_t viewportCount,
8505 const VkViewport* pViewports)
8506{
8507 AEMU_SCOPED_TRACE("vkCmdSetViewportWithCountEXT");
8508 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8509 vkEnc->vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, true /* do lock */);
8510}
Yahan Zhouf183ac62022-04-13 11:10:26 -07008511static void dynCheck_entry_vkCmdSetViewportWithCountEXT(
8512 VkCommandBuffer commandBuffer,
8513 uint32_t viewportCount,
8514 const VkViewport* pViewports)
8515{
8516 auto resources = ResourceTracker::get();
8517 VkDevice device = resources->getDevice(commandBuffer);;
8518 if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
8519 {
8520 sOnInvalidDynamicallyCheckedCall("vkCmdSetViewportWithCountEXT", "VK_EXT_extended_dynamic_state");
8521 }
8522 AEMU_SCOPED_TRACE("vkCmdSetViewportWithCountEXT");
8523 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8524 vkEnc->vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, true /* do lock */);
8525}
Yilong Lia8d45f12021-02-07 02:30:21 -08008526static void entry_vkCmdSetScissorWithCountEXT(
8527 VkCommandBuffer commandBuffer,
8528 uint32_t scissorCount,
8529 const VkRect2D* pScissors)
8530{
8531 AEMU_SCOPED_TRACE("vkCmdSetScissorWithCountEXT");
8532 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8533 vkEnc->vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, true /* do lock */);
8534}
Yahan Zhouf183ac62022-04-13 11:10:26 -07008535static void dynCheck_entry_vkCmdSetScissorWithCountEXT(
8536 VkCommandBuffer commandBuffer,
8537 uint32_t scissorCount,
8538 const VkRect2D* pScissors)
8539{
8540 auto resources = ResourceTracker::get();
8541 VkDevice device = resources->getDevice(commandBuffer);;
8542 if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
8543 {
8544 sOnInvalidDynamicallyCheckedCall("vkCmdSetScissorWithCountEXT", "VK_EXT_extended_dynamic_state");
8545 }
8546 AEMU_SCOPED_TRACE("vkCmdSetScissorWithCountEXT");
8547 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8548 vkEnc->vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, true /* do lock */);
8549}
Yilong Lia8d45f12021-02-07 02:30:21 -08008550static void entry_vkCmdBindVertexBuffers2EXT(
8551 VkCommandBuffer commandBuffer,
8552 uint32_t firstBinding,
8553 uint32_t bindingCount,
8554 const VkBuffer* pBuffers,
8555 const VkDeviceSize* pOffsets,
8556 const VkDeviceSize* pSizes,
8557 const VkDeviceSize* pStrides)
8558{
8559 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers2EXT");
8560 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8561 vkEnc->vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, true /* do lock */);
8562}
Yahan Zhouf183ac62022-04-13 11:10:26 -07008563static void dynCheck_entry_vkCmdBindVertexBuffers2EXT(
8564 VkCommandBuffer commandBuffer,
8565 uint32_t firstBinding,
8566 uint32_t bindingCount,
8567 const VkBuffer* pBuffers,
8568 const VkDeviceSize* pOffsets,
8569 const VkDeviceSize* pSizes,
8570 const VkDeviceSize* pStrides)
8571{
8572 auto resources = ResourceTracker::get();
8573 VkDevice device = resources->getDevice(commandBuffer);;
8574 if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
8575 {
8576 sOnInvalidDynamicallyCheckedCall("vkCmdBindVertexBuffers2EXT", "VK_EXT_extended_dynamic_state");
8577 }
8578 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers2EXT");
8579 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8580 vkEnc->vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, true /* do lock */);
8581}
Yilong Lia8d45f12021-02-07 02:30:21 -08008582static void entry_vkCmdSetDepthTestEnableEXT(
8583 VkCommandBuffer commandBuffer,
8584 VkBool32 depthTestEnable)
8585{
8586 AEMU_SCOPED_TRACE("vkCmdSetDepthTestEnableEXT");
8587 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8588 vkEnc->vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, true /* do lock */);
8589}
Yahan Zhouf183ac62022-04-13 11:10:26 -07008590static void dynCheck_entry_vkCmdSetDepthTestEnableEXT(
8591 VkCommandBuffer commandBuffer,
8592 VkBool32 depthTestEnable)
8593{
8594 auto resources = ResourceTracker::get();
8595 VkDevice device = resources->getDevice(commandBuffer);;
8596 if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
8597 {
8598 sOnInvalidDynamicallyCheckedCall("vkCmdSetDepthTestEnableEXT", "VK_EXT_extended_dynamic_state");
8599 }
8600 AEMU_SCOPED_TRACE("vkCmdSetDepthTestEnableEXT");
8601 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8602 vkEnc->vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, true /* do lock */);
8603}
Yilong Lia8d45f12021-02-07 02:30:21 -08008604static void entry_vkCmdSetDepthWriteEnableEXT(
8605 VkCommandBuffer commandBuffer,
8606 VkBool32 depthWriteEnable)
8607{
8608 AEMU_SCOPED_TRACE("vkCmdSetDepthWriteEnableEXT");
8609 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8610 vkEnc->vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, true /* do lock */);
8611}
Yahan Zhouf183ac62022-04-13 11:10:26 -07008612static void dynCheck_entry_vkCmdSetDepthWriteEnableEXT(
8613 VkCommandBuffer commandBuffer,
8614 VkBool32 depthWriteEnable)
8615{
8616 auto resources = ResourceTracker::get();
8617 VkDevice device = resources->getDevice(commandBuffer);;
8618 if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
8619 {
8620 sOnInvalidDynamicallyCheckedCall("vkCmdSetDepthWriteEnableEXT", "VK_EXT_extended_dynamic_state");
8621 }
8622 AEMU_SCOPED_TRACE("vkCmdSetDepthWriteEnableEXT");
8623 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8624 vkEnc->vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, true /* do lock */);
8625}
Yilong Lia8d45f12021-02-07 02:30:21 -08008626static void entry_vkCmdSetDepthCompareOpEXT(
8627 VkCommandBuffer commandBuffer,
8628 VkCompareOp depthCompareOp)
8629{
8630 AEMU_SCOPED_TRACE("vkCmdSetDepthCompareOpEXT");
8631 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8632 vkEnc->vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, true /* do lock */);
8633}
Yahan Zhouf183ac62022-04-13 11:10:26 -07008634static void dynCheck_entry_vkCmdSetDepthCompareOpEXT(
8635 VkCommandBuffer commandBuffer,
8636 VkCompareOp depthCompareOp)
8637{
8638 auto resources = ResourceTracker::get();
8639 VkDevice device = resources->getDevice(commandBuffer);;
8640 if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
8641 {
8642 sOnInvalidDynamicallyCheckedCall("vkCmdSetDepthCompareOpEXT", "VK_EXT_extended_dynamic_state");
8643 }
8644 AEMU_SCOPED_TRACE("vkCmdSetDepthCompareOpEXT");
8645 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8646 vkEnc->vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, true /* do lock */);
8647}
Yilong Lia8d45f12021-02-07 02:30:21 -08008648static void entry_vkCmdSetDepthBoundsTestEnableEXT(
8649 VkCommandBuffer commandBuffer,
8650 VkBool32 depthBoundsTestEnable)
8651{
8652 AEMU_SCOPED_TRACE("vkCmdSetDepthBoundsTestEnableEXT");
8653 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8654 vkEnc->vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, true /* do lock */);
8655}
Yahan Zhouf183ac62022-04-13 11:10:26 -07008656static void dynCheck_entry_vkCmdSetDepthBoundsTestEnableEXT(
8657 VkCommandBuffer commandBuffer,
8658 VkBool32 depthBoundsTestEnable)
8659{
8660 auto resources = ResourceTracker::get();
8661 VkDevice device = resources->getDevice(commandBuffer);;
8662 if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
8663 {
8664 sOnInvalidDynamicallyCheckedCall("vkCmdSetDepthBoundsTestEnableEXT", "VK_EXT_extended_dynamic_state");
8665 }
8666 AEMU_SCOPED_TRACE("vkCmdSetDepthBoundsTestEnableEXT");
8667 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8668 vkEnc->vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, true /* do lock */);
8669}
Yilong Lia8d45f12021-02-07 02:30:21 -08008670static void entry_vkCmdSetStencilTestEnableEXT(
8671 VkCommandBuffer commandBuffer,
8672 VkBool32 stencilTestEnable)
8673{
8674 AEMU_SCOPED_TRACE("vkCmdSetStencilTestEnableEXT");
8675 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8676 vkEnc->vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, true /* do lock */);
8677}
Yahan Zhouf183ac62022-04-13 11:10:26 -07008678static void dynCheck_entry_vkCmdSetStencilTestEnableEXT(
8679 VkCommandBuffer commandBuffer,
8680 VkBool32 stencilTestEnable)
8681{
8682 auto resources = ResourceTracker::get();
8683 VkDevice device = resources->getDevice(commandBuffer);;
8684 if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
8685 {
8686 sOnInvalidDynamicallyCheckedCall("vkCmdSetStencilTestEnableEXT", "VK_EXT_extended_dynamic_state");
8687 }
8688 AEMU_SCOPED_TRACE("vkCmdSetStencilTestEnableEXT");
8689 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8690 vkEnc->vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, true /* do lock */);
8691}
Yilong Lia8d45f12021-02-07 02:30:21 -08008692static void entry_vkCmdSetStencilOpEXT(
8693 VkCommandBuffer commandBuffer,
8694 VkStencilFaceFlags faceMask,
8695 VkStencilOp failOp,
8696 VkStencilOp passOp,
8697 VkStencilOp depthFailOp,
8698 VkCompareOp compareOp)
8699{
8700 AEMU_SCOPED_TRACE("vkCmdSetStencilOpEXT");
8701 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8702 vkEnc->vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, true /* do lock */);
8703}
Yahan Zhouf183ac62022-04-13 11:10:26 -07008704static void dynCheck_entry_vkCmdSetStencilOpEXT(
8705 VkCommandBuffer commandBuffer,
8706 VkStencilFaceFlags faceMask,
8707 VkStencilOp failOp,
8708 VkStencilOp passOp,
8709 VkStencilOp depthFailOp,
8710 VkCompareOp compareOp)
8711{
8712 auto resources = ResourceTracker::get();
8713 VkDevice device = resources->getDevice(commandBuffer);;
8714 if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
8715 {
8716 sOnInvalidDynamicallyCheckedCall("vkCmdSetStencilOpEXT", "VK_EXT_extended_dynamic_state");
8717 }
8718 AEMU_SCOPED_TRACE("vkCmdSetStencilOpEXT");
8719 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8720 vkEnc->vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, true /* do lock */);
8721}
Yilong Lia8d45f12021-02-07 02:30:21 -08008722#endif
Yilong Li353409a2022-01-04 02:37:56 -08008723#ifdef VK_EXT_shader_atomic_float2
8724#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008725#ifdef VK_EXT_shader_demote_to_helper_invocation
8726#endif
8727#ifdef VK_NV_device_generated_commands
8728static void entry_vkGetGeneratedCommandsMemoryRequirementsNV(
8729 VkDevice device,
8730 const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
8731 VkMemoryRequirements2* pMemoryRequirements)
8732{
8733 AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
8734 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8735 vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
8736}
8737static void dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV(
8738 VkDevice device,
8739 const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
8740 VkMemoryRequirements2* pMemoryRequirements)
8741{
8742 auto resources = ResourceTracker::get();
8743 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
8744 {
8745 sOnInvalidDynamicallyCheckedCall("vkGetGeneratedCommandsMemoryRequirementsNV", "VK_NV_device_generated_commands");
8746 }
8747 AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
8748 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8749 vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
8750}
8751static void entry_vkCmdPreprocessGeneratedCommandsNV(
8752 VkCommandBuffer commandBuffer,
8753 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
8754{
8755 AEMU_SCOPED_TRACE("vkCmdPreprocessGeneratedCommandsNV");
8756 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8757 vkEnc->vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, true /* do lock */);
8758}
Yahan Zhouf183ac62022-04-13 11:10:26 -07008759static void dynCheck_entry_vkCmdPreprocessGeneratedCommandsNV(
8760 VkCommandBuffer commandBuffer,
8761 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
8762{
8763 auto resources = ResourceTracker::get();
8764 VkDevice device = resources->getDevice(commandBuffer);;
8765 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
8766 {
8767 sOnInvalidDynamicallyCheckedCall("vkCmdPreprocessGeneratedCommandsNV", "VK_NV_device_generated_commands");
8768 }
8769 AEMU_SCOPED_TRACE("vkCmdPreprocessGeneratedCommandsNV");
8770 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8771 vkEnc->vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, true /* do lock */);
8772}
Yilong Lia8d45f12021-02-07 02:30:21 -08008773static void entry_vkCmdExecuteGeneratedCommandsNV(
8774 VkCommandBuffer commandBuffer,
8775 VkBool32 isPreprocessed,
8776 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
8777{
8778 AEMU_SCOPED_TRACE("vkCmdExecuteGeneratedCommandsNV");
8779 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8780 vkEnc->vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, true /* do lock */);
8781}
Yahan Zhouf183ac62022-04-13 11:10:26 -07008782static void dynCheck_entry_vkCmdExecuteGeneratedCommandsNV(
8783 VkCommandBuffer commandBuffer,
8784 VkBool32 isPreprocessed,
8785 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
8786{
8787 auto resources = ResourceTracker::get();
8788 VkDevice device = resources->getDevice(commandBuffer);;
8789 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
8790 {
8791 sOnInvalidDynamicallyCheckedCall("vkCmdExecuteGeneratedCommandsNV", "VK_NV_device_generated_commands");
8792 }
8793 AEMU_SCOPED_TRACE("vkCmdExecuteGeneratedCommandsNV");
8794 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8795 vkEnc->vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, true /* do lock */);
8796}
Yilong Lia8d45f12021-02-07 02:30:21 -08008797static void entry_vkCmdBindPipelineShaderGroupNV(
8798 VkCommandBuffer commandBuffer,
8799 VkPipelineBindPoint pipelineBindPoint,
8800 VkPipeline pipeline,
8801 uint32_t groupIndex)
8802{
8803 AEMU_SCOPED_TRACE("vkCmdBindPipelineShaderGroupNV");
8804 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8805 vkEnc->vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, true /* do lock */);
8806}
Yahan Zhouf183ac62022-04-13 11:10:26 -07008807static void dynCheck_entry_vkCmdBindPipelineShaderGroupNV(
8808 VkCommandBuffer commandBuffer,
8809 VkPipelineBindPoint pipelineBindPoint,
8810 VkPipeline pipeline,
8811 uint32_t groupIndex)
8812{
8813 auto resources = ResourceTracker::get();
8814 VkDevice device = resources->getDevice(commandBuffer);;
8815 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
8816 {
8817 sOnInvalidDynamicallyCheckedCall("vkCmdBindPipelineShaderGroupNV", "VK_NV_device_generated_commands");
8818 }
8819 AEMU_SCOPED_TRACE("vkCmdBindPipelineShaderGroupNV");
8820 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
8821 vkEnc->vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, true /* do lock */);
8822}
Yilong Lia8d45f12021-02-07 02:30:21 -08008823static VkResult entry_vkCreateIndirectCommandsLayoutNV(
8824 VkDevice device,
8825 const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
8826 const VkAllocationCallbacks* pAllocator,
8827 VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
8828{
8829 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
8830 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8831 VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
8832 vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
8833 return vkCreateIndirectCommandsLayoutNV_VkResult_return;
8834}
8835static VkResult dynCheck_entry_vkCreateIndirectCommandsLayoutNV(
8836 VkDevice device,
8837 const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
8838 const VkAllocationCallbacks* pAllocator,
8839 VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
8840{
8841 auto resources = ResourceTracker::get();
8842 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
8843 {
8844 sOnInvalidDynamicallyCheckedCall("vkCreateIndirectCommandsLayoutNV", "VK_NV_device_generated_commands");
8845 }
8846 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
8847 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8848 VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
8849 vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
8850 return vkCreateIndirectCommandsLayoutNV_VkResult_return;
8851}
8852static void entry_vkDestroyIndirectCommandsLayoutNV(
8853 VkDevice device,
8854 VkIndirectCommandsLayoutNV indirectCommandsLayout,
8855 const VkAllocationCallbacks* pAllocator)
8856{
8857 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
8858 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8859 vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, true /* do lock */);
8860}
8861static void dynCheck_entry_vkDestroyIndirectCommandsLayoutNV(
8862 VkDevice device,
8863 VkIndirectCommandsLayoutNV indirectCommandsLayout,
8864 const VkAllocationCallbacks* pAllocator)
8865{
8866 auto resources = ResourceTracker::get();
8867 if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
8868 {
8869 sOnInvalidDynamicallyCheckedCall("vkDestroyIndirectCommandsLayoutNV", "VK_NV_device_generated_commands");
8870 }
8871 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
8872 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8873 vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, true /* do lock */);
8874}
8875#endif
Yilong Li353409a2022-01-04 02:37:56 -08008876#ifdef VK_NV_inherited_viewport_scissor
8877#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008878#ifdef VK_EXT_texel_buffer_alignment
8879#endif
8880#ifdef VK_QCOM_render_pass_transform
8881#endif
8882#ifdef VK_EXT_device_memory_report
8883#endif
Yilong Li353409a2022-01-04 02:37:56 -08008884#ifdef VK_EXT_acquire_drm_display
8885static VkResult entry_vkAcquireDrmDisplayEXT(
8886 VkPhysicalDevice physicalDevice,
8887 int32_t drmFd,
8888 VkDisplayKHR display)
8889{
8890 AEMU_SCOPED_TRACE("vkAcquireDrmDisplayEXT");
8891 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8892 VkResult vkAcquireDrmDisplayEXT_VkResult_return = (VkResult)0;
8893 vkAcquireDrmDisplayEXT_VkResult_return = vkEnc->vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, true /* do lock */);
8894 return vkAcquireDrmDisplayEXT_VkResult_return;
8895}
8896static VkResult entry_vkGetDrmDisplayEXT(
8897 VkPhysicalDevice physicalDevice,
8898 int32_t drmFd,
8899 uint32_t connectorId,
8900 VkDisplayKHR* display)
8901{
8902 AEMU_SCOPED_TRACE("vkGetDrmDisplayEXT");
8903 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8904 VkResult vkGetDrmDisplayEXT_VkResult_return = (VkResult)0;
8905 vkGetDrmDisplayEXT_VkResult_return = vkEnc->vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, true /* do lock */);
8906 return vkGetDrmDisplayEXT_VkResult_return;
8907}
8908#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08008909#ifdef VK_EXT_robustness2
8910#endif
8911#ifdef VK_EXT_custom_border_color
8912#endif
8913#ifdef VK_GOOGLE_user_type
8914#endif
8915#ifdef VK_EXT_private_data
8916static VkResult entry_vkCreatePrivateDataSlotEXT(
8917 VkDevice device,
8918 const VkPrivateDataSlotCreateInfoEXT* pCreateInfo,
8919 const VkAllocationCallbacks* pAllocator,
8920 VkPrivateDataSlotEXT* pPrivateDataSlot)
8921{
8922 AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
8923 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8924 VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
8925 vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
8926 return vkCreatePrivateDataSlotEXT_VkResult_return;
8927}
8928static VkResult dynCheck_entry_vkCreatePrivateDataSlotEXT(
8929 VkDevice device,
8930 const VkPrivateDataSlotCreateInfoEXT* pCreateInfo,
8931 const VkAllocationCallbacks* pAllocator,
8932 VkPrivateDataSlotEXT* pPrivateDataSlot)
8933{
8934 auto resources = ResourceTracker::get();
8935 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
8936 {
8937 sOnInvalidDynamicallyCheckedCall("vkCreatePrivateDataSlotEXT", "VK_EXT_private_data");
8938 }
8939 AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
8940 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8941 VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
8942 vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
8943 return vkCreatePrivateDataSlotEXT_VkResult_return;
8944}
8945static void entry_vkDestroyPrivateDataSlotEXT(
8946 VkDevice device,
8947 VkPrivateDataSlotEXT privateDataSlot,
8948 const VkAllocationCallbacks* pAllocator)
8949{
8950 AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
8951 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8952 vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
8953}
8954static void dynCheck_entry_vkDestroyPrivateDataSlotEXT(
8955 VkDevice device,
8956 VkPrivateDataSlotEXT privateDataSlot,
8957 const VkAllocationCallbacks* pAllocator)
8958{
8959 auto resources = ResourceTracker::get();
8960 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
8961 {
8962 sOnInvalidDynamicallyCheckedCall("vkDestroyPrivateDataSlotEXT", "VK_EXT_private_data");
8963 }
8964 AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
8965 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8966 vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
8967}
8968static VkResult entry_vkSetPrivateDataEXT(
8969 VkDevice device,
8970 VkObjectType objectType,
8971 uint64_t objectHandle,
8972 VkPrivateDataSlotEXT privateDataSlot,
8973 uint64_t data)
8974{
8975 AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
8976 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8977 VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
8978 vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
8979 return vkSetPrivateDataEXT_VkResult_return;
8980}
8981static VkResult dynCheck_entry_vkSetPrivateDataEXT(
8982 VkDevice device,
8983 VkObjectType objectType,
8984 uint64_t objectHandle,
8985 VkPrivateDataSlotEXT privateDataSlot,
8986 uint64_t data)
8987{
8988 auto resources = ResourceTracker::get();
8989 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
8990 {
8991 sOnInvalidDynamicallyCheckedCall("vkSetPrivateDataEXT", "VK_EXT_private_data");
8992 }
8993 AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
8994 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
8995 VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
8996 vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
8997 return vkSetPrivateDataEXT_VkResult_return;
8998}
8999static void entry_vkGetPrivateDataEXT(
9000 VkDevice device,
9001 VkObjectType objectType,
9002 uint64_t objectHandle,
9003 VkPrivateDataSlotEXT privateDataSlot,
9004 uint64_t* pData)
9005{
9006 AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
9007 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9008 vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, true /* do lock */);
9009}
9010static void dynCheck_entry_vkGetPrivateDataEXT(
9011 VkDevice device,
9012 VkObjectType objectType,
9013 uint64_t objectHandle,
9014 VkPrivateDataSlotEXT privateDataSlot,
9015 uint64_t* pData)
9016{
9017 auto resources = ResourceTracker::get();
9018 if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
9019 {
9020 sOnInvalidDynamicallyCheckedCall("vkGetPrivateDataEXT", "VK_EXT_private_data");
9021 }
9022 AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
9023 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9024 vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, true /* do lock */);
9025}
9026#endif
9027#ifdef VK_EXT_pipeline_creation_cache_control
9028#endif
9029#ifdef VK_NV_device_diagnostics_config
9030#endif
9031#ifdef VK_QCOM_render_pass_store_ops
9032#endif
9033#ifdef VK_NV_fragment_shading_rate_enums
9034static void entry_vkCmdSetFragmentShadingRateEnumNV(
9035 VkCommandBuffer commandBuffer,
9036 VkFragmentShadingRateNV shadingRate,
9037 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
9038{
9039 AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateEnumNV");
9040 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9041 vkEnc->vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, true /* do lock */);
9042}
Yahan Zhouf183ac62022-04-13 11:10:26 -07009043static void dynCheck_entry_vkCmdSetFragmentShadingRateEnumNV(
9044 VkCommandBuffer commandBuffer,
9045 VkFragmentShadingRateNV shadingRate,
9046 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
9047{
9048 auto resources = ResourceTracker::get();
9049 VkDevice device = resources->getDevice(commandBuffer);;
9050 if (!resources->hasDeviceExtension(device, "VK_NV_fragment_shading_rate_enums"))
9051 {
9052 sOnInvalidDynamicallyCheckedCall("vkCmdSetFragmentShadingRateEnumNV", "VK_NV_fragment_shading_rate_enums");
9053 }
9054 AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateEnumNV");
9055 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9056 vkEnc->vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, true /* do lock */);
9057}
Yilong Lia8d45f12021-02-07 02:30:21 -08009058#endif
Yilong Li353409a2022-01-04 02:37:56 -08009059#ifdef VK_NV_ray_tracing_motion_blur
9060#endif
9061#ifdef VK_EXT_ycbcr_2plane_444_formats
9062#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009063#ifdef VK_EXT_fragment_density_map2
9064#endif
9065#ifdef VK_QCOM_rotated_copy_commands
9066#endif
9067#ifdef VK_EXT_image_robustness
9068#endif
9069#ifdef VK_EXT_4444_formats
9070#endif
Yilong Li353409a2022-01-04 02:37:56 -08009071#ifdef VK_EXT_rgba10x6_formats
9072#endif
9073#ifdef VK_NV_acquire_winrt_display
9074static VkResult entry_vkAcquireWinrtDisplayNV(
9075 VkPhysicalDevice physicalDevice,
9076 VkDisplayKHR display)
9077{
9078 AEMU_SCOPED_TRACE("vkAcquireWinrtDisplayNV");
9079 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9080 VkResult vkAcquireWinrtDisplayNV_VkResult_return = (VkResult)0;
9081 vkAcquireWinrtDisplayNV_VkResult_return = vkEnc->vkAcquireWinrtDisplayNV(physicalDevice, display, true /* do lock */);
9082 return vkAcquireWinrtDisplayNV_VkResult_return;
9083}
9084static VkResult entry_vkGetWinrtDisplayNV(
9085 VkPhysicalDevice physicalDevice,
9086 uint32_t deviceRelativeId,
9087 VkDisplayKHR* pDisplay)
9088{
9089 AEMU_SCOPED_TRACE("vkGetWinrtDisplayNV");
9090 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9091 VkResult vkGetWinrtDisplayNV_VkResult_return = (VkResult)0;
9092 vkGetWinrtDisplayNV_VkResult_return = vkEnc->vkGetWinrtDisplayNV(physicalDevice, deviceRelativeId, pDisplay, true /* do lock */);
9093 return vkGetWinrtDisplayNV_VkResult_return;
9094}
9095#endif
Yilong Lia8d45f12021-02-07 02:30:21 -08009096#ifdef VK_EXT_directfb_surface
9097static VkResult entry_vkCreateDirectFBSurfaceEXT(
9098 VkInstance instance,
9099 const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo,
9100 const VkAllocationCallbacks* pAllocator,
9101 VkSurfaceKHR* pSurface)
9102{
9103 AEMU_SCOPED_TRACE("vkCreateDirectFBSurfaceEXT");
9104 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9105 VkResult vkCreateDirectFBSurfaceEXT_VkResult_return = (VkResult)0;
9106 vkCreateDirectFBSurfaceEXT_VkResult_return = vkEnc->vkCreateDirectFBSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
9107 return vkCreateDirectFBSurfaceEXT_VkResult_return;
9108}
9109static VkBool32 entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT(
9110 VkPhysicalDevice physicalDevice,
9111 uint32_t queueFamilyIndex,
9112 IDirectFB* dfb)
9113{
9114 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDirectFBPresentationSupportEXT");
9115 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9116 VkBool32 vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return = (VkBool32)0;
9117 vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return = vkEnc->vkGetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice, queueFamilyIndex, dfb, true /* do lock */);
9118 return vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return;
9119}
9120#endif
Yilong Li353409a2022-01-04 02:37:56 -08009121#ifdef VK_VALVE_mutable_descriptor_type
9122#endif
9123#ifdef VK_EXT_vertex_input_dynamic_state
9124static void entry_vkCmdSetVertexInputEXT(
9125 VkCommandBuffer commandBuffer,
9126 uint32_t vertexBindingDescriptionCount,
9127 const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions,
9128 uint32_t vertexAttributeDescriptionCount,
9129 const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions)
9130{
9131 AEMU_SCOPED_TRACE("vkCmdSetVertexInputEXT");
9132 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9133 vkEnc->vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, true /* do lock */);
9134}
Yahan Zhouf183ac62022-04-13 11:10:26 -07009135static void dynCheck_entry_vkCmdSetVertexInputEXT(
9136 VkCommandBuffer commandBuffer,
9137 uint32_t vertexBindingDescriptionCount,
9138 const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions,
9139 uint32_t vertexAttributeDescriptionCount,
9140 const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions)
9141{
9142 auto resources = ResourceTracker::get();
9143 VkDevice device = resources->getDevice(commandBuffer);;
9144 if (!resources->hasDeviceExtension(device, "VK_EXT_vertex_input_dynamic_state"))
9145 {
9146 sOnInvalidDynamicallyCheckedCall("vkCmdSetVertexInputEXT", "VK_EXT_vertex_input_dynamic_state");
9147 }
9148 AEMU_SCOPED_TRACE("vkCmdSetVertexInputEXT");
9149 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9150 vkEnc->vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, true /* do lock */);
9151}
Yilong Li353409a2022-01-04 02:37:56 -08009152#endif
9153#ifdef VK_EXT_physical_device_drm
9154#endif
9155#ifdef VK_EXT_primitive_topology_list_restart
9156#endif
9157#ifdef VK_FUCHSIA_external_memory
9158static VkResult entry_vkGetMemoryZirconHandleFUCHSIA(
9159 VkDevice device,
9160 const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
9161 zx_handle_t* pZirconHandle)
9162{
9163 AEMU_SCOPED_TRACE("vkGetMemoryZirconHandleFUCHSIA");
9164 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9165 VkResult vkGetMemoryZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
9166 vkGetMemoryZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetMemoryZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
9167 return vkGetMemoryZirconHandleFUCHSIA_VkResult_return;
9168}
9169static VkResult dynCheck_entry_vkGetMemoryZirconHandleFUCHSIA(
9170 VkDevice device,
9171 const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
9172 zx_handle_t* pZirconHandle)
9173{
9174 auto resources = ResourceTracker::get();
9175 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_external_memory"))
9176 {
9177 sOnInvalidDynamicallyCheckedCall("vkGetMemoryZirconHandleFUCHSIA", "VK_FUCHSIA_external_memory");
9178 }
9179 AEMU_SCOPED_TRACE("vkGetMemoryZirconHandleFUCHSIA");
9180 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9181 VkResult vkGetMemoryZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
9182 vkGetMemoryZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetMemoryZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
9183 return vkGetMemoryZirconHandleFUCHSIA_VkResult_return;
9184}
9185static VkResult entry_vkGetMemoryZirconHandlePropertiesFUCHSIA(
9186 VkDevice device,
9187 VkExternalMemoryHandleTypeFlagBits handleType,
9188 zx_handle_t zirconHandle,
9189 VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties)
9190{
9191 AEMU_SCOPED_TRACE("vkGetMemoryZirconHandlePropertiesFUCHSIA");
9192 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9193 VkResult vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return = (VkResult)0;
9194 vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return = vkEnc->vkGetMemoryZirconHandlePropertiesFUCHSIA(device, handleType, zirconHandle, pMemoryZirconHandleProperties, true /* do lock */);
9195 return vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return;
9196}
9197static VkResult dynCheck_entry_vkGetMemoryZirconHandlePropertiesFUCHSIA(
9198 VkDevice device,
9199 VkExternalMemoryHandleTypeFlagBits handleType,
9200 zx_handle_t zirconHandle,
9201 VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties)
9202{
9203 auto resources = ResourceTracker::get();
9204 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_external_memory"))
9205 {
9206 sOnInvalidDynamicallyCheckedCall("vkGetMemoryZirconHandlePropertiesFUCHSIA", "VK_FUCHSIA_external_memory");
9207 }
9208 AEMU_SCOPED_TRACE("vkGetMemoryZirconHandlePropertiesFUCHSIA");
9209 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9210 VkResult vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return = (VkResult)0;
9211 vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return = vkEnc->vkGetMemoryZirconHandlePropertiesFUCHSIA(device, handleType, zirconHandle, pMemoryZirconHandleProperties, true /* do lock */);
9212 return vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return;
9213}
9214#endif
9215#ifdef VK_FUCHSIA_external_semaphore
9216static VkResult entry_vkImportSemaphoreZirconHandleFUCHSIA(
9217 VkDevice device,
9218 const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo)
9219{
9220 AEMU_SCOPED_TRACE("vkImportSemaphoreZirconHandleFUCHSIA");
9221 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9222 VkResult vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
9223 vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return = vkEnc->vkImportSemaphoreZirconHandleFUCHSIA(device, pImportSemaphoreZirconHandleInfo, true /* do lock */);
9224 return vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return;
9225}
9226static VkResult dynCheck_entry_vkImportSemaphoreZirconHandleFUCHSIA(
9227 VkDevice device,
9228 const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo)
9229{
9230 auto resources = ResourceTracker::get();
9231 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_external_semaphore"))
9232 {
9233 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreZirconHandleFUCHSIA", "VK_FUCHSIA_external_semaphore");
9234 }
9235 AEMU_SCOPED_TRACE("vkImportSemaphoreZirconHandleFUCHSIA");
9236 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9237 VkResult vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
9238 vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return = vkEnc->vkImportSemaphoreZirconHandleFUCHSIA(device, pImportSemaphoreZirconHandleInfo, true /* do lock */);
9239 return vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return;
9240}
9241static VkResult entry_vkGetSemaphoreZirconHandleFUCHSIA(
9242 VkDevice device,
9243 const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
9244 zx_handle_t* pZirconHandle)
9245{
9246 AEMU_SCOPED_TRACE("vkGetSemaphoreZirconHandleFUCHSIA");
9247 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9248 VkResult vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
9249 vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetSemaphoreZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
9250 return vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return;
9251}
9252static VkResult dynCheck_entry_vkGetSemaphoreZirconHandleFUCHSIA(
9253 VkDevice device,
9254 const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
9255 zx_handle_t* pZirconHandle)
9256{
9257 auto resources = ResourceTracker::get();
9258 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_external_semaphore"))
9259 {
9260 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreZirconHandleFUCHSIA", "VK_FUCHSIA_external_semaphore");
9261 }
9262 AEMU_SCOPED_TRACE("vkGetSemaphoreZirconHandleFUCHSIA");
9263 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9264 VkResult vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
9265 vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetSemaphoreZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
9266 return vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return;
9267}
9268#endif
9269#ifdef VK_FUCHSIA_buffer_collection
9270static VkResult entry_vkCreateBufferCollectionFUCHSIA(
9271 VkDevice device,
9272 const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo,
9273 const VkAllocationCallbacks* pAllocator,
9274 VkBufferCollectionFUCHSIA* pCollection)
9275{
9276 AEMU_SCOPED_TRACE("vkCreateBufferCollectionFUCHSIA");
9277 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9278 VkResult vkCreateBufferCollectionFUCHSIA_VkResult_return = (VkResult)0;
9279 vkCreateBufferCollectionFUCHSIA_VkResult_return = vkEnc->vkCreateBufferCollectionFUCHSIA(device, pCreateInfo, pAllocator, pCollection, true /* do lock */);
9280 return vkCreateBufferCollectionFUCHSIA_VkResult_return;
9281}
9282static VkResult dynCheck_entry_vkCreateBufferCollectionFUCHSIA(
9283 VkDevice device,
9284 const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo,
9285 const VkAllocationCallbacks* pAllocator,
9286 VkBufferCollectionFUCHSIA* pCollection)
9287{
9288 auto resources = ResourceTracker::get();
9289 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection"))
9290 {
9291 sOnInvalidDynamicallyCheckedCall("vkCreateBufferCollectionFUCHSIA", "VK_FUCHSIA_buffer_collection");
9292 }
9293 AEMU_SCOPED_TRACE("vkCreateBufferCollectionFUCHSIA");
9294 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9295 VkResult vkCreateBufferCollectionFUCHSIA_VkResult_return = (VkResult)0;
9296 vkCreateBufferCollectionFUCHSIA_VkResult_return = vkEnc->vkCreateBufferCollectionFUCHSIA(device, pCreateInfo, pAllocator, pCollection, true /* do lock */);
9297 return vkCreateBufferCollectionFUCHSIA_VkResult_return;
9298}
9299static VkResult entry_vkSetBufferCollectionImageConstraintsFUCHSIA(
9300 VkDevice device,
9301 VkBufferCollectionFUCHSIA collection,
9302 const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo)
9303{
9304 AEMU_SCOPED_TRACE("vkSetBufferCollectionImageConstraintsFUCHSIA");
9305 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9306 VkResult vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return = (VkResult)0;
9307 vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return = vkEnc->vkSetBufferCollectionImageConstraintsFUCHSIA(device, collection, pImageConstraintsInfo, true /* do lock */);
9308 return vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return;
9309}
9310static VkResult dynCheck_entry_vkSetBufferCollectionImageConstraintsFUCHSIA(
9311 VkDevice device,
9312 VkBufferCollectionFUCHSIA collection,
9313 const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo)
9314{
9315 auto resources = ResourceTracker::get();
9316 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection"))
9317 {
9318 sOnInvalidDynamicallyCheckedCall("vkSetBufferCollectionImageConstraintsFUCHSIA", "VK_FUCHSIA_buffer_collection");
9319 }
9320 AEMU_SCOPED_TRACE("vkSetBufferCollectionImageConstraintsFUCHSIA");
9321 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9322 VkResult vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return = (VkResult)0;
9323 vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return = vkEnc->vkSetBufferCollectionImageConstraintsFUCHSIA(device, collection, pImageConstraintsInfo, true /* do lock */);
9324 return vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return;
9325}
9326static VkResult entry_vkSetBufferCollectionBufferConstraintsFUCHSIA(
9327 VkDevice device,
9328 VkBufferCollectionFUCHSIA collection,
9329 const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo)
9330{
9331 AEMU_SCOPED_TRACE("vkSetBufferCollectionBufferConstraintsFUCHSIA");
9332 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9333 VkResult vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return = (VkResult)0;
9334 vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return = vkEnc->vkSetBufferCollectionBufferConstraintsFUCHSIA(device, collection, pBufferConstraintsInfo, true /* do lock */);
9335 return vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return;
9336}
9337static VkResult dynCheck_entry_vkSetBufferCollectionBufferConstraintsFUCHSIA(
9338 VkDevice device,
9339 VkBufferCollectionFUCHSIA collection,
9340 const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo)
9341{
9342 auto resources = ResourceTracker::get();
9343 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection"))
9344 {
9345 sOnInvalidDynamicallyCheckedCall("vkSetBufferCollectionBufferConstraintsFUCHSIA", "VK_FUCHSIA_buffer_collection");
9346 }
9347 AEMU_SCOPED_TRACE("vkSetBufferCollectionBufferConstraintsFUCHSIA");
9348 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9349 VkResult vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return = (VkResult)0;
9350 vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return = vkEnc->vkSetBufferCollectionBufferConstraintsFUCHSIA(device, collection, pBufferConstraintsInfo, true /* do lock */);
9351 return vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return;
9352}
9353static void entry_vkDestroyBufferCollectionFUCHSIA(
9354 VkDevice device,
9355 VkBufferCollectionFUCHSIA collection,
9356 const VkAllocationCallbacks* pAllocator)
9357{
9358 AEMU_SCOPED_TRACE("vkDestroyBufferCollectionFUCHSIA");
9359 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9360 vkEnc->vkDestroyBufferCollectionFUCHSIA(device, collection, pAllocator, true /* do lock */);
9361}
9362static void dynCheck_entry_vkDestroyBufferCollectionFUCHSIA(
9363 VkDevice device,
9364 VkBufferCollectionFUCHSIA collection,
9365 const VkAllocationCallbacks* pAllocator)
9366{
9367 auto resources = ResourceTracker::get();
9368 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection"))
9369 {
9370 sOnInvalidDynamicallyCheckedCall("vkDestroyBufferCollectionFUCHSIA", "VK_FUCHSIA_buffer_collection");
9371 }
9372 AEMU_SCOPED_TRACE("vkDestroyBufferCollectionFUCHSIA");
9373 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9374 vkEnc->vkDestroyBufferCollectionFUCHSIA(device, collection, pAllocator, true /* do lock */);
9375}
9376static VkResult entry_vkGetBufferCollectionPropertiesFUCHSIA(
9377 VkDevice device,
9378 VkBufferCollectionFUCHSIA collection,
9379 VkBufferCollectionPropertiesFUCHSIA* pProperties)
9380{
9381 AEMU_SCOPED_TRACE("vkGetBufferCollectionPropertiesFUCHSIA");
9382 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9383 VkResult vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return = (VkResult)0;
9384 vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return = vkEnc->vkGetBufferCollectionPropertiesFUCHSIA(device, collection, pProperties, true /* do lock */);
9385 return vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return;
9386}
9387static VkResult dynCheck_entry_vkGetBufferCollectionPropertiesFUCHSIA(
9388 VkDevice device,
9389 VkBufferCollectionFUCHSIA collection,
9390 VkBufferCollectionPropertiesFUCHSIA* pProperties)
9391{
9392 auto resources = ResourceTracker::get();
9393 if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection"))
9394 {
9395 sOnInvalidDynamicallyCheckedCall("vkGetBufferCollectionPropertiesFUCHSIA", "VK_FUCHSIA_buffer_collection");
9396 }
9397 AEMU_SCOPED_TRACE("vkGetBufferCollectionPropertiesFUCHSIA");
9398 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9399 VkResult vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return = (VkResult)0;
9400 vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return = vkEnc->vkGetBufferCollectionPropertiesFUCHSIA(device, collection, pProperties, true /* do lock */);
9401 return vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return;
9402}
9403#endif
9404#ifdef VK_HUAWEI_subpass_shading
9405static VkResult entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
9406 VkDevice device,
9407 VkRenderPass renderpass,
9408 VkExtent2D* pMaxWorkgroupSize)
9409{
9410 AEMU_SCOPED_TRACE("vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI");
9411 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9412 VkResult vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return = (VkResult)0;
9413 vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return = vkEnc->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, true /* do lock */);
9414 return vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return;
9415}
9416static VkResult dynCheck_entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
9417 VkDevice device,
9418 VkRenderPass renderpass,
9419 VkExtent2D* pMaxWorkgroupSize)
9420{
9421 auto resources = ResourceTracker::get();
9422 if (!resources->hasDeviceExtension(device, "VK_HUAWEI_subpass_shading"))
9423 {
9424 sOnInvalidDynamicallyCheckedCall("vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI", "VK_HUAWEI_subpass_shading");
9425 }
9426 AEMU_SCOPED_TRACE("vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI");
9427 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9428 VkResult vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return = (VkResult)0;
9429 vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return = vkEnc->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, true /* do lock */);
9430 return vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return;
9431}
9432static void entry_vkCmdSubpassShadingHUAWEI(
9433 VkCommandBuffer commandBuffer)
9434{
9435 AEMU_SCOPED_TRACE("vkCmdSubpassShadingHUAWEI");
9436 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9437 vkEnc->vkCmdSubpassShadingHUAWEI(commandBuffer, true /* do lock */);
9438}
Yahan Zhouf183ac62022-04-13 11:10:26 -07009439static void dynCheck_entry_vkCmdSubpassShadingHUAWEI(
9440 VkCommandBuffer commandBuffer)
9441{
9442 auto resources = ResourceTracker::get();
9443 VkDevice device = resources->getDevice(commandBuffer);;
9444 if (!resources->hasDeviceExtension(device, "VK_HUAWEI_subpass_shading"))
9445 {
9446 sOnInvalidDynamicallyCheckedCall("vkCmdSubpassShadingHUAWEI", "VK_HUAWEI_subpass_shading");
9447 }
9448 AEMU_SCOPED_TRACE("vkCmdSubpassShadingHUAWEI");
9449 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9450 vkEnc->vkCmdSubpassShadingHUAWEI(commandBuffer, true /* do lock */);
9451}
Yilong Li353409a2022-01-04 02:37:56 -08009452#endif
9453#ifdef VK_HUAWEI_invocation_mask
9454static void entry_vkCmdBindInvocationMaskHUAWEI(
9455 VkCommandBuffer commandBuffer,
9456 VkImageView imageView,
9457 VkImageLayout imageLayout)
9458{
9459 AEMU_SCOPED_TRACE("vkCmdBindInvocationMaskHUAWEI");
9460 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9461 vkEnc->vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, true /* do lock */);
9462}
Yahan Zhouf183ac62022-04-13 11:10:26 -07009463static void dynCheck_entry_vkCmdBindInvocationMaskHUAWEI(
9464 VkCommandBuffer commandBuffer,
9465 VkImageView imageView,
9466 VkImageLayout imageLayout)
9467{
9468 auto resources = ResourceTracker::get();
9469 VkDevice device = resources->getDevice(commandBuffer);;
9470 if (!resources->hasDeviceExtension(device, "VK_HUAWEI_invocation_mask"))
9471 {
9472 sOnInvalidDynamicallyCheckedCall("vkCmdBindInvocationMaskHUAWEI", "VK_HUAWEI_invocation_mask");
9473 }
9474 AEMU_SCOPED_TRACE("vkCmdBindInvocationMaskHUAWEI");
9475 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9476 vkEnc->vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, true /* do lock */);
9477}
Yilong Li353409a2022-01-04 02:37:56 -08009478#endif
9479#ifdef VK_NV_external_memory_rdma
9480static VkResult entry_vkGetMemoryRemoteAddressNV(
9481 VkDevice device,
9482 const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo,
9483 VkRemoteAddressNV* pAddress)
9484{
9485 AEMU_SCOPED_TRACE("vkGetMemoryRemoteAddressNV");
9486 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9487 VkResult vkGetMemoryRemoteAddressNV_VkResult_return = (VkResult)0;
9488 vkGetMemoryRemoteAddressNV_VkResult_return = vkEnc->vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, true /* do lock */);
9489 return vkGetMemoryRemoteAddressNV_VkResult_return;
9490}
9491static VkResult dynCheck_entry_vkGetMemoryRemoteAddressNV(
9492 VkDevice device,
9493 const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo,
9494 VkRemoteAddressNV* pAddress)
9495{
9496 auto resources = ResourceTracker::get();
9497 if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_rdma"))
9498 {
9499 sOnInvalidDynamicallyCheckedCall("vkGetMemoryRemoteAddressNV", "VK_NV_external_memory_rdma");
9500 }
9501 AEMU_SCOPED_TRACE("vkGetMemoryRemoteAddressNV");
9502 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9503 VkResult vkGetMemoryRemoteAddressNV_VkResult_return = (VkResult)0;
9504 vkGetMemoryRemoteAddressNV_VkResult_return = vkEnc->vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, true /* do lock */);
9505 return vkGetMemoryRemoteAddressNV_VkResult_return;
9506}
9507#endif
9508#ifdef VK_EXT_extended_dynamic_state2
9509static void entry_vkCmdSetPatchControlPointsEXT(
9510 VkCommandBuffer commandBuffer,
9511 uint32_t patchControlPoints)
9512{
9513 AEMU_SCOPED_TRACE("vkCmdSetPatchControlPointsEXT");
9514 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9515 vkEnc->vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, true /* do lock */);
9516}
Yahan Zhouf183ac62022-04-13 11:10:26 -07009517static void dynCheck_entry_vkCmdSetPatchControlPointsEXT(
9518 VkCommandBuffer commandBuffer,
9519 uint32_t patchControlPoints)
9520{
9521 auto resources = ResourceTracker::get();
9522 VkDevice device = resources->getDevice(commandBuffer);;
9523 if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2"))
9524 {
9525 sOnInvalidDynamicallyCheckedCall("vkCmdSetPatchControlPointsEXT", "VK_EXT_extended_dynamic_state2");
9526 }
9527 AEMU_SCOPED_TRACE("vkCmdSetPatchControlPointsEXT");
9528 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9529 vkEnc->vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, true /* do lock */);
9530}
Yilong Li353409a2022-01-04 02:37:56 -08009531static void entry_vkCmdSetRasterizerDiscardEnableEXT(
9532 VkCommandBuffer commandBuffer,
9533 VkBool32 rasterizerDiscardEnable)
9534{
9535 AEMU_SCOPED_TRACE("vkCmdSetRasterizerDiscardEnableEXT");
9536 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9537 vkEnc->vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, true /* do lock */);
9538}
Yahan Zhouf183ac62022-04-13 11:10:26 -07009539static void dynCheck_entry_vkCmdSetRasterizerDiscardEnableEXT(
9540 VkCommandBuffer commandBuffer,
9541 VkBool32 rasterizerDiscardEnable)
9542{
9543 auto resources = ResourceTracker::get();
9544 VkDevice device = resources->getDevice(commandBuffer);;
9545 if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2"))
9546 {
9547 sOnInvalidDynamicallyCheckedCall("vkCmdSetRasterizerDiscardEnableEXT", "VK_EXT_extended_dynamic_state2");
9548 }
9549 AEMU_SCOPED_TRACE("vkCmdSetRasterizerDiscardEnableEXT");
9550 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9551 vkEnc->vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, true /* do lock */);
9552}
Yilong Li353409a2022-01-04 02:37:56 -08009553static void entry_vkCmdSetDepthBiasEnableEXT(
9554 VkCommandBuffer commandBuffer,
9555 VkBool32 depthBiasEnable)
9556{
9557 AEMU_SCOPED_TRACE("vkCmdSetDepthBiasEnableEXT");
9558 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9559 vkEnc->vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, true /* do lock */);
9560}
Yahan Zhouf183ac62022-04-13 11:10:26 -07009561static void dynCheck_entry_vkCmdSetDepthBiasEnableEXT(
9562 VkCommandBuffer commandBuffer,
9563 VkBool32 depthBiasEnable)
9564{
9565 auto resources = ResourceTracker::get();
9566 VkDevice device = resources->getDevice(commandBuffer);;
9567 if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2"))
9568 {
9569 sOnInvalidDynamicallyCheckedCall("vkCmdSetDepthBiasEnableEXT", "VK_EXT_extended_dynamic_state2");
9570 }
9571 AEMU_SCOPED_TRACE("vkCmdSetDepthBiasEnableEXT");
9572 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9573 vkEnc->vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, true /* do lock */);
9574}
Yilong Li353409a2022-01-04 02:37:56 -08009575static void entry_vkCmdSetLogicOpEXT(
9576 VkCommandBuffer commandBuffer,
9577 VkLogicOp logicOp)
9578{
9579 AEMU_SCOPED_TRACE("vkCmdSetLogicOpEXT");
9580 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9581 vkEnc->vkCmdSetLogicOpEXT(commandBuffer, logicOp, true /* do lock */);
9582}
Yahan Zhouf183ac62022-04-13 11:10:26 -07009583static void dynCheck_entry_vkCmdSetLogicOpEXT(
9584 VkCommandBuffer commandBuffer,
9585 VkLogicOp logicOp)
9586{
9587 auto resources = ResourceTracker::get();
9588 VkDevice device = resources->getDevice(commandBuffer);;
9589 if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2"))
9590 {
9591 sOnInvalidDynamicallyCheckedCall("vkCmdSetLogicOpEXT", "VK_EXT_extended_dynamic_state2");
9592 }
9593 AEMU_SCOPED_TRACE("vkCmdSetLogicOpEXT");
9594 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9595 vkEnc->vkCmdSetLogicOpEXT(commandBuffer, logicOp, true /* do lock */);
9596}
Yilong Li353409a2022-01-04 02:37:56 -08009597static void entry_vkCmdSetPrimitiveRestartEnableEXT(
9598 VkCommandBuffer commandBuffer,
9599 VkBool32 primitiveRestartEnable)
9600{
9601 AEMU_SCOPED_TRACE("vkCmdSetPrimitiveRestartEnableEXT");
9602 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9603 vkEnc->vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, true /* do lock */);
9604}
Yahan Zhouf183ac62022-04-13 11:10:26 -07009605static void dynCheck_entry_vkCmdSetPrimitiveRestartEnableEXT(
9606 VkCommandBuffer commandBuffer,
9607 VkBool32 primitiveRestartEnable)
9608{
9609 auto resources = ResourceTracker::get();
9610 VkDevice device = resources->getDevice(commandBuffer);;
9611 if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2"))
9612 {
9613 sOnInvalidDynamicallyCheckedCall("vkCmdSetPrimitiveRestartEnableEXT", "VK_EXT_extended_dynamic_state2");
9614 }
9615 AEMU_SCOPED_TRACE("vkCmdSetPrimitiveRestartEnableEXT");
9616 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9617 vkEnc->vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, true /* do lock */);
9618}
Yilong Li353409a2022-01-04 02:37:56 -08009619#endif
9620#ifdef VK_QNX_screen_surface
9621static VkResult entry_vkCreateScreenSurfaceQNX(
9622 VkInstance instance,
9623 const VkScreenSurfaceCreateInfoQNX* pCreateInfo,
9624 const VkAllocationCallbacks* pAllocator,
9625 VkSurfaceKHR* pSurface)
9626{
9627 AEMU_SCOPED_TRACE("vkCreateScreenSurfaceQNX");
9628 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9629 VkResult vkCreateScreenSurfaceQNX_VkResult_return = (VkResult)0;
9630 vkCreateScreenSurfaceQNX_VkResult_return = vkEnc->vkCreateScreenSurfaceQNX(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
9631 return vkCreateScreenSurfaceQNX_VkResult_return;
9632}
9633static VkBool32 entry_vkGetPhysicalDeviceScreenPresentationSupportQNX(
9634 VkPhysicalDevice physicalDevice,
9635 uint32_t queueFamilyIndex,
9636 _screen_window* window)
9637{
9638 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceScreenPresentationSupportQNX");
9639 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9640 VkBool32 vkGetPhysicalDeviceScreenPresentationSupportQNX_VkBool32_return = (VkBool32)0;
9641 vkGetPhysicalDeviceScreenPresentationSupportQNX_VkBool32_return = vkEnc->vkGetPhysicalDeviceScreenPresentationSupportQNX(physicalDevice, queueFamilyIndex, window, true /* do lock */);
9642 return vkGetPhysicalDeviceScreenPresentationSupportQNX_VkBool32_return;
9643}
9644#endif
9645#ifdef VK_EXT_color_write_enable
9646static void entry_vkCmdSetColorWriteEnableEXT(
9647 VkCommandBuffer commandBuffer,
9648 uint32_t attachmentCount,
9649 const VkBool32* pColorWriteEnables)
9650{
9651 AEMU_SCOPED_TRACE("vkCmdSetColorWriteEnableEXT");
9652 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9653 vkEnc->vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, true /* do lock */);
9654}
Yahan Zhouf183ac62022-04-13 11:10:26 -07009655static void dynCheck_entry_vkCmdSetColorWriteEnableEXT(
9656 VkCommandBuffer commandBuffer,
9657 uint32_t attachmentCount,
9658 const VkBool32* pColorWriteEnables)
9659{
9660 auto resources = ResourceTracker::get();
9661 VkDevice device = resources->getDevice(commandBuffer);;
9662 if (!resources->hasDeviceExtension(device, "VK_EXT_color_write_enable"))
9663 {
9664 sOnInvalidDynamicallyCheckedCall("vkCmdSetColorWriteEnableEXT", "VK_EXT_color_write_enable");
9665 }
9666 AEMU_SCOPED_TRACE("vkCmdSetColorWriteEnableEXT");
9667 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9668 vkEnc->vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, true /* do lock */);
9669}
Yilong Li353409a2022-01-04 02:37:56 -08009670#endif
Yilong Li71c43c52021-02-10 02:50:43 -08009671#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -07009672static VkResult entry_vkRegisterImageColorBufferGOOGLE(
9673 VkDevice device,
9674 VkImage image,
9675 uint32_t colorBuffer)
9676{
9677 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
9678 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9679 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
9680 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
9681 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
9682}
9683static VkResult dynCheck_entry_vkRegisterImageColorBufferGOOGLE(
9684 VkDevice device,
9685 VkImage image,
9686 uint32_t colorBuffer)
9687{
9688 auto resources = ResourceTracker::get();
9689 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
9690 {
9691 sOnInvalidDynamicallyCheckedCall("vkRegisterImageColorBufferGOOGLE", "VK_GOOGLE_gfxstream");
9692 }
9693 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
9694 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9695 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
9696 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
9697 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
9698}
9699static VkResult entry_vkRegisterBufferColorBufferGOOGLE(
9700 VkDevice device,
9701 VkBuffer buffer,
9702 uint32_t colorBuffer)
9703{
9704 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
9705 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9706 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
9707 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
9708 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
9709}
9710static VkResult dynCheck_entry_vkRegisterBufferColorBufferGOOGLE(
9711 VkDevice device,
9712 VkBuffer buffer,
9713 uint32_t colorBuffer)
9714{
9715 auto resources = ResourceTracker::get();
9716 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
9717 {
9718 sOnInvalidDynamicallyCheckedCall("vkRegisterBufferColorBufferGOOGLE", "VK_GOOGLE_gfxstream");
9719 }
9720 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
9721 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9722 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
9723 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
9724 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
9725}
Yilong Lia8d45f12021-02-07 02:30:21 -08009726static VkResult entry_vkMapMemoryIntoAddressSpaceGOOGLE(
9727 VkDevice device,
9728 VkDeviceMemory memory,
9729 uint64_t* pAddress)
9730{
9731 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
9732 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9733 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
9734 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
9735 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
9736}
9737static VkResult dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE(
9738 VkDevice device,
9739 VkDeviceMemory memory,
9740 uint64_t* pAddress)
9741{
9742 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08009743 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Yilong Lia8d45f12021-02-07 02:30:21 -08009744 {
Yilong Li71c43c52021-02-10 02:50:43 -08009745 sOnInvalidDynamicallyCheckedCall("vkMapMemoryIntoAddressSpaceGOOGLE", "VK_GOOGLE_gfxstream");
Yilong Lia8d45f12021-02-07 02:30:21 -08009746 }
9747 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
9748 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
9749 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
9750 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
9751 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
9752}
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07009753static void entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
9754 VkDevice device,
9755 VkDescriptorSet descriptorSet,
9756 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
9757 uint32_t imageInfoCount,
9758 uint32_t bufferInfoCount,
9759 uint32_t bufferViewCount,
9760 const uint32_t* pImageInfoEntryIndices,
9761 const uint32_t* pBufferInfoEntryIndices,
9762 const uint32_t* pBufferViewEntryIndices,
9763 const VkDescriptorImageInfo* pImageInfos,
9764 const VkDescriptorBufferInfo* pBufferInfos,
9765 const VkBufferView* pBufferViews)
9766{
9767 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08009768 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08009769 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07009770}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07009771static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
9772 VkDevice device,
9773 VkDescriptorSet descriptorSet,
9774 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
9775 uint32_t imageInfoCount,
9776 uint32_t bufferInfoCount,
9777 uint32_t bufferViewCount,
9778 const uint32_t* pImageInfoEntryIndices,
9779 const uint32_t* pBufferInfoEntryIndices,
9780 const uint32_t* pBufferViewEntryIndices,
9781 const VkDescriptorImageInfo* pImageInfos,
9782 const VkDescriptorBufferInfo* pBufferInfos,
9783 const VkBufferView* pBufferViews)
9784{
9785 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08009786 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07009787 {
Yilong Li71c43c52021-02-10 02:50:43 -08009788 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateSizedGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07009789 }
9790 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08009791 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08009792 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07009793}
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009794static void entry_vkBeginCommandBufferAsyncGOOGLE(
9795 VkCommandBuffer commandBuffer,
9796 const VkCommandBufferBeginInfo* pBeginInfo)
9797{
9798 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08009799 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08009800 vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009801}
Yahan Zhouf183ac62022-04-13 11:10:26 -07009802static void dynCheck_entry_vkBeginCommandBufferAsyncGOOGLE(
9803 VkCommandBuffer commandBuffer,
9804 const VkCommandBufferBeginInfo* pBeginInfo)
9805{
9806 auto resources = ResourceTracker::get();
9807 VkDevice device = resources->getDevice(commandBuffer);;
9808 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
9809 {
9810 sOnInvalidDynamicallyCheckedCall("vkBeginCommandBufferAsyncGOOGLE", "VK_GOOGLE_gfxstream");
9811 }
9812 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
9813 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9814 vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo, true /* do lock */);
9815}
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009816static void entry_vkEndCommandBufferAsyncGOOGLE(
9817 VkCommandBuffer commandBuffer)
9818{
9819 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08009820 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08009821 vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009822}
Yahan Zhouf183ac62022-04-13 11:10:26 -07009823static void dynCheck_entry_vkEndCommandBufferAsyncGOOGLE(
9824 VkCommandBuffer commandBuffer)
9825{
9826 auto resources = ResourceTracker::get();
9827 VkDevice device = resources->getDevice(commandBuffer);;
9828 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
9829 {
9830 sOnInvalidDynamicallyCheckedCall("vkEndCommandBufferAsyncGOOGLE", "VK_GOOGLE_gfxstream");
9831 }
9832 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
9833 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9834 vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer, true /* do lock */);
9835}
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009836static void entry_vkResetCommandBufferAsyncGOOGLE(
9837 VkCommandBuffer commandBuffer,
9838 VkCommandBufferResetFlags flags)
9839{
9840 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08009841 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08009842 vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags, true /* do lock */);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009843}
Yahan Zhouf183ac62022-04-13 11:10:26 -07009844static void dynCheck_entry_vkResetCommandBufferAsyncGOOGLE(
9845 VkCommandBuffer commandBuffer,
9846 VkCommandBufferResetFlags flags)
9847{
9848 auto resources = ResourceTracker::get();
9849 VkDevice device = resources->getDevice(commandBuffer);;
9850 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
9851 {
9852 sOnInvalidDynamicallyCheckedCall("vkResetCommandBufferAsyncGOOGLE", "VK_GOOGLE_gfxstream");
9853 }
9854 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
9855 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9856 vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags, true /* do lock */);
9857}
Lingfeng Yang39a276e2019-06-17 13:27:22 -07009858static void entry_vkCommandBufferHostSyncGOOGLE(
9859 VkCommandBuffer commandBuffer,
9860 uint32_t needHostSync,
9861 uint32_t sequenceNumber)
9862{
9863 AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08009864 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08009865 vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber, true /* do lock */);
Lingfeng Yang39a276e2019-06-17 13:27:22 -07009866}
Yahan Zhouf183ac62022-04-13 11:10:26 -07009867static void dynCheck_entry_vkCommandBufferHostSyncGOOGLE(
9868 VkCommandBuffer commandBuffer,
9869 uint32_t needHostSync,
9870 uint32_t sequenceNumber)
9871{
9872 auto resources = ResourceTracker::get();
9873 VkDevice device = resources->getDevice(commandBuffer);;
9874 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
9875 {
9876 sOnInvalidDynamicallyCheckedCall("vkCommandBufferHostSyncGOOGLE", "VK_GOOGLE_gfxstream");
9877 }
9878 AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
9879 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
9880 vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber, true /* do lock */);
9881}
Lingfeng Yang87f11962019-06-27 16:28:53 +00009882static VkResult entry_vkCreateImageWithRequirementsGOOGLE(
9883 VkDevice device,
9884 const VkImageCreateInfo* pCreateInfo,
9885 const VkAllocationCallbacks* pAllocator,
9886 VkImage* pImage,
9887 VkMemoryRequirements* pMemoryRequirements)
9888{
9889 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08009890 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang87f11962019-06-27 16:28:53 +00009891 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08009892 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
Lingfeng Yang87f11962019-06-27 16:28:53 +00009893 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
9894}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07009895static VkResult dynCheck_entry_vkCreateImageWithRequirementsGOOGLE(
9896 VkDevice device,
9897 const VkImageCreateInfo* pCreateInfo,
9898 const VkAllocationCallbacks* pAllocator,
9899 VkImage* pImage,
9900 VkMemoryRequirements* pMemoryRequirements)
9901{
9902 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08009903 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07009904 {
Yilong Li71c43c52021-02-10 02:50:43 -08009905 sOnInvalidDynamicallyCheckedCall("vkCreateImageWithRequirementsGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07009906 }
9907 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08009908 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07009909 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08009910 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07009911 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
9912}
Lingfeng Yang87f11962019-06-27 16:28:53 +00009913static VkResult entry_vkCreateBufferWithRequirementsGOOGLE(
9914 VkDevice device,
9915 const VkBufferCreateInfo* pCreateInfo,
9916 const VkAllocationCallbacks* pAllocator,
9917 VkBuffer* pBuffer,
9918 VkMemoryRequirements* pMemoryRequirements)
9919{
9920 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08009921 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang87f11962019-06-27 16:28:53 +00009922 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08009923 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
Lingfeng Yang87f11962019-06-27 16:28:53 +00009924 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
9925}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07009926static VkResult dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE(
9927 VkDevice device,
9928 const VkBufferCreateInfo* pCreateInfo,
9929 const VkAllocationCallbacks* pAllocator,
9930 VkBuffer* pBuffer,
9931 VkMemoryRequirements* pMemoryRequirements)
9932{
9933 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08009934 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f51a332019-10-30 09:25:25 -07009935 {
Yilong Li71c43c52021-02-10 02:50:43 -08009936 sOnInvalidDynamicallyCheckedCall("vkCreateBufferWithRequirementsGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f51a332019-10-30 09:25:25 -07009937 }
9938 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08009939 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f51a332019-10-30 09:25:25 -07009940 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08009941 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
Lingfeng Yang2f51a332019-10-30 09:25:25 -07009942 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
9943}
Lingfeng Yang4c542412020-02-04 18:18:32 -08009944static VkResult entry_vkGetMemoryHostAddressInfoGOOGLE(
9945 VkDevice device,
9946 VkDeviceMemory memory,
9947 uint64_t* pAddress,
9948 uint64_t* pSize,
9949 uint64_t* pHostmemId)
9950{
9951 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08009952 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4c542412020-02-04 18:18:32 -08009953 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08009954 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
Lingfeng Yang4c542412020-02-04 18:18:32 -08009955 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
9956}
9957static VkResult dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE(
9958 VkDevice device,
9959 VkDeviceMemory memory,
9960 uint64_t* pAddress,
9961 uint64_t* pSize,
9962 uint64_t* pHostmemId)
9963{
9964 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08009965 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang4c542412020-02-04 18:18:32 -08009966 {
Yilong Li71c43c52021-02-10 02:50:43 -08009967 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostAddressInfoGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang4c542412020-02-04 18:18:32 -08009968 }
9969 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08009970 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang4c542412020-02-04 18:18:32 -08009971 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08009972 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
Lingfeng Yang4c542412020-02-04 18:18:32 -08009973 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
9974}
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07009975static VkResult entry_vkFreeMemorySyncGOOGLE(
9976 VkDevice device,
9977 VkDeviceMemory memory,
9978 const VkAllocationCallbacks* pAllocator)
9979{
9980 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08009981 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07009982 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08009983 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07009984 return vkFreeMemorySyncGOOGLE_VkResult_return;
9985}
9986static VkResult dynCheck_entry_vkFreeMemorySyncGOOGLE(
9987 VkDevice device,
9988 VkDeviceMemory memory,
9989 const VkAllocationCallbacks* pAllocator)
9990{
9991 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -08009992 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07009993 {
Yilong Li71c43c52021-02-10 02:50:43 -08009994 sOnInvalidDynamicallyCheckedCall("vkFreeMemorySyncGOOGLE", "VK_GOOGLE_gfxstream");
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07009995 }
9996 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -08009997 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07009998 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
Lingfeng Yanga1d57a52021-01-08 14:02:14 -08009999 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070010000 return vkFreeMemorySyncGOOGLE_VkResult_return;
10001}
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070010002static void entry_vkQueueHostSyncGOOGLE(
10003 VkQueue queue,
10004 uint32_t needHostSync,
10005 uint32_t sequenceNumber)
10006{
10007 AEMU_SCOPED_TRACE("vkQueueHostSyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -080010008 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080010009 vkEnc->vkQueueHostSyncGOOGLE(queue, needHostSync, sequenceNumber, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070010010}
10011static void entry_vkQueueSubmitAsyncGOOGLE(
10012 VkQueue queue,
10013 uint32_t submitCount,
10014 const VkSubmitInfo* pSubmits,
10015 VkFence fence)
10016{
10017 AEMU_SCOPED_TRACE("vkQueueSubmitAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -080010018 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080010019 vkEnc->vkQueueSubmitAsyncGOOGLE(queue, submitCount, pSubmits, fence, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070010020}
10021static void entry_vkQueueWaitIdleAsyncGOOGLE(
10022 VkQueue queue)
10023{
10024 AEMU_SCOPED_TRACE("vkQueueWaitIdleAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -080010025 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080010026 vkEnc->vkQueueWaitIdleAsyncGOOGLE(queue, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070010027}
10028static void entry_vkQueueBindSparseAsyncGOOGLE(
10029 VkQueue queue,
10030 uint32_t bindInfoCount,
10031 const VkBindSparseInfo* pBindInfo,
10032 VkFence fence)
10033{
10034 AEMU_SCOPED_TRACE("vkQueueBindSparseAsyncGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -080010035 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080010036 vkEnc->vkQueueBindSparseAsyncGOOGLE(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070010037}
Yilong Lia48b0102020-09-15 15:08:28 -070010038static void entry_vkGetLinearImageLayoutGOOGLE(
10039 VkDevice device,
10040 VkFormat format,
10041 VkDeviceSize* pOffset,
10042 VkDeviceSize* pRowPitchAlignment)
10043{
10044 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -080010045 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080010046 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
Yilong Lia48b0102020-09-15 15:08:28 -070010047}
10048static void dynCheck_entry_vkGetLinearImageLayoutGOOGLE(
10049 VkDevice device,
10050 VkFormat format,
10051 VkDeviceSize* pOffset,
10052 VkDeviceSize* pRowPitchAlignment)
10053{
10054 auto resources = ResourceTracker::get();
Yilong Li71c43c52021-02-10 02:50:43 -080010055 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
Yilong Lia48b0102020-09-15 15:08:28 -070010056 {
Yilong Li71c43c52021-02-10 02:50:43 -080010057 sOnInvalidDynamicallyCheckedCall("vkGetLinearImageLayoutGOOGLE", "VK_GOOGLE_gfxstream");
Yilong Lia48b0102020-09-15 15:08:28 -070010058 }
10059 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
Lingfeng Yang4f539502021-01-22 23:01:57 -080010060 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
Lingfeng Yanga1d57a52021-01-08 14:02:14 -080010061 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
Yilong Lia48b0102020-09-15 15:08:28 -070010062}
Yilong Lidcaf0672022-02-22 16:39:57 -080010063static void entry_vkGetLinearImageLayout2GOOGLE(
10064 VkDevice device,
10065 const VkImageCreateInfo* pCreateInfo,
10066 VkDeviceSize* pOffset,
10067 VkDeviceSize* pRowPitchAlignment)
10068{
10069 AEMU_SCOPED_TRACE("vkGetLinearImageLayout2GOOGLE");
10070 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10071 vkEnc->vkGetLinearImageLayout2GOOGLE(device, pCreateInfo, pOffset, pRowPitchAlignment, true /* do lock */);
10072}
10073static void dynCheck_entry_vkGetLinearImageLayout2GOOGLE(
10074 VkDevice device,
10075 const VkImageCreateInfo* pCreateInfo,
10076 VkDeviceSize* pOffset,
10077 VkDeviceSize* pRowPitchAlignment)
10078{
10079 auto resources = ResourceTracker::get();
10080 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
10081 {
10082 sOnInvalidDynamicallyCheckedCall("vkGetLinearImageLayout2GOOGLE", "VK_GOOGLE_gfxstream");
10083 }
10084 AEMU_SCOPED_TRACE("vkGetLinearImageLayout2GOOGLE");
10085 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10086 vkEnc->vkGetLinearImageLayout2GOOGLE(device, pCreateInfo, pOffset, pRowPitchAlignment, true /* do lock */);
10087}
Lingfeng Yangded34672021-01-22 23:17:47 -080010088static void entry_vkQueueFlushCommandsGOOGLE(
10089 VkQueue queue,
10090 VkCommandBuffer commandBuffer,
10091 VkDeviceSize dataSize,
10092 const void* pData)
10093{
10094 AEMU_SCOPED_TRACE("vkQueueFlushCommandsGOOGLE");
10095 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
10096 vkEnc->vkQueueFlushCommandsGOOGLE(queue, commandBuffer, dataSize, pData, true /* do lock */);
10097}
Lingfeng Yang55676e02021-02-08 08:39:45 -080010098static void entry_vkQueueCommitDescriptorSetUpdatesGOOGLE(
10099 VkQueue queue,
10100 uint32_t descriptorPoolCount,
10101 const VkDescriptorPool* pDescriptorPools,
10102 uint32_t descriptorSetCount,
10103 const VkDescriptorSetLayout* pSetLayouts,
10104 const uint64_t* pDescriptorSetPoolIds,
10105 const uint32_t* pDescriptorSetWhichPool,
10106 const uint32_t* pDescriptorSetPendingAllocation,
10107 const uint32_t* pDescriptorWriteStartingIndices,
10108 uint32_t pendingDescriptorWriteCount,
10109 const VkWriteDescriptorSet* pPendingDescriptorWrites)
10110{
10111 AEMU_SCOPED_TRACE("vkQueueCommitDescriptorSetUpdatesGOOGLE");
10112 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
10113 vkEnc->vkQueueCommitDescriptorSetUpdatesGOOGLE(queue, descriptorPoolCount, pDescriptorPools, descriptorSetCount, pSetLayouts, pDescriptorSetPoolIds, pDescriptorSetWhichPool, pDescriptorSetPendingAllocation, pDescriptorWriteStartingIndices, pendingDescriptorWriteCount, pPendingDescriptorWrites, true /* do lock */);
10114}
10115static void entry_vkCollectDescriptorPoolIdsGOOGLE(
10116 VkDevice device,
10117 VkDescriptorPool descriptorPool,
10118 uint32_t* pPoolIdCount,
10119 uint64_t* pPoolIds)
10120{
10121 AEMU_SCOPED_TRACE("vkCollectDescriptorPoolIdsGOOGLE");
10122 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10123 vkEnc->vkCollectDescriptorPoolIdsGOOGLE(device, descriptorPool, pPoolIdCount, pPoolIds, true /* do lock */);
10124}
10125static void dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE(
10126 VkDevice device,
10127 VkDescriptorPool descriptorPool,
10128 uint32_t* pPoolIdCount,
10129 uint64_t* pPoolIds)
10130{
10131 auto resources = ResourceTracker::get();
10132 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
10133 {
10134 sOnInvalidDynamicallyCheckedCall("vkCollectDescriptorPoolIdsGOOGLE", "VK_GOOGLE_gfxstream");
10135 }
10136 AEMU_SCOPED_TRACE("vkCollectDescriptorPoolIdsGOOGLE");
10137 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10138 vkEnc->vkCollectDescriptorPoolIdsGOOGLE(device, descriptorPool, pPoolIdCount, pPoolIds, true /* do lock */);
10139}
Lingfeng Yang5678e1e2021-07-15 12:28:05 -070010140static void entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(
10141 VkQueue queue,
10142 uint32_t waitSemaphoreCount,
10143 const VkSemaphore* pWaitSemaphores,
10144 VkImage image)
10145{
10146 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROIDAsyncGOOGLE");
10147 auto vkEnc = ResourceTracker::getQueueEncoder(queue);
10148 vkEnc->vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(queue, waitSemaphoreCount, pWaitSemaphores, image, true /* do lock */);
10149}
Lingfeng Yangded34672021-01-22 23:17:47 -080010150#endif
Yilong Li353409a2022-01-04 02:37:56 -080010151#ifdef VK_EXT_global_priority_query
10152#endif
10153#ifdef VK_EXT_multi_draw
10154static void entry_vkCmdDrawMultiEXT(
10155 VkCommandBuffer commandBuffer,
10156 uint32_t drawCount,
10157 const VkMultiDrawInfoEXT* pVertexInfo,
10158 uint32_t instanceCount,
10159 uint32_t firstInstance,
10160 uint32_t stride)
10161{
10162 AEMU_SCOPED_TRACE("vkCmdDrawMultiEXT");
10163 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10164 vkEnc->vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, true /* do lock */);
10165}
Yahan Zhouf183ac62022-04-13 11:10:26 -070010166static void dynCheck_entry_vkCmdDrawMultiEXT(
10167 VkCommandBuffer commandBuffer,
10168 uint32_t drawCount,
10169 const VkMultiDrawInfoEXT* pVertexInfo,
10170 uint32_t instanceCount,
10171 uint32_t firstInstance,
10172 uint32_t stride)
10173{
10174 auto resources = ResourceTracker::get();
10175 VkDevice device = resources->getDevice(commandBuffer);;
10176 if (!resources->hasDeviceExtension(device, "VK_EXT_multi_draw"))
10177 {
10178 sOnInvalidDynamicallyCheckedCall("vkCmdDrawMultiEXT", "VK_EXT_multi_draw");
10179 }
10180 AEMU_SCOPED_TRACE("vkCmdDrawMultiEXT");
10181 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10182 vkEnc->vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, true /* do lock */);
10183}
Yilong Li353409a2022-01-04 02:37:56 -080010184static void entry_vkCmdDrawMultiIndexedEXT(
10185 VkCommandBuffer commandBuffer,
10186 uint32_t drawCount,
10187 const VkMultiDrawIndexedInfoEXT* pIndexInfo,
10188 uint32_t instanceCount,
10189 uint32_t firstInstance,
10190 uint32_t stride,
10191 const int32_t* pVertexOffset)
10192{
10193 AEMU_SCOPED_TRACE("vkCmdDrawMultiIndexedEXT");
10194 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10195 vkEnc->vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, true /* do lock */);
10196}
Yahan Zhouf183ac62022-04-13 11:10:26 -070010197static void dynCheck_entry_vkCmdDrawMultiIndexedEXT(
10198 VkCommandBuffer commandBuffer,
10199 uint32_t drawCount,
10200 const VkMultiDrawIndexedInfoEXT* pIndexInfo,
10201 uint32_t instanceCount,
10202 uint32_t firstInstance,
10203 uint32_t stride,
10204 const int32_t* pVertexOffset)
10205{
10206 auto resources = ResourceTracker::get();
10207 VkDevice device = resources->getDevice(commandBuffer);;
10208 if (!resources->hasDeviceExtension(device, "VK_EXT_multi_draw"))
10209 {
10210 sOnInvalidDynamicallyCheckedCall("vkCmdDrawMultiIndexedEXT", "VK_EXT_multi_draw");
10211 }
10212 AEMU_SCOPED_TRACE("vkCmdDrawMultiIndexedEXT");
10213 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10214 vkEnc->vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, true /* do lock */);
10215}
Yilong Li353409a2022-01-04 02:37:56 -080010216#endif
10217#ifdef VK_EXT_load_store_op_none
10218#endif
10219#ifdef VK_EXT_border_color_swizzle
10220#endif
10221#ifdef VK_EXT_pageable_device_local_memory
10222static void entry_vkSetDeviceMemoryPriorityEXT(
10223 VkDevice device,
10224 VkDeviceMemory memory,
10225 float priority)
10226{
10227 AEMU_SCOPED_TRACE("vkSetDeviceMemoryPriorityEXT");
10228 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10229 vkEnc->vkSetDeviceMemoryPriorityEXT(device, memory, priority, true /* do lock */);
10230}
10231static void dynCheck_entry_vkSetDeviceMemoryPriorityEXT(
10232 VkDevice device,
10233 VkDeviceMemory memory,
10234 float priority)
10235{
10236 auto resources = ResourceTracker::get();
10237 if (!resources->hasDeviceExtension(device, "VK_EXT_pageable_device_local_memory"))
10238 {
10239 sOnInvalidDynamicallyCheckedCall("vkSetDeviceMemoryPriorityEXT", "VK_EXT_pageable_device_local_memory");
10240 }
10241 AEMU_SCOPED_TRACE("vkSetDeviceMemoryPriorityEXT");
10242 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10243 vkEnc->vkSetDeviceMemoryPriorityEXT(device, memory, priority, true /* do lock */);
10244}
10245#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080010246#ifdef VK_KHR_acceleration_structure
10247static VkResult entry_vkCreateAccelerationStructureKHR(
10248 VkDevice device,
10249 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
10250 const VkAllocationCallbacks* pAllocator,
10251 VkAccelerationStructureKHR* pAccelerationStructure)
10252{
10253 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
10254 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10255 VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
10256 vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
10257 return vkCreateAccelerationStructureKHR_VkResult_return;
10258}
10259static VkResult dynCheck_entry_vkCreateAccelerationStructureKHR(
10260 VkDevice device,
10261 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
10262 const VkAllocationCallbacks* pAllocator,
10263 VkAccelerationStructureKHR* pAccelerationStructure)
10264{
10265 auto resources = ResourceTracker::get();
10266 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
10267 {
10268 sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureKHR", "VK_KHR_acceleration_structure");
10269 }
10270 AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
10271 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10272 VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
10273 vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
10274 return vkCreateAccelerationStructureKHR_VkResult_return;
10275}
10276static void entry_vkDestroyAccelerationStructureKHR(
10277 VkDevice device,
10278 VkAccelerationStructureKHR accelerationStructure,
10279 const VkAllocationCallbacks* pAllocator)
10280{
10281 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
10282 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10283 vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
10284}
10285static void dynCheck_entry_vkDestroyAccelerationStructureKHR(
10286 VkDevice device,
10287 VkAccelerationStructureKHR accelerationStructure,
10288 const VkAllocationCallbacks* pAllocator)
10289{
10290 auto resources = ResourceTracker::get();
10291 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
10292 {
10293 sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
10294 }
10295 AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
10296 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10297 vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
10298}
10299static void entry_vkCmdBuildAccelerationStructuresKHR(
10300 VkCommandBuffer commandBuffer,
10301 uint32_t infoCount,
10302 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
10303 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
10304{
10305 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresKHR");
10306 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10307 vkEnc->vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
10308}
Yahan Zhouf183ac62022-04-13 11:10:26 -070010309static void dynCheck_entry_vkCmdBuildAccelerationStructuresKHR(
10310 VkCommandBuffer commandBuffer,
10311 uint32_t infoCount,
10312 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
10313 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
10314{
10315 auto resources = ResourceTracker::get();
10316 VkDevice device = resources->getDevice(commandBuffer);;
10317 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
10318 {
10319 sOnInvalidDynamicallyCheckedCall("vkCmdBuildAccelerationStructuresKHR", "VK_KHR_acceleration_structure");
10320 }
10321 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresKHR");
10322 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10323 vkEnc->vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
10324}
Yilong Lia8d45f12021-02-07 02:30:21 -080010325static void entry_vkCmdBuildAccelerationStructuresIndirectKHR(
10326 VkCommandBuffer commandBuffer,
10327 uint32_t infoCount,
10328 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
10329 const VkDeviceAddress* pIndirectDeviceAddresses,
10330 const uint32_t* pIndirectStrides,
10331 const uint32_t* const* ppMaxPrimitiveCounts)
10332{
10333 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresIndirectKHR");
10334 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10335 vkEnc->vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, true /* do lock */);
10336}
Yahan Zhouf183ac62022-04-13 11:10:26 -070010337static void dynCheck_entry_vkCmdBuildAccelerationStructuresIndirectKHR(
10338 VkCommandBuffer commandBuffer,
10339 uint32_t infoCount,
10340 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
10341 const VkDeviceAddress* pIndirectDeviceAddresses,
10342 const uint32_t* pIndirectStrides,
10343 const uint32_t* const* ppMaxPrimitiveCounts)
10344{
10345 auto resources = ResourceTracker::get();
10346 VkDevice device = resources->getDevice(commandBuffer);;
10347 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
10348 {
10349 sOnInvalidDynamicallyCheckedCall("vkCmdBuildAccelerationStructuresIndirectKHR", "VK_KHR_acceleration_structure");
10350 }
10351 AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresIndirectKHR");
10352 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10353 vkEnc->vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, true /* do lock */);
10354}
Yilong Lia8d45f12021-02-07 02:30:21 -080010355static VkResult entry_vkBuildAccelerationStructuresKHR(
10356 VkDevice device,
10357 VkDeferredOperationKHR deferredOperation,
10358 uint32_t infoCount,
10359 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
10360 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
10361{
10362 AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
10363 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10364 VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
10365 vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
10366 return vkBuildAccelerationStructuresKHR_VkResult_return;
10367}
10368static VkResult dynCheck_entry_vkBuildAccelerationStructuresKHR(
10369 VkDevice device,
10370 VkDeferredOperationKHR deferredOperation,
10371 uint32_t infoCount,
10372 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
10373 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
10374{
10375 auto resources = ResourceTracker::get();
10376 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
10377 {
10378 sOnInvalidDynamicallyCheckedCall("vkBuildAccelerationStructuresKHR", "VK_KHR_acceleration_structure");
10379 }
10380 AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
10381 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10382 VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
10383 vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
10384 return vkBuildAccelerationStructuresKHR_VkResult_return;
10385}
10386static VkResult entry_vkCopyAccelerationStructureKHR(
10387 VkDevice device,
10388 VkDeferredOperationKHR deferredOperation,
10389 const VkCopyAccelerationStructureInfoKHR* pInfo)
10390{
10391 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
10392 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10393 VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
10394 vkCopyAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
10395 return vkCopyAccelerationStructureKHR_VkResult_return;
10396}
10397static VkResult dynCheck_entry_vkCopyAccelerationStructureKHR(
10398 VkDevice device,
10399 VkDeferredOperationKHR deferredOperation,
10400 const VkCopyAccelerationStructureInfoKHR* pInfo)
10401{
10402 auto resources = ResourceTracker::get();
10403 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
10404 {
10405 sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
10406 }
10407 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
10408 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10409 VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
10410 vkCopyAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
10411 return vkCopyAccelerationStructureKHR_VkResult_return;
10412}
10413static VkResult entry_vkCopyAccelerationStructureToMemoryKHR(
10414 VkDevice device,
10415 VkDeferredOperationKHR deferredOperation,
10416 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
10417{
10418 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
10419 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10420 VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
10421 vkCopyAccelerationStructureToMemoryKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, true /* do lock */);
10422 return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
10423}
10424static VkResult dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR(
10425 VkDevice device,
10426 VkDeferredOperationKHR deferredOperation,
10427 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
10428{
10429 auto resources = ResourceTracker::get();
10430 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
10431 {
10432 sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureToMemoryKHR", "VK_KHR_acceleration_structure");
10433 }
10434 AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
10435 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10436 VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
10437 vkCopyAccelerationStructureToMemoryKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, true /* do lock */);
10438 return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
10439}
10440static VkResult entry_vkCopyMemoryToAccelerationStructureKHR(
10441 VkDevice device,
10442 VkDeferredOperationKHR deferredOperation,
10443 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
10444{
10445 AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
10446 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10447 VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
10448 vkCopyMemoryToAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
10449 return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
10450}
10451static VkResult dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR(
10452 VkDevice device,
10453 VkDeferredOperationKHR deferredOperation,
10454 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
10455{
10456 auto resources = ResourceTracker::get();
10457 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
10458 {
10459 sOnInvalidDynamicallyCheckedCall("vkCopyMemoryToAccelerationStructureKHR", "VK_KHR_acceleration_structure");
10460 }
10461 AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
10462 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10463 VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
10464 vkCopyMemoryToAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
10465 return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
10466}
10467static VkResult entry_vkWriteAccelerationStructuresPropertiesKHR(
10468 VkDevice device,
10469 uint32_t accelerationStructureCount,
10470 const VkAccelerationStructureKHR* pAccelerationStructures,
10471 VkQueryType queryType,
10472 size_t dataSize,
10473 void* pData,
10474 size_t stride)
10475{
10476 AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
10477 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10478 VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
10479 vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
10480 return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
10481}
10482static VkResult dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR(
10483 VkDevice device,
10484 uint32_t accelerationStructureCount,
10485 const VkAccelerationStructureKHR* pAccelerationStructures,
10486 VkQueryType queryType,
10487 size_t dataSize,
10488 void* pData,
10489 size_t stride)
10490{
10491 auto resources = ResourceTracker::get();
10492 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
10493 {
10494 sOnInvalidDynamicallyCheckedCall("vkWriteAccelerationStructuresPropertiesKHR", "VK_KHR_acceleration_structure");
10495 }
10496 AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
10497 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10498 VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
10499 vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
10500 return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
10501}
10502static void entry_vkCmdCopyAccelerationStructureKHR(
10503 VkCommandBuffer commandBuffer,
10504 const VkCopyAccelerationStructureInfoKHR* pInfo)
10505{
10506 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureKHR");
10507 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10508 vkEnc->vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
10509}
Yahan Zhouf183ac62022-04-13 11:10:26 -070010510static void dynCheck_entry_vkCmdCopyAccelerationStructureKHR(
10511 VkCommandBuffer commandBuffer,
10512 const VkCopyAccelerationStructureInfoKHR* pInfo)
10513{
10514 auto resources = ResourceTracker::get();
10515 VkDevice device = resources->getDevice(commandBuffer);;
10516 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
10517 {
10518 sOnInvalidDynamicallyCheckedCall("vkCmdCopyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
10519 }
10520 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureKHR");
10521 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10522 vkEnc->vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
10523}
Yilong Lia8d45f12021-02-07 02:30:21 -080010524static void entry_vkCmdCopyAccelerationStructureToMemoryKHR(
10525 VkCommandBuffer commandBuffer,
10526 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
10527{
10528 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureToMemoryKHR");
10529 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10530 vkEnc->vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, true /* do lock */);
10531}
Yahan Zhouf183ac62022-04-13 11:10:26 -070010532static void dynCheck_entry_vkCmdCopyAccelerationStructureToMemoryKHR(
10533 VkCommandBuffer commandBuffer,
10534 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
10535{
10536 auto resources = ResourceTracker::get();
10537 VkDevice device = resources->getDevice(commandBuffer);;
10538 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
10539 {
10540 sOnInvalidDynamicallyCheckedCall("vkCmdCopyAccelerationStructureToMemoryKHR", "VK_KHR_acceleration_structure");
10541 }
10542 AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureToMemoryKHR");
10543 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10544 vkEnc->vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, true /* do lock */);
10545}
Yilong Lia8d45f12021-02-07 02:30:21 -080010546static void entry_vkCmdCopyMemoryToAccelerationStructureKHR(
10547 VkCommandBuffer commandBuffer,
10548 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
10549{
10550 AEMU_SCOPED_TRACE("vkCmdCopyMemoryToAccelerationStructureKHR");
10551 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10552 vkEnc->vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
10553}
Yahan Zhouf183ac62022-04-13 11:10:26 -070010554static void dynCheck_entry_vkCmdCopyMemoryToAccelerationStructureKHR(
10555 VkCommandBuffer commandBuffer,
10556 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
10557{
10558 auto resources = ResourceTracker::get();
10559 VkDevice device = resources->getDevice(commandBuffer);;
10560 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
10561 {
10562 sOnInvalidDynamicallyCheckedCall("vkCmdCopyMemoryToAccelerationStructureKHR", "VK_KHR_acceleration_structure");
10563 }
10564 AEMU_SCOPED_TRACE("vkCmdCopyMemoryToAccelerationStructureKHR");
10565 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10566 vkEnc->vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
10567}
Yilong Lia8d45f12021-02-07 02:30:21 -080010568static VkDeviceAddress entry_vkGetAccelerationStructureDeviceAddressKHR(
10569 VkDevice device,
10570 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
10571{
10572 AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
10573 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10574 VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
10575 vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
10576 return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
10577}
10578static VkDeviceAddress dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR(
10579 VkDevice device,
10580 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
10581{
10582 auto resources = ResourceTracker::get();
10583 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
10584 {
10585 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureDeviceAddressKHR", "VK_KHR_acceleration_structure");
10586 }
10587 AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
10588 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10589 VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
10590 vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
10591 return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
10592}
10593static void entry_vkCmdWriteAccelerationStructuresPropertiesKHR(
10594 VkCommandBuffer commandBuffer,
10595 uint32_t accelerationStructureCount,
10596 const VkAccelerationStructureKHR* pAccelerationStructures,
10597 VkQueryType queryType,
10598 VkQueryPool queryPool,
10599 uint32_t firstQuery)
10600{
10601 AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesKHR");
10602 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10603 vkEnc->vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
10604}
Yahan Zhouf183ac62022-04-13 11:10:26 -070010605static void dynCheck_entry_vkCmdWriteAccelerationStructuresPropertiesKHR(
10606 VkCommandBuffer commandBuffer,
10607 uint32_t accelerationStructureCount,
10608 const VkAccelerationStructureKHR* pAccelerationStructures,
10609 VkQueryType queryType,
10610 VkQueryPool queryPool,
10611 uint32_t firstQuery)
10612{
10613 auto resources = ResourceTracker::get();
10614 VkDevice device = resources->getDevice(commandBuffer);;
10615 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
10616 {
10617 sOnInvalidDynamicallyCheckedCall("vkCmdWriteAccelerationStructuresPropertiesKHR", "VK_KHR_acceleration_structure");
10618 }
10619 AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesKHR");
10620 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10621 vkEnc->vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
10622}
Yilong Lia8d45f12021-02-07 02:30:21 -080010623static void entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
10624 VkDevice device,
10625 const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
10626 VkAccelerationStructureCompatibilityKHR* pCompatibility)
10627{
10628 AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
10629 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10630 vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
10631}
10632static void dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
10633 VkDevice device,
10634 const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
10635 VkAccelerationStructureCompatibilityKHR* pCompatibility)
10636{
10637 auto resources = ResourceTracker::get();
10638 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
10639 {
10640 sOnInvalidDynamicallyCheckedCall("vkGetDeviceAccelerationStructureCompatibilityKHR", "VK_KHR_acceleration_structure");
10641 }
10642 AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
10643 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10644 vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
10645}
10646static void entry_vkGetAccelerationStructureBuildSizesKHR(
10647 VkDevice device,
10648 VkAccelerationStructureBuildTypeKHR buildType,
10649 const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
10650 const uint32_t* pMaxPrimitiveCounts,
10651 VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
10652{
10653 AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
10654 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10655 vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
10656}
10657static void dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR(
10658 VkDevice device,
10659 VkAccelerationStructureBuildTypeKHR buildType,
10660 const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
10661 const uint32_t* pMaxPrimitiveCounts,
10662 VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
10663{
10664 auto resources = ResourceTracker::get();
10665 if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
10666 {
10667 sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureBuildSizesKHR", "VK_KHR_acceleration_structure");
10668 }
10669 AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
10670 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10671 vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
10672}
10673#endif
10674#ifdef VK_KHR_ray_tracing_pipeline
10675static void entry_vkCmdTraceRaysKHR(
10676 VkCommandBuffer commandBuffer,
10677 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
10678 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
10679 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
10680 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
10681 uint32_t width,
10682 uint32_t height,
10683 uint32_t depth)
10684{
10685 AEMU_SCOPED_TRACE("vkCmdTraceRaysKHR");
10686 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10687 vkEnc->vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, true /* do lock */);
10688}
Yahan Zhouf183ac62022-04-13 11:10:26 -070010689static void dynCheck_entry_vkCmdTraceRaysKHR(
10690 VkCommandBuffer commandBuffer,
10691 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
10692 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
10693 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
10694 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
10695 uint32_t width,
10696 uint32_t height,
10697 uint32_t depth)
10698{
10699 auto resources = ResourceTracker::get();
10700 VkDevice device = resources->getDevice(commandBuffer);;
10701 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
10702 {
10703 sOnInvalidDynamicallyCheckedCall("vkCmdTraceRaysKHR", "VK_KHR_ray_tracing_pipeline");
10704 }
10705 AEMU_SCOPED_TRACE("vkCmdTraceRaysKHR");
10706 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10707 vkEnc->vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, true /* do lock */);
10708}
Yilong Lia8d45f12021-02-07 02:30:21 -080010709static VkResult entry_vkCreateRayTracingPipelinesKHR(
10710 VkDevice device,
10711 VkDeferredOperationKHR deferredOperation,
10712 VkPipelineCache pipelineCache,
10713 uint32_t createInfoCount,
10714 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
10715 const VkAllocationCallbacks* pAllocator,
10716 VkPipeline* pPipelines)
10717{
10718 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
10719 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10720 VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
10721 vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
10722 return vkCreateRayTracingPipelinesKHR_VkResult_return;
10723}
10724static VkResult dynCheck_entry_vkCreateRayTracingPipelinesKHR(
10725 VkDevice device,
10726 VkDeferredOperationKHR deferredOperation,
10727 VkPipelineCache pipelineCache,
10728 uint32_t createInfoCount,
10729 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
10730 const VkAllocationCallbacks* pAllocator,
10731 VkPipeline* pPipelines)
10732{
10733 auto resources = ResourceTracker::get();
10734 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
10735 {
10736 sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesKHR", "VK_KHR_ray_tracing_pipeline");
10737 }
10738 AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
10739 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10740 VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
10741 vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
10742 return vkCreateRayTracingPipelinesKHR_VkResult_return;
10743}
10744static VkResult entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
10745 VkDevice device,
10746 VkPipeline pipeline,
10747 uint32_t firstGroup,
10748 uint32_t groupCount,
10749 size_t dataSize,
10750 void* pData)
10751{
10752 AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
10753 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10754 VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
10755 vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
10756 return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
10757}
10758static VkResult dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
10759 VkDevice device,
10760 VkPipeline pipeline,
10761 uint32_t firstGroup,
10762 uint32_t groupCount,
10763 size_t dataSize,
10764 void* pData)
10765{
10766 auto resources = ResourceTracker::get();
10767 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
10768 {
10769 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR", "VK_KHR_ray_tracing_pipeline");
10770 }
10771 AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
10772 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10773 VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
10774 vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
10775 return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
10776}
10777static void entry_vkCmdTraceRaysIndirectKHR(
10778 VkCommandBuffer commandBuffer,
10779 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
10780 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
10781 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
10782 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
10783 VkDeviceAddress indirectDeviceAddress)
10784{
10785 AEMU_SCOPED_TRACE("vkCmdTraceRaysIndirectKHR");
10786 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10787 vkEnc->vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, true /* do lock */);
10788}
Yahan Zhouf183ac62022-04-13 11:10:26 -070010789static void dynCheck_entry_vkCmdTraceRaysIndirectKHR(
10790 VkCommandBuffer commandBuffer,
10791 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
10792 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
10793 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
10794 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
10795 VkDeviceAddress indirectDeviceAddress)
10796{
10797 auto resources = ResourceTracker::get();
10798 VkDevice device = resources->getDevice(commandBuffer);;
10799 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
10800 {
10801 sOnInvalidDynamicallyCheckedCall("vkCmdTraceRaysIndirectKHR", "VK_KHR_ray_tracing_pipeline");
10802 }
10803 AEMU_SCOPED_TRACE("vkCmdTraceRaysIndirectKHR");
10804 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10805 vkEnc->vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, true /* do lock */);
10806}
Yilong Lia8d45f12021-02-07 02:30:21 -080010807static VkDeviceSize entry_vkGetRayTracingShaderGroupStackSizeKHR(
10808 VkDevice device,
10809 VkPipeline pipeline,
10810 uint32_t group,
10811 VkShaderGroupShaderKHR groupShader)
10812{
10813 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
10814 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10815 VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
10816 vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
10817 return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
10818}
10819static VkDeviceSize dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR(
10820 VkDevice device,
10821 VkPipeline pipeline,
10822 uint32_t group,
10823 VkShaderGroupShaderKHR groupShader)
10824{
10825 auto resources = ResourceTracker::get();
10826 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
10827 {
10828 sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupStackSizeKHR", "VK_KHR_ray_tracing_pipeline");
10829 }
10830 AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
10831 auto vkEnc = ResourceTracker::getThreadLocalEncoder();
10832 VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
10833 vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
10834 return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
10835}
10836static void entry_vkCmdSetRayTracingPipelineStackSizeKHR(
10837 VkCommandBuffer commandBuffer,
10838 uint32_t pipelineStackSize)
10839{
10840 AEMU_SCOPED_TRACE("vkCmdSetRayTracingPipelineStackSizeKHR");
10841 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10842 vkEnc->vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, true /* do lock */);
10843}
Yahan Zhouf183ac62022-04-13 11:10:26 -070010844static void dynCheck_entry_vkCmdSetRayTracingPipelineStackSizeKHR(
10845 VkCommandBuffer commandBuffer,
10846 uint32_t pipelineStackSize)
10847{
10848 auto resources = ResourceTracker::get();
10849 VkDevice device = resources->getDevice(commandBuffer);;
10850 if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
10851 {
10852 sOnInvalidDynamicallyCheckedCall("vkCmdSetRayTracingPipelineStackSizeKHR", "VK_KHR_ray_tracing_pipeline");
10853 }
10854 AEMU_SCOPED_TRACE("vkCmdSetRayTracingPipelineStackSizeKHR");
10855 auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
10856 vkEnc->vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, true /* do lock */);
10857}
Yilong Lia8d45f12021-02-07 02:30:21 -080010858#endif
10859#ifdef VK_KHR_ray_query
10860#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010861void* goldfish_vulkan_get_proc_address(const char* name){
10862#ifdef VK_VERSION_1_0
10863 if (!strcmp(name, "vkCreateInstance"))
10864 {
10865 return (void*)entry_vkCreateInstance;
10866 }
10867 if (!strcmp(name, "vkDestroyInstance"))
10868 {
10869 return (void*)entry_vkDestroyInstance;
10870 }
10871 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
10872 {
10873 return (void*)entry_vkEnumeratePhysicalDevices;
10874 }
10875 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
10876 {
10877 return (void*)entry_vkGetPhysicalDeviceFeatures;
10878 }
10879 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
10880 {
10881 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
10882 }
10883 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
10884 {
10885 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
10886 }
10887 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
10888 {
10889 return (void*)entry_vkGetPhysicalDeviceProperties;
10890 }
10891 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
10892 {
10893 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
10894 }
10895 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
10896 {
10897 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
10898 }
10899 if (!strcmp(name, "vkGetInstanceProcAddr"))
10900 {
10901 return (void*)entry_vkGetInstanceProcAddr;
10902 }
10903 if (!strcmp(name, "vkGetDeviceProcAddr"))
10904 {
10905 return (void*)entry_vkGetDeviceProcAddr;
10906 }
10907 if (!strcmp(name, "vkCreateDevice"))
10908 {
10909 return (void*)entry_vkCreateDevice;
10910 }
10911 if (!strcmp(name, "vkDestroyDevice"))
10912 {
10913 return (void*)entry_vkDestroyDevice;
10914 }
10915 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
10916 {
10917 return (void*)entry_vkEnumerateInstanceExtensionProperties;
10918 }
10919 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
10920 {
10921 return (void*)entry_vkEnumerateDeviceExtensionProperties;
10922 }
10923 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
10924 {
10925 return (void*)entry_vkEnumerateInstanceLayerProperties;
10926 }
10927 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
10928 {
10929 return (void*)entry_vkEnumerateDeviceLayerProperties;
10930 }
10931 if (!strcmp(name, "vkGetDeviceQueue"))
10932 {
10933 return (void*)entry_vkGetDeviceQueue;
10934 }
10935 if (!strcmp(name, "vkQueueSubmit"))
10936 {
10937 return (void*)entry_vkQueueSubmit;
10938 }
10939 if (!strcmp(name, "vkQueueWaitIdle"))
10940 {
10941 return (void*)entry_vkQueueWaitIdle;
10942 }
10943 if (!strcmp(name, "vkDeviceWaitIdle"))
10944 {
10945 return (void*)entry_vkDeviceWaitIdle;
10946 }
10947 if (!strcmp(name, "vkAllocateMemory"))
10948 {
10949 return (void*)entry_vkAllocateMemory;
10950 }
10951 if (!strcmp(name, "vkFreeMemory"))
10952 {
10953 return (void*)entry_vkFreeMemory;
10954 }
10955 if (!strcmp(name, "vkMapMemory"))
10956 {
10957 return (void*)entry_vkMapMemory;
10958 }
10959 if (!strcmp(name, "vkUnmapMemory"))
10960 {
10961 return (void*)entry_vkUnmapMemory;
10962 }
10963 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
10964 {
10965 return (void*)entry_vkFlushMappedMemoryRanges;
10966 }
10967 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
10968 {
10969 return (void*)entry_vkInvalidateMappedMemoryRanges;
10970 }
10971 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
10972 {
10973 return (void*)entry_vkGetDeviceMemoryCommitment;
10974 }
10975 if (!strcmp(name, "vkBindBufferMemory"))
10976 {
10977 return (void*)entry_vkBindBufferMemory;
10978 }
10979 if (!strcmp(name, "vkBindImageMemory"))
10980 {
10981 return (void*)entry_vkBindImageMemory;
10982 }
10983 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
10984 {
10985 return (void*)entry_vkGetBufferMemoryRequirements;
10986 }
10987 if (!strcmp(name, "vkGetImageMemoryRequirements"))
10988 {
10989 return (void*)entry_vkGetImageMemoryRequirements;
10990 }
10991 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
10992 {
10993 return (void*)entry_vkGetImageSparseMemoryRequirements;
10994 }
10995 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
10996 {
10997 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
10998 }
10999 if (!strcmp(name, "vkQueueBindSparse"))
11000 {
11001 return (void*)entry_vkQueueBindSparse;
11002 }
11003 if (!strcmp(name, "vkCreateFence"))
11004 {
11005 return (void*)entry_vkCreateFence;
11006 }
11007 if (!strcmp(name, "vkDestroyFence"))
11008 {
11009 return (void*)entry_vkDestroyFence;
11010 }
11011 if (!strcmp(name, "vkResetFences"))
11012 {
11013 return (void*)entry_vkResetFences;
11014 }
11015 if (!strcmp(name, "vkGetFenceStatus"))
11016 {
11017 return (void*)entry_vkGetFenceStatus;
11018 }
11019 if (!strcmp(name, "vkWaitForFences"))
11020 {
11021 return (void*)entry_vkWaitForFences;
11022 }
11023 if (!strcmp(name, "vkCreateSemaphore"))
11024 {
11025 return (void*)entry_vkCreateSemaphore;
11026 }
11027 if (!strcmp(name, "vkDestroySemaphore"))
11028 {
11029 return (void*)entry_vkDestroySemaphore;
11030 }
11031 if (!strcmp(name, "vkCreateEvent"))
11032 {
11033 return (void*)entry_vkCreateEvent;
11034 }
11035 if (!strcmp(name, "vkDestroyEvent"))
11036 {
11037 return (void*)entry_vkDestroyEvent;
11038 }
11039 if (!strcmp(name, "vkGetEventStatus"))
11040 {
11041 return (void*)entry_vkGetEventStatus;
11042 }
11043 if (!strcmp(name, "vkSetEvent"))
11044 {
11045 return (void*)entry_vkSetEvent;
11046 }
11047 if (!strcmp(name, "vkResetEvent"))
11048 {
11049 return (void*)entry_vkResetEvent;
11050 }
11051 if (!strcmp(name, "vkCreateQueryPool"))
11052 {
11053 return (void*)entry_vkCreateQueryPool;
11054 }
11055 if (!strcmp(name, "vkDestroyQueryPool"))
11056 {
11057 return (void*)entry_vkDestroyQueryPool;
11058 }
11059 if (!strcmp(name, "vkGetQueryPoolResults"))
11060 {
11061 return (void*)entry_vkGetQueryPoolResults;
11062 }
11063 if (!strcmp(name, "vkCreateBuffer"))
11064 {
11065 return (void*)entry_vkCreateBuffer;
11066 }
11067 if (!strcmp(name, "vkDestroyBuffer"))
11068 {
11069 return (void*)entry_vkDestroyBuffer;
11070 }
11071 if (!strcmp(name, "vkCreateBufferView"))
11072 {
11073 return (void*)entry_vkCreateBufferView;
11074 }
11075 if (!strcmp(name, "vkDestroyBufferView"))
11076 {
11077 return (void*)entry_vkDestroyBufferView;
11078 }
11079 if (!strcmp(name, "vkCreateImage"))
11080 {
11081 return (void*)entry_vkCreateImage;
11082 }
11083 if (!strcmp(name, "vkDestroyImage"))
11084 {
11085 return (void*)entry_vkDestroyImage;
11086 }
11087 if (!strcmp(name, "vkGetImageSubresourceLayout"))
11088 {
11089 return (void*)entry_vkGetImageSubresourceLayout;
11090 }
11091 if (!strcmp(name, "vkCreateImageView"))
11092 {
11093 return (void*)entry_vkCreateImageView;
11094 }
11095 if (!strcmp(name, "vkDestroyImageView"))
11096 {
11097 return (void*)entry_vkDestroyImageView;
11098 }
11099 if (!strcmp(name, "vkCreateShaderModule"))
11100 {
11101 return (void*)entry_vkCreateShaderModule;
11102 }
11103 if (!strcmp(name, "vkDestroyShaderModule"))
11104 {
11105 return (void*)entry_vkDestroyShaderModule;
11106 }
11107 if (!strcmp(name, "vkCreatePipelineCache"))
11108 {
11109 return (void*)entry_vkCreatePipelineCache;
11110 }
11111 if (!strcmp(name, "vkDestroyPipelineCache"))
11112 {
11113 return (void*)entry_vkDestroyPipelineCache;
11114 }
11115 if (!strcmp(name, "vkGetPipelineCacheData"))
11116 {
11117 return (void*)entry_vkGetPipelineCacheData;
11118 }
11119 if (!strcmp(name, "vkMergePipelineCaches"))
11120 {
11121 return (void*)entry_vkMergePipelineCaches;
11122 }
11123 if (!strcmp(name, "vkCreateGraphicsPipelines"))
11124 {
11125 return (void*)entry_vkCreateGraphicsPipelines;
11126 }
11127 if (!strcmp(name, "vkCreateComputePipelines"))
11128 {
11129 return (void*)entry_vkCreateComputePipelines;
11130 }
11131 if (!strcmp(name, "vkDestroyPipeline"))
11132 {
11133 return (void*)entry_vkDestroyPipeline;
11134 }
11135 if (!strcmp(name, "vkCreatePipelineLayout"))
11136 {
11137 return (void*)entry_vkCreatePipelineLayout;
11138 }
11139 if (!strcmp(name, "vkDestroyPipelineLayout"))
11140 {
11141 return (void*)entry_vkDestroyPipelineLayout;
11142 }
11143 if (!strcmp(name, "vkCreateSampler"))
11144 {
11145 return (void*)entry_vkCreateSampler;
11146 }
11147 if (!strcmp(name, "vkDestroySampler"))
11148 {
11149 return (void*)entry_vkDestroySampler;
11150 }
11151 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
11152 {
11153 return (void*)entry_vkCreateDescriptorSetLayout;
11154 }
11155 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
11156 {
11157 return (void*)entry_vkDestroyDescriptorSetLayout;
11158 }
11159 if (!strcmp(name, "vkCreateDescriptorPool"))
11160 {
11161 return (void*)entry_vkCreateDescriptorPool;
11162 }
11163 if (!strcmp(name, "vkDestroyDescriptorPool"))
11164 {
11165 return (void*)entry_vkDestroyDescriptorPool;
11166 }
11167 if (!strcmp(name, "vkResetDescriptorPool"))
11168 {
11169 return (void*)entry_vkResetDescriptorPool;
11170 }
11171 if (!strcmp(name, "vkAllocateDescriptorSets"))
11172 {
11173 return (void*)entry_vkAllocateDescriptorSets;
11174 }
11175 if (!strcmp(name, "vkFreeDescriptorSets"))
11176 {
11177 return (void*)entry_vkFreeDescriptorSets;
11178 }
11179 if (!strcmp(name, "vkUpdateDescriptorSets"))
11180 {
11181 return (void*)entry_vkUpdateDescriptorSets;
11182 }
11183 if (!strcmp(name, "vkCreateFramebuffer"))
11184 {
11185 return (void*)entry_vkCreateFramebuffer;
11186 }
11187 if (!strcmp(name, "vkDestroyFramebuffer"))
11188 {
11189 return (void*)entry_vkDestroyFramebuffer;
11190 }
11191 if (!strcmp(name, "vkCreateRenderPass"))
11192 {
11193 return (void*)entry_vkCreateRenderPass;
11194 }
11195 if (!strcmp(name, "vkDestroyRenderPass"))
11196 {
11197 return (void*)entry_vkDestroyRenderPass;
11198 }
11199 if (!strcmp(name, "vkGetRenderAreaGranularity"))
11200 {
11201 return (void*)entry_vkGetRenderAreaGranularity;
11202 }
11203 if (!strcmp(name, "vkCreateCommandPool"))
11204 {
11205 return (void*)entry_vkCreateCommandPool;
11206 }
11207 if (!strcmp(name, "vkDestroyCommandPool"))
11208 {
11209 return (void*)entry_vkDestroyCommandPool;
11210 }
11211 if (!strcmp(name, "vkResetCommandPool"))
11212 {
11213 return (void*)entry_vkResetCommandPool;
11214 }
11215 if (!strcmp(name, "vkAllocateCommandBuffers"))
11216 {
11217 return (void*)entry_vkAllocateCommandBuffers;
11218 }
11219 if (!strcmp(name, "vkFreeCommandBuffers"))
11220 {
11221 return (void*)entry_vkFreeCommandBuffers;
11222 }
11223 if (!strcmp(name, "vkBeginCommandBuffer"))
11224 {
11225 return (void*)entry_vkBeginCommandBuffer;
11226 }
11227 if (!strcmp(name, "vkEndCommandBuffer"))
11228 {
11229 return (void*)entry_vkEndCommandBuffer;
11230 }
11231 if (!strcmp(name, "vkResetCommandBuffer"))
11232 {
11233 return (void*)entry_vkResetCommandBuffer;
11234 }
11235 if (!strcmp(name, "vkCmdBindPipeline"))
11236 {
11237 return (void*)entry_vkCmdBindPipeline;
11238 }
11239 if (!strcmp(name, "vkCmdSetViewport"))
11240 {
11241 return (void*)entry_vkCmdSetViewport;
11242 }
11243 if (!strcmp(name, "vkCmdSetScissor"))
11244 {
11245 return (void*)entry_vkCmdSetScissor;
11246 }
11247 if (!strcmp(name, "vkCmdSetLineWidth"))
11248 {
11249 return (void*)entry_vkCmdSetLineWidth;
11250 }
11251 if (!strcmp(name, "vkCmdSetDepthBias"))
11252 {
11253 return (void*)entry_vkCmdSetDepthBias;
11254 }
11255 if (!strcmp(name, "vkCmdSetBlendConstants"))
11256 {
11257 return (void*)entry_vkCmdSetBlendConstants;
11258 }
11259 if (!strcmp(name, "vkCmdSetDepthBounds"))
11260 {
11261 return (void*)entry_vkCmdSetDepthBounds;
11262 }
11263 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
11264 {
11265 return (void*)entry_vkCmdSetStencilCompareMask;
11266 }
11267 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
11268 {
11269 return (void*)entry_vkCmdSetStencilWriteMask;
11270 }
11271 if (!strcmp(name, "vkCmdSetStencilReference"))
11272 {
11273 return (void*)entry_vkCmdSetStencilReference;
11274 }
11275 if (!strcmp(name, "vkCmdBindDescriptorSets"))
11276 {
11277 return (void*)entry_vkCmdBindDescriptorSets;
11278 }
11279 if (!strcmp(name, "vkCmdBindIndexBuffer"))
11280 {
11281 return (void*)entry_vkCmdBindIndexBuffer;
11282 }
11283 if (!strcmp(name, "vkCmdBindVertexBuffers"))
11284 {
11285 return (void*)entry_vkCmdBindVertexBuffers;
11286 }
11287 if (!strcmp(name, "vkCmdDraw"))
11288 {
11289 return (void*)entry_vkCmdDraw;
11290 }
11291 if (!strcmp(name, "vkCmdDrawIndexed"))
11292 {
11293 return (void*)entry_vkCmdDrawIndexed;
11294 }
11295 if (!strcmp(name, "vkCmdDrawIndirect"))
11296 {
11297 return (void*)entry_vkCmdDrawIndirect;
11298 }
11299 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
11300 {
11301 return (void*)entry_vkCmdDrawIndexedIndirect;
11302 }
11303 if (!strcmp(name, "vkCmdDispatch"))
11304 {
11305 return (void*)entry_vkCmdDispatch;
11306 }
11307 if (!strcmp(name, "vkCmdDispatchIndirect"))
11308 {
11309 return (void*)entry_vkCmdDispatchIndirect;
11310 }
11311 if (!strcmp(name, "vkCmdCopyBuffer"))
11312 {
11313 return (void*)entry_vkCmdCopyBuffer;
11314 }
11315 if (!strcmp(name, "vkCmdCopyImage"))
11316 {
11317 return (void*)entry_vkCmdCopyImage;
11318 }
11319 if (!strcmp(name, "vkCmdBlitImage"))
11320 {
11321 return (void*)entry_vkCmdBlitImage;
11322 }
11323 if (!strcmp(name, "vkCmdCopyBufferToImage"))
11324 {
11325 return (void*)entry_vkCmdCopyBufferToImage;
11326 }
11327 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
11328 {
11329 return (void*)entry_vkCmdCopyImageToBuffer;
11330 }
11331 if (!strcmp(name, "vkCmdUpdateBuffer"))
11332 {
11333 return (void*)entry_vkCmdUpdateBuffer;
11334 }
11335 if (!strcmp(name, "vkCmdFillBuffer"))
11336 {
11337 return (void*)entry_vkCmdFillBuffer;
11338 }
11339 if (!strcmp(name, "vkCmdClearColorImage"))
11340 {
11341 return (void*)entry_vkCmdClearColorImage;
11342 }
11343 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
11344 {
11345 return (void*)entry_vkCmdClearDepthStencilImage;
11346 }
11347 if (!strcmp(name, "vkCmdClearAttachments"))
11348 {
11349 return (void*)entry_vkCmdClearAttachments;
11350 }
11351 if (!strcmp(name, "vkCmdResolveImage"))
11352 {
11353 return (void*)entry_vkCmdResolveImage;
11354 }
11355 if (!strcmp(name, "vkCmdSetEvent"))
11356 {
11357 return (void*)entry_vkCmdSetEvent;
11358 }
11359 if (!strcmp(name, "vkCmdResetEvent"))
11360 {
11361 return (void*)entry_vkCmdResetEvent;
11362 }
11363 if (!strcmp(name, "vkCmdWaitEvents"))
11364 {
11365 return (void*)entry_vkCmdWaitEvents;
11366 }
11367 if (!strcmp(name, "vkCmdPipelineBarrier"))
11368 {
11369 return (void*)entry_vkCmdPipelineBarrier;
11370 }
11371 if (!strcmp(name, "vkCmdBeginQuery"))
11372 {
11373 return (void*)entry_vkCmdBeginQuery;
11374 }
11375 if (!strcmp(name, "vkCmdEndQuery"))
11376 {
11377 return (void*)entry_vkCmdEndQuery;
11378 }
11379 if (!strcmp(name, "vkCmdResetQueryPool"))
11380 {
11381 return (void*)entry_vkCmdResetQueryPool;
11382 }
11383 if (!strcmp(name, "vkCmdWriteTimestamp"))
11384 {
11385 return (void*)entry_vkCmdWriteTimestamp;
11386 }
11387 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
11388 {
11389 return (void*)entry_vkCmdCopyQueryPoolResults;
11390 }
11391 if (!strcmp(name, "vkCmdPushConstants"))
11392 {
11393 return (void*)entry_vkCmdPushConstants;
11394 }
11395 if (!strcmp(name, "vkCmdBeginRenderPass"))
11396 {
11397 return (void*)entry_vkCmdBeginRenderPass;
11398 }
11399 if (!strcmp(name, "vkCmdNextSubpass"))
11400 {
11401 return (void*)entry_vkCmdNextSubpass;
11402 }
11403 if (!strcmp(name, "vkCmdEndRenderPass"))
11404 {
11405 return (void*)entry_vkCmdEndRenderPass;
11406 }
11407 if (!strcmp(name, "vkCmdExecuteCommands"))
11408 {
11409 return (void*)entry_vkCmdExecuteCommands;
11410 }
11411#endif
11412#ifdef VK_VERSION_1_1
11413 if (!strcmp(name, "vkEnumerateInstanceVersion"))
11414 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011415 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011416 }
11417 if (!strcmp(name, "vkBindBufferMemory2"))
11418 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011419 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011420 }
11421 if (!strcmp(name, "vkBindImageMemory2"))
11422 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011423 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011424 }
11425 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
11426 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011427 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011428 }
11429 if (!strcmp(name, "vkCmdSetDeviceMask"))
11430 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011431 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011432 }
11433 if (!strcmp(name, "vkCmdDispatchBase"))
11434 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011435 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011436 }
11437 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
11438 {
Lingfeng Yang113689e2018-11-11 16:48:50 -080011439 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011440 }
11441 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
11442 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011443 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011444 }
11445 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
11446 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011447 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011448 }
11449 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
11450 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011451 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011452 }
11453 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
11454 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011455 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011456 }
11457 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
11458 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011459 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011460 }
11461 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
11462 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011463 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011464 }
11465 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
11466 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011467 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011468 }
11469 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
11470 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011471 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011472 }
11473 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
11474 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011475 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011476 }
11477 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
11478 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011479 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011480 }
11481 if (!strcmp(name, "vkTrimCommandPool"))
11482 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011483 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011484 }
11485 if (!strcmp(name, "vkGetDeviceQueue2"))
11486 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011487 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011488 }
11489 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
11490 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011491 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011492 }
11493 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
11494 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011495 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011496 }
11497 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
11498 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011499 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011500 }
11501 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
11502 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011503 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011504 }
11505 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
11506 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011507 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011508 }
11509 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
11510 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011511 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011512 }
11513 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
11514 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011515 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011516 }
11517 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
11518 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011519 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011520 }
11521 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
11522 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011523 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011524 }
11525#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011526#ifdef VK_VERSION_1_2
11527 if (!strcmp(name, "vkCmdDrawIndirectCount"))
11528 {
11529 return nullptr;
11530 }
11531 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
11532 {
11533 return nullptr;
11534 }
11535 if (!strcmp(name, "vkCreateRenderPass2"))
11536 {
11537 return nullptr;
11538 }
11539 if (!strcmp(name, "vkCmdBeginRenderPass2"))
11540 {
11541 return nullptr;
11542 }
11543 if (!strcmp(name, "vkCmdNextSubpass2"))
11544 {
11545 return nullptr;
11546 }
11547 if (!strcmp(name, "vkCmdEndRenderPass2"))
11548 {
11549 return nullptr;
11550 }
11551 if (!strcmp(name, "vkResetQueryPool"))
11552 {
11553 return nullptr;
11554 }
11555 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
11556 {
11557 return nullptr;
11558 }
11559 if (!strcmp(name, "vkWaitSemaphores"))
11560 {
11561 return nullptr;
11562 }
11563 if (!strcmp(name, "vkSignalSemaphore"))
11564 {
11565 return nullptr;
11566 }
11567 if (!strcmp(name, "vkGetBufferDeviceAddress"))
11568 {
11569 return nullptr;
11570 }
11571 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
11572 {
11573 return nullptr;
11574 }
11575 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
11576 {
11577 return nullptr;
11578 }
11579#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011580#ifdef VK_KHR_surface
11581 if (!strcmp(name, "vkDestroySurfaceKHR"))
11582 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011583 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011584 }
11585 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
11586 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011587 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011588 }
11589 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
11590 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011591 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011592 }
11593 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
11594 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011595 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011596 }
11597 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
11598 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011599 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011600 }
11601#endif
11602#ifdef VK_KHR_swapchain
11603 if (!strcmp(name, "vkCreateSwapchainKHR"))
11604 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011605 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011606 }
11607 if (!strcmp(name, "vkDestroySwapchainKHR"))
11608 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011609 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011610 }
11611 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
11612 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011613 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011614 }
11615 if (!strcmp(name, "vkAcquireNextImageKHR"))
11616 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011617 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011618 }
11619 if (!strcmp(name, "vkQueuePresentKHR"))
11620 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011621 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011622 }
11623 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
11624 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011625 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011626 }
11627 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
11628 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011629 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011630 }
11631 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
11632 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011633 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011634 }
11635 if (!strcmp(name, "vkAcquireNextImage2KHR"))
11636 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011637 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011638 }
11639#endif
11640#ifdef VK_KHR_display
11641 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
11642 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011643 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011644 }
11645 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
11646 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011647 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011648 }
11649 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
11650 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011651 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011652 }
11653 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
11654 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011655 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011656 }
11657 if (!strcmp(name, "vkCreateDisplayModeKHR"))
11658 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011659 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011660 }
11661 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
11662 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011663 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011664 }
11665 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
11666 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011667 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011668 }
11669#endif
11670#ifdef VK_KHR_display_swapchain
11671 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
11672 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011673 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011674 }
11675#endif
11676#ifdef VK_KHR_xlib_surface
11677 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
11678 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011679 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011680 }
11681 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
11682 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011683 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011684 }
11685#endif
11686#ifdef VK_KHR_xcb_surface
11687 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
11688 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011689 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011690 }
11691 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
11692 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011693 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011694 }
11695#endif
11696#ifdef VK_KHR_wayland_surface
11697 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
11698 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011699 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011700 }
11701 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
11702 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011703 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011704 }
11705#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011706#ifdef VK_KHR_android_surface
11707 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
11708 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011709 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011710 }
11711#endif
11712#ifdef VK_KHR_win32_surface
11713 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
11714 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011715 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011716 }
11717 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
11718 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011719 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011720 }
11721#endif
Yilong Li353409a2022-01-04 02:37:56 -080011722#ifdef VK_KHR_video_queue
11723 if (!strcmp(name, "vkGetPhysicalDeviceVideoCapabilitiesKHR"))
11724 {
11725 return nullptr;
11726 }
11727 if (!strcmp(name, "vkGetPhysicalDeviceVideoFormatPropertiesKHR"))
11728 {
11729 return nullptr;
11730 }
11731 if (!strcmp(name, "vkCreateVideoSessionKHR"))
11732 {
11733 return nullptr;
11734 }
11735 if (!strcmp(name, "vkDestroyVideoSessionKHR"))
11736 {
11737 return nullptr;
11738 }
11739 if (!strcmp(name, "vkGetVideoSessionMemoryRequirementsKHR"))
11740 {
11741 return nullptr;
11742 }
11743 if (!strcmp(name, "vkBindVideoSessionMemoryKHR"))
11744 {
11745 return nullptr;
11746 }
11747 if (!strcmp(name, "vkCreateVideoSessionParametersKHR"))
11748 {
11749 return nullptr;
11750 }
11751 if (!strcmp(name, "vkUpdateVideoSessionParametersKHR"))
11752 {
11753 return nullptr;
11754 }
11755 if (!strcmp(name, "vkDestroyVideoSessionParametersKHR"))
11756 {
11757 return nullptr;
11758 }
11759 if (!strcmp(name, "vkCmdBeginVideoCodingKHR"))
11760 {
11761 return nullptr;
11762 }
11763 if (!strcmp(name, "vkCmdEndVideoCodingKHR"))
11764 {
11765 return nullptr;
11766 }
11767 if (!strcmp(name, "vkCmdControlVideoCodingKHR"))
11768 {
11769 return nullptr;
11770 }
11771#endif
11772#ifdef VK_KHR_video_decode_queue
11773 if (!strcmp(name, "vkCmdDecodeVideoKHR"))
11774 {
11775 return nullptr;
11776 }
11777#endif
11778#ifdef VK_KHR_dynamic_rendering
11779 if (!strcmp(name, "vkCmdBeginRenderingKHR"))
11780 {
11781 return nullptr;
11782 }
11783 if (!strcmp(name, "vkCmdEndRenderingKHR"))
11784 {
11785 return nullptr;
11786 }
11787#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011788#ifdef VK_KHR_get_physical_device_properties2
11789 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
11790 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011791 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011792 }
11793 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
11794 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011795 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011796 }
11797 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
11798 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011799 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011800 }
11801 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
11802 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011803 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011804 }
11805 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
11806 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011807 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011808 }
11809 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
11810 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011811 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011812 }
11813 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
11814 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011815 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011816 }
11817#endif
11818#ifdef VK_KHR_device_group
11819 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
11820 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011821 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011822 }
11823 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
11824 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011825 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011826 }
11827 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
11828 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011829 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011830 }
11831#endif
11832#ifdef VK_KHR_maintenance1
11833 if (!strcmp(name, "vkTrimCommandPoolKHR"))
11834 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011835 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011836 }
11837#endif
11838#ifdef VK_KHR_device_group_creation
11839 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
11840 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011841 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011842 }
11843#endif
11844#ifdef VK_KHR_external_memory_capabilities
11845 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
11846 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011847 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011848 }
11849#endif
11850#ifdef VK_KHR_external_memory_win32
11851 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
11852 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011853 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011854 }
11855 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
11856 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011857 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011858 }
11859#endif
11860#ifdef VK_KHR_external_memory_fd
11861 if (!strcmp(name, "vkGetMemoryFdKHR"))
11862 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011863 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011864 }
11865 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
11866 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011867 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011868 }
11869#endif
11870#ifdef VK_KHR_external_semaphore_capabilities
11871 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
11872 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011873 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011874 }
11875#endif
11876#ifdef VK_KHR_external_semaphore_win32
11877 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
11878 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011879 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011880 }
11881 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
11882 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011883 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011884 }
11885#endif
11886#ifdef VK_KHR_external_semaphore_fd
11887 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
11888 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011889 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011890 }
11891 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
11892 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011893 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011894 }
11895#endif
11896#ifdef VK_KHR_push_descriptor
11897 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
11898 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011899 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011900 }
11901 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
11902 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011903 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011904 }
11905#endif
11906#ifdef VK_KHR_descriptor_update_template
11907 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
11908 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011909 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011910 }
11911 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
11912 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011913 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011914 }
11915 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
11916 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011917 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011918 }
11919#endif
11920#ifdef VK_KHR_create_renderpass2
11921 if (!strcmp(name, "vkCreateRenderPass2KHR"))
11922 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011923 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011924 }
11925 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
11926 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011927 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011928 }
11929 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
11930 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011931 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011932 }
11933 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
11934 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011935 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011936 }
11937#endif
11938#ifdef VK_KHR_shared_presentable_image
11939 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
11940 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011941 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011942 }
11943#endif
11944#ifdef VK_KHR_external_fence_capabilities
11945 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
11946 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011947 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011948 }
11949#endif
11950#ifdef VK_KHR_external_fence_win32
11951 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
11952 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011953 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011954 }
11955 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
11956 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011957 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011958 }
11959#endif
11960#ifdef VK_KHR_external_fence_fd
11961 if (!strcmp(name, "vkImportFenceFdKHR"))
11962 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011963 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011964 }
11965 if (!strcmp(name, "vkGetFenceFdKHR"))
11966 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011967 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011968 }
11969#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080011970#ifdef VK_KHR_performance_query
11971 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
11972 {
11973 return nullptr;
11974 }
11975 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
11976 {
11977 return nullptr;
11978 }
11979 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
11980 {
11981 return nullptr;
11982 }
11983 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
11984 {
11985 return nullptr;
11986 }
11987#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011988#ifdef VK_KHR_get_surface_capabilities2
11989 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
11990 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011991 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011992 }
11993 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
11994 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080011995 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080011996 }
11997#endif
11998#ifdef VK_KHR_get_display_properties2
11999 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
12000 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012001 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012002 }
12003 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
12004 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012005 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012006 }
12007 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
12008 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012009 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012010 }
12011 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
12012 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012013 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012014 }
12015#endif
12016#ifdef VK_KHR_get_memory_requirements2
12017 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
12018 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012019 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012020 }
12021 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
12022 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012023 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012024 }
12025 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
12026 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012027 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012028 }
12029#endif
12030#ifdef VK_KHR_sampler_ycbcr_conversion
12031 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
12032 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012033 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012034 }
12035 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
12036 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012037 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012038 }
12039#endif
12040#ifdef VK_KHR_bind_memory2
12041 if (!strcmp(name, "vkBindBufferMemory2KHR"))
12042 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012043 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012044 }
12045 if (!strcmp(name, "vkBindImageMemory2KHR"))
12046 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012047 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012048 }
12049#endif
12050#ifdef VK_KHR_maintenance3
12051 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
12052 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012053 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012054 }
12055#endif
12056#ifdef VK_KHR_draw_indirect_count
12057 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
12058 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012059 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012060 }
12061 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
12062 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012063 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012064 }
12065#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012066#ifdef VK_KHR_timeline_semaphore
12067 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
12068 {
12069 return nullptr;
12070 }
12071 if (!strcmp(name, "vkWaitSemaphoresKHR"))
12072 {
12073 return nullptr;
12074 }
12075 if (!strcmp(name, "vkSignalSemaphoreKHR"))
12076 {
12077 return nullptr;
12078 }
12079#endif
12080#ifdef VK_KHR_fragment_shading_rate
12081 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
12082 {
12083 return nullptr;
12084 }
12085 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
12086 {
12087 return nullptr;
12088 }
12089#endif
Yilong Li353409a2022-01-04 02:37:56 -080012090#ifdef VK_KHR_present_wait
12091 if (!strcmp(name, "vkWaitForPresentKHR"))
12092 {
12093 return nullptr;
12094 }
12095#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012096#ifdef VK_KHR_buffer_device_address
12097 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
12098 {
12099 return nullptr;
12100 }
12101 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
12102 {
12103 return nullptr;
12104 }
12105 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
12106 {
12107 return nullptr;
12108 }
12109#endif
12110#ifdef VK_KHR_deferred_host_operations
12111 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
12112 {
12113 return nullptr;
12114 }
12115 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
12116 {
12117 return nullptr;
12118 }
12119 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
12120 {
12121 return nullptr;
12122 }
12123 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
12124 {
12125 return nullptr;
12126 }
12127 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
12128 {
12129 return nullptr;
12130 }
12131#endif
12132#ifdef VK_KHR_pipeline_executable_properties
12133 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
12134 {
12135 return nullptr;
12136 }
12137 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
12138 {
12139 return nullptr;
12140 }
12141 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
12142 {
12143 return nullptr;
12144 }
12145#endif
Yilong Li353409a2022-01-04 02:37:56 -080012146#ifdef VK_KHR_video_encode_queue
12147 if (!strcmp(name, "vkCmdEncodeVideoKHR"))
12148 {
12149 return nullptr;
12150 }
12151#endif
12152#ifdef VK_KHR_synchronization2
12153 if (!strcmp(name, "vkCmdSetEvent2KHR"))
12154 {
12155 return nullptr;
12156 }
12157 if (!strcmp(name, "vkCmdResetEvent2KHR"))
12158 {
12159 return nullptr;
12160 }
12161 if (!strcmp(name, "vkCmdWaitEvents2KHR"))
12162 {
12163 return nullptr;
12164 }
12165 if (!strcmp(name, "vkCmdPipelineBarrier2KHR"))
12166 {
12167 return nullptr;
12168 }
12169 if (!strcmp(name, "vkCmdWriteTimestamp2KHR"))
12170 {
12171 return nullptr;
12172 }
12173 if (!strcmp(name, "vkQueueSubmit2KHR"))
12174 {
12175 return nullptr;
12176 }
12177 if (!strcmp(name, "vkCmdWriteBufferMarker2AMD"))
12178 {
12179 return nullptr;
12180 }
12181 if (!strcmp(name, "vkGetQueueCheckpointData2NV"))
12182 {
12183 return nullptr;
12184 }
12185#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012186#ifdef VK_KHR_copy_commands2
12187 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
12188 {
12189 return nullptr;
12190 }
12191 if (!strcmp(name, "vkCmdCopyImage2KHR"))
12192 {
12193 return nullptr;
12194 }
12195 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
12196 {
12197 return nullptr;
12198 }
12199 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
12200 {
12201 return nullptr;
12202 }
12203 if (!strcmp(name, "vkCmdBlitImage2KHR"))
12204 {
12205 return nullptr;
12206 }
12207 if (!strcmp(name, "vkCmdResolveImage2KHR"))
12208 {
12209 return nullptr;
12210 }
12211#endif
Yilong Li353409a2022-01-04 02:37:56 -080012212#ifdef VK_KHR_maintenance4
12213 if (!strcmp(name, "vkGetDeviceBufferMemoryRequirementsKHR"))
12214 {
12215 return nullptr;
12216 }
12217 if (!strcmp(name, "vkGetDeviceImageMemoryRequirementsKHR"))
12218 {
12219 return nullptr;
12220 }
12221 if (!strcmp(name, "vkGetDeviceImageSparseMemoryRequirementsKHR"))
12222 {
12223 return nullptr;
12224 }
12225#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -080012226#ifdef VK_ANDROID_native_buffer
12227 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
12228 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012229 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -080012230 }
12231 if (!strcmp(name, "vkAcquireImageANDROID"))
12232 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012233 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -080012234 }
12235 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
12236 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012237 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -080012238 }
12239#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012240#ifdef VK_EXT_debug_report
12241 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
12242 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012243 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012244 }
12245 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
12246 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012247 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012248 }
12249 if (!strcmp(name, "vkDebugReportMessageEXT"))
12250 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012251 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012252 }
12253#endif
12254#ifdef VK_EXT_debug_marker
12255 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
12256 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012257 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012258 }
12259 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
12260 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012261 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012262 }
12263 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
12264 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012265 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012266 }
12267 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
12268 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012269 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012270 }
12271 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
12272 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012273 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012274 }
12275#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012276#ifdef VK_EXT_transform_feedback
12277 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
12278 {
12279 return nullptr;
12280 }
12281 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
12282 {
12283 return nullptr;
12284 }
12285 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
12286 {
12287 return nullptr;
12288 }
12289 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
12290 {
12291 return nullptr;
12292 }
12293 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
12294 {
12295 return nullptr;
12296 }
12297 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
12298 {
12299 return nullptr;
12300 }
12301#endif
Yilong Li353409a2022-01-04 02:37:56 -080012302#ifdef VK_NVX_binary_import
12303 if (!strcmp(name, "vkCreateCuModuleNVX"))
12304 {
12305 return nullptr;
12306 }
12307 if (!strcmp(name, "vkCreateCuFunctionNVX"))
12308 {
12309 return nullptr;
12310 }
12311 if (!strcmp(name, "vkDestroyCuModuleNVX"))
12312 {
12313 return nullptr;
12314 }
12315 if (!strcmp(name, "vkDestroyCuFunctionNVX"))
12316 {
12317 return nullptr;
12318 }
12319 if (!strcmp(name, "vkCmdCuLaunchKernelNVX"))
12320 {
12321 return nullptr;
12322 }
12323#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012324#ifdef VK_NVX_image_view_handle
12325 if (!strcmp(name, "vkGetImageViewHandleNVX"))
12326 {
12327 return nullptr;
12328 }
12329 if (!strcmp(name, "vkGetImageViewAddressNVX"))
12330 {
12331 return nullptr;
12332 }
12333#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012334#ifdef VK_AMD_draw_indirect_count
12335 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
12336 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012337 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012338 }
12339 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
12340 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012341 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012342 }
12343#endif
12344#ifdef VK_AMD_shader_info
12345 if (!strcmp(name, "vkGetShaderInfoAMD"))
12346 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012347 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012348 }
12349#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012350#ifdef VK_GGP_stream_descriptor_surface
12351 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
12352 {
12353 return nullptr;
12354 }
12355#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012356#ifdef VK_NV_external_memory_capabilities
12357 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
12358 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012359 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012360 }
12361#endif
12362#ifdef VK_NV_external_memory_win32
12363 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
12364 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012365 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012366 }
12367#endif
12368#ifdef VK_NN_vi_surface
12369 if (!strcmp(name, "vkCreateViSurfaceNN"))
12370 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012371 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012372 }
12373#endif
12374#ifdef VK_EXT_conditional_rendering
12375 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
12376 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012377 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012378 }
12379 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
12380 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012381 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012382 }
12383#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012384#ifdef VK_NV_clip_space_w_scaling
12385 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
12386 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012387 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012388 }
12389#endif
12390#ifdef VK_EXT_direct_mode_display
12391 if (!strcmp(name, "vkReleaseDisplayEXT"))
12392 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012393 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012394 }
12395#endif
12396#ifdef VK_EXT_acquire_xlib_display
12397 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
12398 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012399 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012400 }
12401 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
12402 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012403 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012404 }
12405#endif
12406#ifdef VK_EXT_display_surface_counter
12407 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
12408 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012409 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012410 }
12411#endif
12412#ifdef VK_EXT_display_control
12413 if (!strcmp(name, "vkDisplayPowerControlEXT"))
12414 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012415 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012416 }
12417 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
12418 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012419 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012420 }
12421 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
12422 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012423 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012424 }
12425 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
12426 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012427 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012428 }
12429#endif
12430#ifdef VK_GOOGLE_display_timing
12431 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
12432 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012433 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012434 }
12435 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
12436 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012437 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012438 }
12439#endif
12440#ifdef VK_EXT_discard_rectangles
12441 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
12442 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012443 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012444 }
12445#endif
12446#ifdef VK_EXT_hdr_metadata
12447 if (!strcmp(name, "vkSetHdrMetadataEXT"))
12448 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012449 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012450 }
12451#endif
12452#ifdef VK_MVK_ios_surface
12453 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
12454 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012455 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012456 }
12457#endif
12458#ifdef VK_MVK_macos_surface
12459 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
12460 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012461 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012462 }
12463#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012464#ifdef VK_MVK_moltenvk
12465 if (!strcmp(name, "vkGetMTLDeviceMVK"))
12466 {
12467 return nullptr;
12468 }
12469 if (!strcmp(name, "vkSetMTLTextureMVK"))
12470 {
12471 return nullptr;
12472 }
12473 if (!strcmp(name, "vkGetMTLTextureMVK"))
12474 {
12475 return nullptr;
12476 }
12477 if (!strcmp(name, "vkGetMTLBufferMVK"))
12478 {
12479 return nullptr;
12480 }
12481 if (!strcmp(name, "vkUseIOSurfaceMVK"))
12482 {
12483 return nullptr;
12484 }
12485 if (!strcmp(name, "vkGetIOSurfaceMVK"))
12486 {
12487 return nullptr;
12488 }
12489#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012490#ifdef VK_EXT_debug_utils
12491 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
12492 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012493 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012494 }
12495 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
12496 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012497 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012498 }
12499 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
12500 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012501 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012502 }
12503 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
12504 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012505 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012506 }
12507 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
12508 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012509 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012510 }
12511 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
12512 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012513 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012514 }
12515 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
12516 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012517 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012518 }
12519 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
12520 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012521 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012522 }
12523 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
12524 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012525 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012526 }
12527 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
12528 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012529 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012530 }
12531 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
12532 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012533 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012534 }
12535#endif
12536#ifdef VK_ANDROID_external_memory_android_hardware_buffer
12537 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
12538 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012539 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012540 }
12541 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
12542 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012543 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012544 }
12545#endif
12546#ifdef VK_EXT_sample_locations
12547 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
12548 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012549 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012550 }
12551 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
12552 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012553 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012554 }
12555#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012556#ifdef VK_EXT_image_drm_format_modifier
12557 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
12558 {
12559 return nullptr;
12560 }
12561#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012562#ifdef VK_EXT_validation_cache
12563 if (!strcmp(name, "vkCreateValidationCacheEXT"))
12564 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012565 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012566 }
12567 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
12568 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012569 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012570 }
12571 if (!strcmp(name, "vkMergeValidationCachesEXT"))
12572 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012573 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012574 }
12575 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
12576 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012577 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012578 }
12579#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012580#ifdef VK_NV_shading_rate_image
12581 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
12582 {
12583 return nullptr;
12584 }
12585 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
12586 {
12587 return nullptr;
12588 }
12589 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
12590 {
12591 return nullptr;
12592 }
12593#endif
12594#ifdef VK_NV_ray_tracing
12595 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
12596 {
12597 return nullptr;
12598 }
12599 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
12600 {
12601 return nullptr;
12602 }
12603 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
12604 {
12605 return nullptr;
12606 }
12607 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
12608 {
12609 return nullptr;
12610 }
12611 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
12612 {
12613 return nullptr;
12614 }
12615 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
12616 {
12617 return nullptr;
12618 }
12619 if (!strcmp(name, "vkCmdTraceRaysNV"))
12620 {
12621 return nullptr;
12622 }
12623 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
12624 {
12625 return nullptr;
12626 }
12627 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
12628 {
12629 return nullptr;
12630 }
12631 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
12632 {
12633 return nullptr;
12634 }
12635 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
12636 {
12637 return nullptr;
12638 }
12639 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
12640 {
12641 return nullptr;
12642 }
12643 if (!strcmp(name, "vkCompileDeferredNV"))
12644 {
12645 return nullptr;
12646 }
12647#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012648#ifdef VK_EXT_external_memory_host
12649 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
12650 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012651 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012652 }
12653#endif
12654#ifdef VK_AMD_buffer_marker
12655 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
12656 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012657 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012658 }
12659#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012660#ifdef VK_EXT_calibrated_timestamps
12661 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
12662 {
12663 return nullptr;
12664 }
12665 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
12666 {
12667 return nullptr;
12668 }
12669#endif
12670#ifdef VK_NV_mesh_shader
12671 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
12672 {
12673 return nullptr;
12674 }
12675 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
12676 {
12677 return nullptr;
12678 }
12679 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
12680 {
12681 return nullptr;
12682 }
12683#endif
12684#ifdef VK_NV_scissor_exclusive
12685 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
12686 {
12687 return nullptr;
12688 }
12689#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012690#ifdef VK_NV_device_diagnostic_checkpoints
12691 if (!strcmp(name, "vkCmdSetCheckpointNV"))
12692 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012693 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012694 }
12695 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
12696 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012697 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -080012698 }
12699#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012700#ifdef VK_INTEL_performance_query
12701 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
12702 {
12703 return nullptr;
12704 }
12705 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
12706 {
12707 return nullptr;
12708 }
12709 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
12710 {
12711 return nullptr;
12712 }
12713 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
12714 {
12715 return nullptr;
12716 }
12717 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
12718 {
12719 return nullptr;
12720 }
12721 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
12722 {
12723 return nullptr;
12724 }
12725 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
12726 {
12727 return nullptr;
12728 }
12729 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
12730 {
12731 return nullptr;
12732 }
12733 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
12734 {
12735 return nullptr;
12736 }
12737#endif
12738#ifdef VK_AMD_display_native_hdr
12739 if (!strcmp(name, "vkSetLocalDimmingAMD"))
12740 {
12741 return nullptr;
12742 }
12743#endif
12744#ifdef VK_FUCHSIA_imagepipe_surface
12745 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
12746 {
12747 return nullptr;
12748 }
12749#endif
12750#ifdef VK_EXT_metal_surface
12751 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080012752 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080012753 return nullptr;
12754 }
12755#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012756#ifdef VK_EXT_buffer_device_address
12757 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
12758 {
12759 return nullptr;
12760 }
12761#endif
12762#ifdef VK_EXT_tooling_info
12763 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
12764 {
12765 return nullptr;
12766 }
12767#endif
12768#ifdef VK_NV_cooperative_matrix
12769 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
12770 {
12771 return nullptr;
12772 }
12773#endif
12774#ifdef VK_NV_coverage_reduction_mode
12775 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
12776 {
12777 return nullptr;
12778 }
12779#endif
12780#ifdef VK_EXT_full_screen_exclusive
12781 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
12782 {
12783 return nullptr;
12784 }
12785 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
12786 {
12787 return nullptr;
12788 }
12789 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
12790 {
12791 return nullptr;
12792 }
12793 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
12794 {
12795 return nullptr;
12796 }
12797#endif
12798#ifdef VK_EXT_headless_surface
12799 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
12800 {
12801 return nullptr;
12802 }
12803#endif
12804#ifdef VK_EXT_line_rasterization
12805 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
12806 {
12807 return nullptr;
12808 }
12809#endif
12810#ifdef VK_EXT_host_query_reset
12811 if (!strcmp(name, "vkResetQueryPoolEXT"))
12812 {
12813 return nullptr;
12814 }
12815#endif
12816#ifdef VK_EXT_extended_dynamic_state
12817 if (!strcmp(name, "vkCmdSetCullModeEXT"))
12818 {
12819 return nullptr;
12820 }
12821 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
12822 {
12823 return nullptr;
12824 }
12825 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
12826 {
12827 return nullptr;
12828 }
12829 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
12830 {
12831 return nullptr;
12832 }
12833 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
12834 {
12835 return nullptr;
12836 }
12837 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
12838 {
12839 return nullptr;
12840 }
12841 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
12842 {
12843 return nullptr;
12844 }
12845 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
12846 {
12847 return nullptr;
12848 }
12849 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
12850 {
12851 return nullptr;
12852 }
12853 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
12854 {
12855 return nullptr;
12856 }
12857 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
12858 {
12859 return nullptr;
12860 }
12861 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
12862 {
12863 return nullptr;
12864 }
12865#endif
12866#ifdef VK_NV_device_generated_commands
12867 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
12868 {
12869 return nullptr;
12870 }
12871 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
12872 {
12873 return nullptr;
12874 }
12875 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
12876 {
12877 return nullptr;
12878 }
12879 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
12880 {
12881 return nullptr;
12882 }
12883 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
12884 {
12885 return nullptr;
12886 }
12887 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
12888 {
12889 return nullptr;
12890 }
12891#endif
Yilong Li353409a2022-01-04 02:37:56 -080012892#ifdef VK_EXT_acquire_drm_display
12893 if (!strcmp(name, "vkAcquireDrmDisplayEXT"))
12894 {
12895 return nullptr;
12896 }
12897 if (!strcmp(name, "vkGetDrmDisplayEXT"))
12898 {
12899 return nullptr;
12900 }
12901#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012902#ifdef VK_EXT_private_data
12903 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
12904 {
12905 return nullptr;
12906 }
12907 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
12908 {
12909 return nullptr;
12910 }
12911 if (!strcmp(name, "vkSetPrivateDataEXT"))
12912 {
12913 return nullptr;
12914 }
12915 if (!strcmp(name, "vkGetPrivateDataEXT"))
12916 {
12917 return nullptr;
12918 }
12919#endif
12920#ifdef VK_NV_fragment_shading_rate_enums
12921 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
12922 {
12923 return nullptr;
12924 }
12925#endif
Yilong Li353409a2022-01-04 02:37:56 -080012926#ifdef VK_NV_acquire_winrt_display
12927 if (!strcmp(name, "vkAcquireWinrtDisplayNV"))
12928 {
12929 return nullptr;
12930 }
12931 if (!strcmp(name, "vkGetWinrtDisplayNV"))
12932 {
12933 return nullptr;
12934 }
12935#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080012936#ifdef VK_EXT_directfb_surface
12937 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
12938 {
12939 return nullptr;
12940 }
12941 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
12942 {
12943 return nullptr;
12944 }
12945#endif
Yilong Li353409a2022-01-04 02:37:56 -080012946#ifdef VK_EXT_vertex_input_dynamic_state
12947 if (!strcmp(name, "vkCmdSetVertexInputEXT"))
12948 {
12949 return nullptr;
12950 }
12951#endif
12952#ifdef VK_FUCHSIA_external_memory
12953 if (!strcmp(name, "vkGetMemoryZirconHandleFUCHSIA"))
12954 {
12955 return nullptr;
12956 }
12957 if (!strcmp(name, "vkGetMemoryZirconHandlePropertiesFUCHSIA"))
12958 {
12959 return nullptr;
12960 }
12961#endif
12962#ifdef VK_FUCHSIA_external_semaphore
12963 if (!strcmp(name, "vkImportSemaphoreZirconHandleFUCHSIA"))
12964 {
12965 return nullptr;
12966 }
12967 if (!strcmp(name, "vkGetSemaphoreZirconHandleFUCHSIA"))
12968 {
12969 return nullptr;
12970 }
12971#endif
12972#ifdef VK_FUCHSIA_buffer_collection
12973 if (!strcmp(name, "vkCreateBufferCollectionFUCHSIA"))
12974 {
12975 return nullptr;
12976 }
12977 if (!strcmp(name, "vkSetBufferCollectionImageConstraintsFUCHSIA"))
12978 {
12979 return nullptr;
12980 }
12981 if (!strcmp(name, "vkSetBufferCollectionBufferConstraintsFUCHSIA"))
12982 {
12983 return nullptr;
12984 }
12985 if (!strcmp(name, "vkDestroyBufferCollectionFUCHSIA"))
12986 {
12987 return nullptr;
12988 }
12989 if (!strcmp(name, "vkGetBufferCollectionPropertiesFUCHSIA"))
12990 {
12991 return nullptr;
12992 }
12993#endif
12994#ifdef VK_HUAWEI_subpass_shading
12995 if (!strcmp(name, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI"))
12996 {
12997 return nullptr;
12998 }
12999 if (!strcmp(name, "vkCmdSubpassShadingHUAWEI"))
13000 {
13001 return nullptr;
13002 }
13003#endif
13004#ifdef VK_HUAWEI_invocation_mask
13005 if (!strcmp(name, "vkCmdBindInvocationMaskHUAWEI"))
13006 {
13007 return nullptr;
13008 }
13009#endif
13010#ifdef VK_NV_external_memory_rdma
13011 if (!strcmp(name, "vkGetMemoryRemoteAddressNV"))
13012 {
13013 return nullptr;
13014 }
13015#endif
13016#ifdef VK_EXT_extended_dynamic_state2
13017 if (!strcmp(name, "vkCmdSetPatchControlPointsEXT"))
13018 {
13019 return nullptr;
13020 }
13021 if (!strcmp(name, "vkCmdSetRasterizerDiscardEnableEXT"))
13022 {
13023 return nullptr;
13024 }
13025 if (!strcmp(name, "vkCmdSetDepthBiasEnableEXT"))
13026 {
13027 return nullptr;
13028 }
13029 if (!strcmp(name, "vkCmdSetLogicOpEXT"))
13030 {
13031 return nullptr;
13032 }
13033 if (!strcmp(name, "vkCmdSetPrimitiveRestartEnableEXT"))
13034 {
13035 return nullptr;
13036 }
13037#endif
13038#ifdef VK_QNX_screen_surface
13039 if (!strcmp(name, "vkCreateScreenSurfaceQNX"))
13040 {
13041 return nullptr;
13042 }
13043 if (!strcmp(name, "vkGetPhysicalDeviceScreenPresentationSupportQNX"))
13044 {
13045 return nullptr;
13046 }
13047#endif
13048#ifdef VK_EXT_color_write_enable
13049 if (!strcmp(name, "vkCmdSetColorWriteEnableEXT"))
13050 {
13051 return nullptr;
13052 }
13053#endif
Yilong Li71c43c52021-02-10 02:50:43 -080013054#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -070013055 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
13056 {
13057 return nullptr;
13058 }
13059 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
13060 {
13061 return nullptr;
13062 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013063 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
13064 {
13065 return nullptr;
13066 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070013067 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
13068 {
13069 return nullptr;
13070 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070013071 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
13072 {
13073 return nullptr;
13074 }
13075 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
13076 {
13077 return nullptr;
13078 }
13079 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
13080 {
13081 return nullptr;
13082 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070013083 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
13084 {
13085 return nullptr;
13086 }
Lingfeng Yang87f11962019-06-27 16:28:53 +000013087 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
13088 {
13089 return nullptr;
13090 }
13091 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
13092 {
13093 return nullptr;
13094 }
Lingfeng Yang4c542412020-02-04 18:18:32 -080013095 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
13096 {
13097 return nullptr;
13098 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070013099 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
13100 {
13101 return nullptr;
13102 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070013103 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
13104 {
13105 return nullptr;
13106 }
13107 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
13108 {
13109 return nullptr;
13110 }
13111 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
13112 {
13113 return nullptr;
13114 }
13115 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
13116 {
13117 return nullptr;
13118 }
Yilong Lia48b0102020-09-15 15:08:28 -070013119 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
13120 {
13121 return nullptr;
13122 }
Yilong Lidcaf0672022-02-22 16:39:57 -080013123 if (!strcmp(name, "vkGetLinearImageLayout2GOOGLE"))
13124 {
13125 return nullptr;
13126 }
Yilong Lia8d45f12021-02-07 02:30:21 -080013127 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
Lingfeng Yang2178dc72021-01-08 14:01:47 -080013128 {
13129 return nullptr;
13130 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080013131 if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
13132 {
13133 return nullptr;
13134 }
13135 if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
13136 {
13137 return nullptr;
13138 }
Lingfeng Yang5678e1e2021-07-15 12:28:05 -070013139 if (!strcmp(name, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE"))
13140 {
13141 return nullptr;
13142 }
Lingfeng Yang2178dc72021-01-08 14:01:47 -080013143#endif
Yilong Li353409a2022-01-04 02:37:56 -080013144#ifdef VK_EXT_multi_draw
13145 if (!strcmp(name, "vkCmdDrawMultiEXT"))
13146 {
13147 return nullptr;
13148 }
13149 if (!strcmp(name, "vkCmdDrawMultiIndexedEXT"))
13150 {
13151 return nullptr;
13152 }
13153#endif
13154#ifdef VK_EXT_pageable_device_local_memory
13155 if (!strcmp(name, "vkSetDeviceMemoryPriorityEXT"))
13156 {
13157 return nullptr;
13158 }
13159#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013160#ifdef VK_KHR_acceleration_structure
13161 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
13162 {
13163 return nullptr;
13164 }
13165 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
13166 {
13167 return nullptr;
13168 }
13169 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
13170 {
13171 return nullptr;
13172 }
13173 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
13174 {
13175 return nullptr;
13176 }
13177 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
13178 {
13179 return nullptr;
13180 }
13181 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
13182 {
13183 return nullptr;
13184 }
13185 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
13186 {
13187 return nullptr;
13188 }
13189 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
13190 {
13191 return nullptr;
13192 }
13193 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
13194 {
13195 return nullptr;
13196 }
13197 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
13198 {
13199 return nullptr;
13200 }
13201 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
13202 {
13203 return nullptr;
13204 }
13205 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
13206 {
13207 return nullptr;
13208 }
13209 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
13210 {
13211 return nullptr;
13212 }
13213 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
13214 {
13215 return nullptr;
13216 }
13217 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
13218 {
13219 return nullptr;
13220 }
13221 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
13222 {
13223 return nullptr;
13224 }
13225#endif
13226#ifdef VK_KHR_ray_tracing_pipeline
13227 if (!strcmp(name, "vkCmdTraceRaysKHR"))
13228 {
13229 return nullptr;
13230 }
13231 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
13232 {
13233 return nullptr;
13234 }
13235 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
13236 {
13237 return nullptr;
13238 }
13239 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
13240 {
13241 return nullptr;
13242 }
13243 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
13244 {
13245 return nullptr;
13246 }
13247 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
Lingfeng Yangded34672021-01-22 23:17:47 -080013248 {
13249 return nullptr;
13250 }
13251#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013252 return nullptr;
13253}
13254void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
13255 auto resources = ResourceTracker::get();
13256 bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
13257#ifdef VK_VERSION_1_0
13258 if (!strcmp(name, "vkCreateInstance"))
13259 {
13260 return (void*)entry_vkCreateInstance;
13261 }
13262 if (!strcmp(name, "vkDestroyInstance"))
13263 {
13264 return (void*)entry_vkDestroyInstance;
13265 }
13266 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
13267 {
13268 return (void*)entry_vkEnumeratePhysicalDevices;
13269 }
13270 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
13271 {
13272 return (void*)entry_vkGetPhysicalDeviceFeatures;
13273 }
13274 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
13275 {
13276 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
13277 }
13278 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
13279 {
13280 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
13281 }
13282 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
13283 {
13284 return (void*)entry_vkGetPhysicalDeviceProperties;
13285 }
13286 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
13287 {
13288 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
13289 }
13290 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
13291 {
13292 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
13293 }
13294 if (!strcmp(name, "vkGetInstanceProcAddr"))
13295 {
13296 return (void*)entry_vkGetInstanceProcAddr;
13297 }
13298 if (!strcmp(name, "vkGetDeviceProcAddr"))
13299 {
13300 return (void*)entry_vkGetDeviceProcAddr;
13301 }
13302 if (!strcmp(name, "vkCreateDevice"))
13303 {
13304 return (void*)entry_vkCreateDevice;
13305 }
13306 if (!strcmp(name, "vkDestroyDevice"))
13307 {
13308 return (void*)entry_vkDestroyDevice;
13309 }
13310 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
13311 {
13312 return (void*)entry_vkEnumerateInstanceExtensionProperties;
13313 }
13314 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
13315 {
13316 return (void*)entry_vkEnumerateDeviceExtensionProperties;
13317 }
13318 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
13319 {
13320 return (void*)entry_vkEnumerateInstanceLayerProperties;
13321 }
13322 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
13323 {
13324 return (void*)entry_vkEnumerateDeviceLayerProperties;
13325 }
13326 if (!strcmp(name, "vkGetDeviceQueue"))
13327 {
13328 return (void*)entry_vkGetDeviceQueue;
13329 }
13330 if (!strcmp(name, "vkQueueSubmit"))
13331 {
13332 return (void*)entry_vkQueueSubmit;
13333 }
13334 if (!strcmp(name, "vkQueueWaitIdle"))
13335 {
13336 return (void*)entry_vkQueueWaitIdle;
13337 }
13338 if (!strcmp(name, "vkDeviceWaitIdle"))
13339 {
13340 return (void*)entry_vkDeviceWaitIdle;
13341 }
13342 if (!strcmp(name, "vkAllocateMemory"))
13343 {
13344 return (void*)entry_vkAllocateMemory;
13345 }
13346 if (!strcmp(name, "vkFreeMemory"))
13347 {
13348 return (void*)entry_vkFreeMemory;
13349 }
13350 if (!strcmp(name, "vkMapMemory"))
13351 {
13352 return (void*)entry_vkMapMemory;
13353 }
13354 if (!strcmp(name, "vkUnmapMemory"))
13355 {
13356 return (void*)entry_vkUnmapMemory;
13357 }
13358 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
13359 {
13360 return (void*)entry_vkFlushMappedMemoryRanges;
13361 }
13362 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
13363 {
13364 return (void*)entry_vkInvalidateMappedMemoryRanges;
13365 }
13366 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
13367 {
13368 return (void*)entry_vkGetDeviceMemoryCommitment;
13369 }
13370 if (!strcmp(name, "vkBindBufferMemory"))
13371 {
13372 return (void*)entry_vkBindBufferMemory;
13373 }
13374 if (!strcmp(name, "vkBindImageMemory"))
13375 {
13376 return (void*)entry_vkBindImageMemory;
13377 }
13378 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
13379 {
13380 return (void*)entry_vkGetBufferMemoryRequirements;
13381 }
13382 if (!strcmp(name, "vkGetImageMemoryRequirements"))
13383 {
13384 return (void*)entry_vkGetImageMemoryRequirements;
13385 }
13386 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
13387 {
13388 return (void*)entry_vkGetImageSparseMemoryRequirements;
13389 }
13390 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
13391 {
13392 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
13393 }
13394 if (!strcmp(name, "vkQueueBindSparse"))
13395 {
13396 return (void*)entry_vkQueueBindSparse;
13397 }
13398 if (!strcmp(name, "vkCreateFence"))
13399 {
13400 return (void*)entry_vkCreateFence;
13401 }
13402 if (!strcmp(name, "vkDestroyFence"))
13403 {
13404 return (void*)entry_vkDestroyFence;
13405 }
13406 if (!strcmp(name, "vkResetFences"))
13407 {
13408 return (void*)entry_vkResetFences;
13409 }
13410 if (!strcmp(name, "vkGetFenceStatus"))
13411 {
13412 return (void*)entry_vkGetFenceStatus;
13413 }
13414 if (!strcmp(name, "vkWaitForFences"))
13415 {
13416 return (void*)entry_vkWaitForFences;
13417 }
13418 if (!strcmp(name, "vkCreateSemaphore"))
13419 {
13420 return (void*)entry_vkCreateSemaphore;
13421 }
13422 if (!strcmp(name, "vkDestroySemaphore"))
13423 {
13424 return (void*)entry_vkDestroySemaphore;
13425 }
13426 if (!strcmp(name, "vkCreateEvent"))
13427 {
13428 return (void*)entry_vkCreateEvent;
13429 }
13430 if (!strcmp(name, "vkDestroyEvent"))
13431 {
13432 return (void*)entry_vkDestroyEvent;
13433 }
13434 if (!strcmp(name, "vkGetEventStatus"))
13435 {
13436 return (void*)entry_vkGetEventStatus;
13437 }
13438 if (!strcmp(name, "vkSetEvent"))
13439 {
13440 return (void*)entry_vkSetEvent;
13441 }
13442 if (!strcmp(name, "vkResetEvent"))
13443 {
13444 return (void*)entry_vkResetEvent;
13445 }
13446 if (!strcmp(name, "vkCreateQueryPool"))
13447 {
13448 return (void*)entry_vkCreateQueryPool;
13449 }
13450 if (!strcmp(name, "vkDestroyQueryPool"))
13451 {
13452 return (void*)entry_vkDestroyQueryPool;
13453 }
13454 if (!strcmp(name, "vkGetQueryPoolResults"))
13455 {
13456 return (void*)entry_vkGetQueryPoolResults;
13457 }
13458 if (!strcmp(name, "vkCreateBuffer"))
13459 {
13460 return (void*)entry_vkCreateBuffer;
13461 }
13462 if (!strcmp(name, "vkDestroyBuffer"))
13463 {
13464 return (void*)entry_vkDestroyBuffer;
13465 }
13466 if (!strcmp(name, "vkCreateBufferView"))
13467 {
13468 return (void*)entry_vkCreateBufferView;
13469 }
13470 if (!strcmp(name, "vkDestroyBufferView"))
13471 {
13472 return (void*)entry_vkDestroyBufferView;
13473 }
13474 if (!strcmp(name, "vkCreateImage"))
13475 {
13476 return (void*)entry_vkCreateImage;
13477 }
13478 if (!strcmp(name, "vkDestroyImage"))
13479 {
13480 return (void*)entry_vkDestroyImage;
13481 }
13482 if (!strcmp(name, "vkGetImageSubresourceLayout"))
13483 {
13484 return (void*)entry_vkGetImageSubresourceLayout;
13485 }
13486 if (!strcmp(name, "vkCreateImageView"))
13487 {
13488 return (void*)entry_vkCreateImageView;
13489 }
13490 if (!strcmp(name, "vkDestroyImageView"))
13491 {
13492 return (void*)entry_vkDestroyImageView;
13493 }
13494 if (!strcmp(name, "vkCreateShaderModule"))
13495 {
13496 return (void*)entry_vkCreateShaderModule;
13497 }
13498 if (!strcmp(name, "vkDestroyShaderModule"))
13499 {
13500 return (void*)entry_vkDestroyShaderModule;
13501 }
13502 if (!strcmp(name, "vkCreatePipelineCache"))
13503 {
13504 return (void*)entry_vkCreatePipelineCache;
13505 }
13506 if (!strcmp(name, "vkDestroyPipelineCache"))
13507 {
13508 return (void*)entry_vkDestroyPipelineCache;
13509 }
13510 if (!strcmp(name, "vkGetPipelineCacheData"))
13511 {
13512 return (void*)entry_vkGetPipelineCacheData;
13513 }
13514 if (!strcmp(name, "vkMergePipelineCaches"))
13515 {
13516 return (void*)entry_vkMergePipelineCaches;
13517 }
13518 if (!strcmp(name, "vkCreateGraphicsPipelines"))
13519 {
13520 return (void*)entry_vkCreateGraphicsPipelines;
13521 }
13522 if (!strcmp(name, "vkCreateComputePipelines"))
13523 {
13524 return (void*)entry_vkCreateComputePipelines;
13525 }
13526 if (!strcmp(name, "vkDestroyPipeline"))
13527 {
13528 return (void*)entry_vkDestroyPipeline;
13529 }
13530 if (!strcmp(name, "vkCreatePipelineLayout"))
13531 {
13532 return (void*)entry_vkCreatePipelineLayout;
13533 }
13534 if (!strcmp(name, "vkDestroyPipelineLayout"))
13535 {
13536 return (void*)entry_vkDestroyPipelineLayout;
13537 }
13538 if (!strcmp(name, "vkCreateSampler"))
13539 {
13540 return (void*)entry_vkCreateSampler;
13541 }
13542 if (!strcmp(name, "vkDestroySampler"))
13543 {
13544 return (void*)entry_vkDestroySampler;
13545 }
13546 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
13547 {
13548 return (void*)entry_vkCreateDescriptorSetLayout;
13549 }
13550 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
13551 {
13552 return (void*)entry_vkDestroyDescriptorSetLayout;
13553 }
13554 if (!strcmp(name, "vkCreateDescriptorPool"))
13555 {
13556 return (void*)entry_vkCreateDescriptorPool;
13557 }
13558 if (!strcmp(name, "vkDestroyDescriptorPool"))
13559 {
13560 return (void*)entry_vkDestroyDescriptorPool;
13561 }
13562 if (!strcmp(name, "vkResetDescriptorPool"))
13563 {
13564 return (void*)entry_vkResetDescriptorPool;
13565 }
13566 if (!strcmp(name, "vkAllocateDescriptorSets"))
13567 {
13568 return (void*)entry_vkAllocateDescriptorSets;
13569 }
13570 if (!strcmp(name, "vkFreeDescriptorSets"))
13571 {
13572 return (void*)entry_vkFreeDescriptorSets;
13573 }
13574 if (!strcmp(name, "vkUpdateDescriptorSets"))
13575 {
13576 return (void*)entry_vkUpdateDescriptorSets;
13577 }
13578 if (!strcmp(name, "vkCreateFramebuffer"))
13579 {
13580 return (void*)entry_vkCreateFramebuffer;
13581 }
13582 if (!strcmp(name, "vkDestroyFramebuffer"))
13583 {
13584 return (void*)entry_vkDestroyFramebuffer;
13585 }
13586 if (!strcmp(name, "vkCreateRenderPass"))
13587 {
13588 return (void*)entry_vkCreateRenderPass;
13589 }
13590 if (!strcmp(name, "vkDestroyRenderPass"))
13591 {
13592 return (void*)entry_vkDestroyRenderPass;
13593 }
13594 if (!strcmp(name, "vkGetRenderAreaGranularity"))
13595 {
13596 return (void*)entry_vkGetRenderAreaGranularity;
13597 }
13598 if (!strcmp(name, "vkCreateCommandPool"))
13599 {
13600 return (void*)entry_vkCreateCommandPool;
13601 }
13602 if (!strcmp(name, "vkDestroyCommandPool"))
13603 {
13604 return (void*)entry_vkDestroyCommandPool;
13605 }
13606 if (!strcmp(name, "vkResetCommandPool"))
13607 {
13608 return (void*)entry_vkResetCommandPool;
13609 }
13610 if (!strcmp(name, "vkAllocateCommandBuffers"))
13611 {
13612 return (void*)entry_vkAllocateCommandBuffers;
13613 }
13614 if (!strcmp(name, "vkFreeCommandBuffers"))
13615 {
13616 return (void*)entry_vkFreeCommandBuffers;
13617 }
13618 if (!strcmp(name, "vkBeginCommandBuffer"))
13619 {
13620 return (void*)entry_vkBeginCommandBuffer;
13621 }
13622 if (!strcmp(name, "vkEndCommandBuffer"))
13623 {
13624 return (void*)entry_vkEndCommandBuffer;
13625 }
13626 if (!strcmp(name, "vkResetCommandBuffer"))
13627 {
13628 return (void*)entry_vkResetCommandBuffer;
13629 }
13630 if (!strcmp(name, "vkCmdBindPipeline"))
13631 {
13632 return (void*)entry_vkCmdBindPipeline;
13633 }
13634 if (!strcmp(name, "vkCmdSetViewport"))
13635 {
13636 return (void*)entry_vkCmdSetViewport;
13637 }
13638 if (!strcmp(name, "vkCmdSetScissor"))
13639 {
13640 return (void*)entry_vkCmdSetScissor;
13641 }
13642 if (!strcmp(name, "vkCmdSetLineWidth"))
13643 {
13644 return (void*)entry_vkCmdSetLineWidth;
13645 }
13646 if (!strcmp(name, "vkCmdSetDepthBias"))
13647 {
13648 return (void*)entry_vkCmdSetDepthBias;
13649 }
13650 if (!strcmp(name, "vkCmdSetBlendConstants"))
13651 {
13652 return (void*)entry_vkCmdSetBlendConstants;
13653 }
13654 if (!strcmp(name, "vkCmdSetDepthBounds"))
13655 {
13656 return (void*)entry_vkCmdSetDepthBounds;
13657 }
13658 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
13659 {
13660 return (void*)entry_vkCmdSetStencilCompareMask;
13661 }
13662 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
13663 {
13664 return (void*)entry_vkCmdSetStencilWriteMask;
13665 }
13666 if (!strcmp(name, "vkCmdSetStencilReference"))
13667 {
13668 return (void*)entry_vkCmdSetStencilReference;
13669 }
13670 if (!strcmp(name, "vkCmdBindDescriptorSets"))
13671 {
13672 return (void*)entry_vkCmdBindDescriptorSets;
13673 }
13674 if (!strcmp(name, "vkCmdBindIndexBuffer"))
13675 {
13676 return (void*)entry_vkCmdBindIndexBuffer;
13677 }
13678 if (!strcmp(name, "vkCmdBindVertexBuffers"))
13679 {
13680 return (void*)entry_vkCmdBindVertexBuffers;
13681 }
13682 if (!strcmp(name, "vkCmdDraw"))
13683 {
13684 return (void*)entry_vkCmdDraw;
13685 }
13686 if (!strcmp(name, "vkCmdDrawIndexed"))
13687 {
13688 return (void*)entry_vkCmdDrawIndexed;
13689 }
13690 if (!strcmp(name, "vkCmdDrawIndirect"))
13691 {
13692 return (void*)entry_vkCmdDrawIndirect;
13693 }
13694 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
13695 {
13696 return (void*)entry_vkCmdDrawIndexedIndirect;
13697 }
13698 if (!strcmp(name, "vkCmdDispatch"))
13699 {
13700 return (void*)entry_vkCmdDispatch;
13701 }
13702 if (!strcmp(name, "vkCmdDispatchIndirect"))
13703 {
13704 return (void*)entry_vkCmdDispatchIndirect;
13705 }
13706 if (!strcmp(name, "vkCmdCopyBuffer"))
13707 {
13708 return (void*)entry_vkCmdCopyBuffer;
13709 }
13710 if (!strcmp(name, "vkCmdCopyImage"))
13711 {
13712 return (void*)entry_vkCmdCopyImage;
13713 }
13714 if (!strcmp(name, "vkCmdBlitImage"))
13715 {
13716 return (void*)entry_vkCmdBlitImage;
13717 }
13718 if (!strcmp(name, "vkCmdCopyBufferToImage"))
13719 {
13720 return (void*)entry_vkCmdCopyBufferToImage;
13721 }
13722 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
13723 {
13724 return (void*)entry_vkCmdCopyImageToBuffer;
13725 }
13726 if (!strcmp(name, "vkCmdUpdateBuffer"))
13727 {
13728 return (void*)entry_vkCmdUpdateBuffer;
13729 }
13730 if (!strcmp(name, "vkCmdFillBuffer"))
13731 {
13732 return (void*)entry_vkCmdFillBuffer;
13733 }
13734 if (!strcmp(name, "vkCmdClearColorImage"))
13735 {
13736 return (void*)entry_vkCmdClearColorImage;
13737 }
13738 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
13739 {
13740 return (void*)entry_vkCmdClearDepthStencilImage;
13741 }
13742 if (!strcmp(name, "vkCmdClearAttachments"))
13743 {
13744 return (void*)entry_vkCmdClearAttachments;
13745 }
13746 if (!strcmp(name, "vkCmdResolveImage"))
13747 {
13748 return (void*)entry_vkCmdResolveImage;
13749 }
13750 if (!strcmp(name, "vkCmdSetEvent"))
13751 {
13752 return (void*)entry_vkCmdSetEvent;
13753 }
13754 if (!strcmp(name, "vkCmdResetEvent"))
13755 {
13756 return (void*)entry_vkCmdResetEvent;
13757 }
13758 if (!strcmp(name, "vkCmdWaitEvents"))
13759 {
13760 return (void*)entry_vkCmdWaitEvents;
13761 }
13762 if (!strcmp(name, "vkCmdPipelineBarrier"))
13763 {
13764 return (void*)entry_vkCmdPipelineBarrier;
13765 }
13766 if (!strcmp(name, "vkCmdBeginQuery"))
13767 {
13768 return (void*)entry_vkCmdBeginQuery;
13769 }
13770 if (!strcmp(name, "vkCmdEndQuery"))
13771 {
13772 return (void*)entry_vkCmdEndQuery;
13773 }
13774 if (!strcmp(name, "vkCmdResetQueryPool"))
13775 {
13776 return (void*)entry_vkCmdResetQueryPool;
13777 }
13778 if (!strcmp(name, "vkCmdWriteTimestamp"))
13779 {
13780 return (void*)entry_vkCmdWriteTimestamp;
13781 }
13782 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
13783 {
13784 return (void*)entry_vkCmdCopyQueryPoolResults;
13785 }
13786 if (!strcmp(name, "vkCmdPushConstants"))
13787 {
13788 return (void*)entry_vkCmdPushConstants;
13789 }
13790 if (!strcmp(name, "vkCmdBeginRenderPass"))
13791 {
13792 return (void*)entry_vkCmdBeginRenderPass;
13793 }
13794 if (!strcmp(name, "vkCmdNextSubpass"))
13795 {
13796 return (void*)entry_vkCmdNextSubpass;
13797 }
13798 if (!strcmp(name, "vkCmdEndRenderPass"))
13799 {
13800 return (void*)entry_vkCmdEndRenderPass;
13801 }
13802 if (!strcmp(name, "vkCmdExecuteCommands"))
13803 {
13804 return (void*)entry_vkCmdExecuteCommands;
13805 }
13806#endif
13807#ifdef VK_VERSION_1_1
13808 if (!strcmp(name, "vkEnumerateInstanceVersion"))
13809 {
13810 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
13811 }
13812 if (!strcmp(name, "vkBindBufferMemory2"))
13813 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013814 return (void*)dynCheck_entry_vkBindBufferMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013815 }
13816 if (!strcmp(name, "vkBindImageMemory2"))
13817 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013818 return (void*)dynCheck_entry_vkBindImageMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013819 }
13820 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
13821 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013822 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013823 }
13824 if (!strcmp(name, "vkCmdSetDeviceMask"))
13825 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070013826 return (void*)dynCheck_entry_vkCmdSetDeviceMask;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013827 }
13828 if (!strcmp(name, "vkCmdDispatchBase"))
13829 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070013830 return (void*)dynCheck_entry_vkCmdDispatchBase;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013831 }
13832 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
13833 {
13834 return nullptr;
13835 }
13836 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
13837 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013838 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013839 }
13840 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
13841 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013842 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013843 }
13844 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
13845 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013846 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013847 }
13848 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
13849 {
13850 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
13851 }
13852 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
13853 {
13854 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
13855 }
13856 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
13857 {
13858 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
13859 }
13860 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
13861 {
13862 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
13863 }
13864 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
13865 {
13866 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
13867 }
13868 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
13869 {
13870 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
13871 }
13872 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
13873 {
13874 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
13875 }
13876 if (!strcmp(name, "vkTrimCommandPool"))
13877 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013878 return (void*)dynCheck_entry_vkTrimCommandPool;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013879 }
13880 if (!strcmp(name, "vkGetDeviceQueue2"))
13881 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013882 return (void*)dynCheck_entry_vkGetDeviceQueue2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013883 }
13884 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
13885 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013886 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013887 }
13888 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
13889 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013890 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013891 }
13892 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
13893 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013894 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013895 }
13896 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
13897 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013898 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013899 }
13900 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
13901 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013902 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013903 }
13904 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
13905 {
13906 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
13907 }
13908 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
13909 {
13910 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
13911 }
13912 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
13913 {
13914 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
13915 }
13916 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
13917 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070013918 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013919 }
13920#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080013921#ifdef VK_VERSION_1_2
13922 if (!strcmp(name, "vkCmdDrawIndirectCount"))
13923 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070013924 return (void*)dynCheck_entry_vkCmdDrawIndirectCount;
Yilong Lia8d45f12021-02-07 02:30:21 -080013925 }
13926 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
13927 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070013928 return (void*)dynCheck_entry_vkCmdDrawIndexedIndirectCount;
Yilong Lia8d45f12021-02-07 02:30:21 -080013929 }
13930 if (!strcmp(name, "vkCreateRenderPass2"))
13931 {
13932 return (void*)dynCheck_entry_vkCreateRenderPass2;
13933 }
13934 if (!strcmp(name, "vkCmdBeginRenderPass2"))
13935 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070013936 return (void*)dynCheck_entry_vkCmdBeginRenderPass2;
Yilong Lia8d45f12021-02-07 02:30:21 -080013937 }
13938 if (!strcmp(name, "vkCmdNextSubpass2"))
13939 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070013940 return (void*)dynCheck_entry_vkCmdNextSubpass2;
Yilong Lia8d45f12021-02-07 02:30:21 -080013941 }
13942 if (!strcmp(name, "vkCmdEndRenderPass2"))
13943 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070013944 return (void*)dynCheck_entry_vkCmdEndRenderPass2;
Yilong Lia8d45f12021-02-07 02:30:21 -080013945 }
13946 if (!strcmp(name, "vkResetQueryPool"))
13947 {
13948 return (void*)dynCheck_entry_vkResetQueryPool;
13949 }
13950 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
13951 {
13952 return (void*)dynCheck_entry_vkGetSemaphoreCounterValue;
13953 }
13954 if (!strcmp(name, "vkWaitSemaphores"))
13955 {
13956 return (void*)dynCheck_entry_vkWaitSemaphores;
13957 }
13958 if (!strcmp(name, "vkSignalSemaphore"))
13959 {
13960 return (void*)dynCheck_entry_vkSignalSemaphore;
13961 }
13962 if (!strcmp(name, "vkGetBufferDeviceAddress"))
13963 {
13964 return (void*)dynCheck_entry_vkGetBufferDeviceAddress;
13965 }
13966 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
13967 {
13968 return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddress;
13969 }
13970 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
13971 {
13972 return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress;
13973 }
13974#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080013975#ifdef VK_KHR_surface
13976 if (!strcmp(name, "vkDestroySurfaceKHR"))
13977 {
13978 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
13979 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
13980 }
13981 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
13982 {
13983 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
13984 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
13985 }
13986 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
13987 {
13988 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
13989 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
13990 }
13991 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
13992 {
13993 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
13994 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
13995 }
13996 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
13997 {
13998 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
13999 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
14000 }
14001#endif
14002#ifdef VK_KHR_swapchain
14003 if (!strcmp(name, "vkCreateSwapchainKHR"))
14004 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014005 return (void*)dynCheck_entry_vkCreateSwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014006 }
14007 if (!strcmp(name, "vkDestroySwapchainKHR"))
14008 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014009 return (void*)dynCheck_entry_vkDestroySwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014010 }
14011 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
14012 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014013 return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014014 }
14015 if (!strcmp(name, "vkAcquireNextImageKHR"))
14016 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014017 return (void*)dynCheck_entry_vkAcquireNextImageKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014018 }
14019 if (!strcmp(name, "vkQueuePresentKHR"))
14020 {
14021 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
14022 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
14023 }
14024 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
14025 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014026 return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014027 }
14028 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
14029 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014030 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014031 }
14032 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
14033 {
14034 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
14035 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
14036 }
14037 if (!strcmp(name, "vkAcquireNextImage2KHR"))
14038 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014039 return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014040 }
14041#endif
14042#ifdef VK_KHR_display
14043 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
14044 {
14045 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
14046 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
14047 }
14048 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
14049 {
14050 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
14051 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
14052 }
14053 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
14054 {
14055 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
14056 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
14057 }
14058 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
14059 {
14060 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
14061 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
14062 }
14063 if (!strcmp(name, "vkCreateDisplayModeKHR"))
14064 {
14065 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
14066 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
14067 }
14068 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
14069 {
14070 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
14071 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
14072 }
14073 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
14074 {
14075 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
14076 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
14077 }
14078#endif
14079#ifdef VK_KHR_display_swapchain
14080 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
14081 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014082 return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014083 }
14084#endif
14085#ifdef VK_KHR_xlib_surface
14086 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
14087 {
14088 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
14089 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
14090 }
14091 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
14092 {
14093 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
14094 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
14095 }
14096#endif
14097#ifdef VK_KHR_xcb_surface
14098 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
14099 {
14100 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
14101 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
14102 }
14103 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
14104 {
14105 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
14106 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
14107 }
14108#endif
14109#ifdef VK_KHR_wayland_surface
14110 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
14111 {
14112 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
14113 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
14114 }
14115 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
14116 {
14117 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
14118 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
14119 }
14120#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014121#ifdef VK_KHR_android_surface
14122 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
14123 {
14124 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
14125 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
14126 }
14127#endif
14128#ifdef VK_KHR_win32_surface
14129 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
14130 {
14131 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
14132 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
14133 }
14134 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
14135 {
14136 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
14137 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
14138 }
14139#endif
Yilong Li353409a2022-01-04 02:37:56 -080014140#ifdef VK_KHR_video_queue
14141 if (!strcmp(name, "vkGetPhysicalDeviceVideoCapabilitiesKHR"))
14142 {
14143 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_video_queue");
14144 return hasExt ? (void*)entry_vkGetPhysicalDeviceVideoCapabilitiesKHR : nullptr;
14145 }
14146 if (!strcmp(name, "vkGetPhysicalDeviceVideoFormatPropertiesKHR"))
14147 {
14148 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_video_queue");
14149 return hasExt ? (void*)entry_vkGetPhysicalDeviceVideoFormatPropertiesKHR : nullptr;
14150 }
14151 if (!strcmp(name, "vkCreateVideoSessionKHR"))
14152 {
14153 return (void*)dynCheck_entry_vkCreateVideoSessionKHR;
14154 }
14155 if (!strcmp(name, "vkDestroyVideoSessionKHR"))
14156 {
14157 return (void*)dynCheck_entry_vkDestroyVideoSessionKHR;
14158 }
14159 if (!strcmp(name, "vkGetVideoSessionMemoryRequirementsKHR"))
14160 {
14161 return (void*)dynCheck_entry_vkGetVideoSessionMemoryRequirementsKHR;
14162 }
14163 if (!strcmp(name, "vkBindVideoSessionMemoryKHR"))
14164 {
14165 return (void*)dynCheck_entry_vkBindVideoSessionMemoryKHR;
14166 }
14167 if (!strcmp(name, "vkCreateVideoSessionParametersKHR"))
14168 {
14169 return (void*)dynCheck_entry_vkCreateVideoSessionParametersKHR;
14170 }
14171 if (!strcmp(name, "vkUpdateVideoSessionParametersKHR"))
14172 {
14173 return (void*)dynCheck_entry_vkUpdateVideoSessionParametersKHR;
14174 }
14175 if (!strcmp(name, "vkDestroyVideoSessionParametersKHR"))
14176 {
14177 return (void*)dynCheck_entry_vkDestroyVideoSessionParametersKHR;
14178 }
14179 if (!strcmp(name, "vkCmdBeginVideoCodingKHR"))
14180 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014181 return (void*)dynCheck_entry_vkCmdBeginVideoCodingKHR;
Yilong Li353409a2022-01-04 02:37:56 -080014182 }
14183 if (!strcmp(name, "vkCmdEndVideoCodingKHR"))
14184 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014185 return (void*)dynCheck_entry_vkCmdEndVideoCodingKHR;
Yilong Li353409a2022-01-04 02:37:56 -080014186 }
14187 if (!strcmp(name, "vkCmdControlVideoCodingKHR"))
14188 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014189 return (void*)dynCheck_entry_vkCmdControlVideoCodingKHR;
Yilong Li353409a2022-01-04 02:37:56 -080014190 }
14191#endif
14192#ifdef VK_KHR_video_decode_queue
14193 if (!strcmp(name, "vkCmdDecodeVideoKHR"))
14194 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014195 return (void*)dynCheck_entry_vkCmdDecodeVideoKHR;
Yilong Li353409a2022-01-04 02:37:56 -080014196 }
14197#endif
14198#ifdef VK_KHR_dynamic_rendering
14199 if (!strcmp(name, "vkCmdBeginRenderingKHR"))
14200 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014201 return (void*)dynCheck_entry_vkCmdBeginRenderingKHR;
Yilong Li353409a2022-01-04 02:37:56 -080014202 }
14203 if (!strcmp(name, "vkCmdEndRenderingKHR"))
14204 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014205 return (void*)dynCheck_entry_vkCmdEndRenderingKHR;
Yilong Li353409a2022-01-04 02:37:56 -080014206 }
14207#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014208#ifdef VK_KHR_get_physical_device_properties2
14209 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
14210 {
14211 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
14212 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
14213 }
14214 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
14215 {
14216 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
14217 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
14218 }
14219 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
14220 {
14221 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
14222 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
14223 }
14224 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
14225 {
14226 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
14227 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
14228 }
14229 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
14230 {
14231 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
14232 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
14233 }
14234 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
14235 {
14236 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
14237 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
14238 }
14239 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
14240 {
14241 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
14242 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
14243 }
14244#endif
14245#ifdef VK_KHR_device_group
14246 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
14247 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014248 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014249 }
14250 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
14251 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014252 return (void*)dynCheck_entry_vkCmdSetDeviceMaskKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014253 }
14254 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
14255 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014256 return (void*)dynCheck_entry_vkCmdDispatchBaseKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014257 }
14258#endif
14259#ifdef VK_KHR_maintenance1
14260 if (!strcmp(name, "vkTrimCommandPoolKHR"))
14261 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014262 return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014263 }
14264#endif
14265#ifdef VK_KHR_device_group_creation
14266 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
14267 {
14268 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
14269 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
14270 }
14271#endif
14272#ifdef VK_KHR_external_memory_capabilities
14273 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
14274 {
14275 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
14276 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
14277 }
14278#endif
14279#ifdef VK_KHR_external_memory_win32
14280 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
14281 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014282 return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014283 }
14284 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
14285 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014286 return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014287 }
14288#endif
14289#ifdef VK_KHR_external_memory_fd
14290 if (!strcmp(name, "vkGetMemoryFdKHR"))
14291 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014292 return (void*)dynCheck_entry_vkGetMemoryFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014293 }
14294 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
14295 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014296 return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014297 }
14298#endif
14299#ifdef VK_KHR_external_semaphore_capabilities
14300 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
14301 {
14302 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
14303 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
14304 }
14305#endif
14306#ifdef VK_KHR_external_semaphore_win32
14307 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
14308 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014309 return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014310 }
14311 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
14312 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014313 return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014314 }
14315#endif
14316#ifdef VK_KHR_external_semaphore_fd
14317 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
14318 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014319 return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014320 }
14321 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
14322 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014323 return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014324 }
14325#endif
14326#ifdef VK_KHR_push_descriptor
14327 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
14328 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014329 return (void*)dynCheck_entry_vkCmdPushDescriptorSetKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014330 }
14331 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
14332 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014333 return (void*)dynCheck_entry_vkCmdPushDescriptorSetWithTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014334 }
14335#endif
14336#ifdef VK_KHR_descriptor_update_template
14337 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
14338 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014339 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014340 }
14341 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
14342 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014343 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014344 }
14345 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
14346 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014347 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014348 }
14349#endif
14350#ifdef VK_KHR_create_renderpass2
14351 if (!strcmp(name, "vkCreateRenderPass2KHR"))
14352 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014353 return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014354 }
14355 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
14356 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014357 return (void*)dynCheck_entry_vkCmdBeginRenderPass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014358 }
14359 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
14360 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014361 return (void*)dynCheck_entry_vkCmdNextSubpass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014362 }
14363 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
14364 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014365 return (void*)dynCheck_entry_vkCmdEndRenderPass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014366 }
14367#endif
14368#ifdef VK_KHR_shared_presentable_image
14369 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
14370 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014371 return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014372 }
14373#endif
14374#ifdef VK_KHR_external_fence_capabilities
14375 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
14376 {
14377 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
14378 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
14379 }
14380#endif
14381#ifdef VK_KHR_external_fence_win32
14382 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
14383 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014384 return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014385 }
14386 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
14387 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014388 return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014389 }
14390#endif
14391#ifdef VK_KHR_external_fence_fd
14392 if (!strcmp(name, "vkImportFenceFdKHR"))
14393 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014394 return (void*)dynCheck_entry_vkImportFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014395 }
14396 if (!strcmp(name, "vkGetFenceFdKHR"))
14397 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014398 return (void*)dynCheck_entry_vkGetFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014399 }
14400#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014401#ifdef VK_KHR_performance_query
14402 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
14403 {
14404 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
14405 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
14406 }
14407 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
14408 {
14409 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
14410 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
14411 }
14412 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
14413 {
14414 return (void*)dynCheck_entry_vkAcquireProfilingLockKHR;
14415 }
14416 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
14417 {
14418 return (void*)dynCheck_entry_vkReleaseProfilingLockKHR;
14419 }
14420#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014421#ifdef VK_KHR_get_surface_capabilities2
14422 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
14423 {
14424 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
14425 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
14426 }
14427 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
14428 {
14429 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
14430 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
14431 }
14432#endif
14433#ifdef VK_KHR_get_display_properties2
14434 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
14435 {
14436 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
14437 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
14438 }
14439 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
14440 {
14441 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
14442 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
14443 }
14444 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
14445 {
14446 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
14447 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
14448 }
14449 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
14450 {
14451 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
14452 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
14453 }
14454#endif
14455#ifdef VK_KHR_get_memory_requirements2
14456 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
14457 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014458 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014459 }
14460 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
14461 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014462 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014463 }
14464 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
14465 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014466 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014467 }
14468#endif
14469#ifdef VK_KHR_sampler_ycbcr_conversion
14470 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
14471 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014472 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014473 }
14474 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
14475 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014476 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014477 }
14478#endif
14479#ifdef VK_KHR_bind_memory2
14480 if (!strcmp(name, "vkBindBufferMemory2KHR"))
14481 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014482 return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014483 }
14484 if (!strcmp(name, "vkBindImageMemory2KHR"))
14485 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014486 return (void*)dynCheck_entry_vkBindImageMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014487 }
14488#endif
14489#ifdef VK_KHR_maintenance3
14490 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
14491 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014492 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014493 }
14494#endif
14495#ifdef VK_KHR_draw_indirect_count
14496 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
14497 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014498 return (void*)dynCheck_entry_vkCmdDrawIndirectCountKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014499 }
14500 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
14501 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014502 return (void*)dynCheck_entry_vkCmdDrawIndexedIndirectCountKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014503 }
14504#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014505#ifdef VK_KHR_timeline_semaphore
14506 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
14507 {
14508 return (void*)dynCheck_entry_vkGetSemaphoreCounterValueKHR;
14509 }
14510 if (!strcmp(name, "vkWaitSemaphoresKHR"))
14511 {
14512 return (void*)dynCheck_entry_vkWaitSemaphoresKHR;
14513 }
14514 if (!strcmp(name, "vkSignalSemaphoreKHR"))
14515 {
14516 return (void*)dynCheck_entry_vkSignalSemaphoreKHR;
14517 }
14518#endif
14519#ifdef VK_KHR_fragment_shading_rate
14520 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
14521 {
14522 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_fragment_shading_rate");
14523 return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
14524 }
14525 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
14526 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014527 return (void*)dynCheck_entry_vkCmdSetFragmentShadingRateKHR;
Yilong Lia8d45f12021-02-07 02:30:21 -080014528 }
14529#endif
Yilong Li353409a2022-01-04 02:37:56 -080014530#ifdef VK_KHR_present_wait
14531 if (!strcmp(name, "vkWaitForPresentKHR"))
14532 {
14533 return (void*)dynCheck_entry_vkWaitForPresentKHR;
14534 }
14535#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014536#ifdef VK_KHR_buffer_device_address
14537 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
14538 {
14539 return (void*)dynCheck_entry_vkGetBufferDeviceAddressKHR;
14540 }
14541 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
14542 {
14543 return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR;
14544 }
14545 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
14546 {
14547 return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR;
14548 }
14549#endif
14550#ifdef VK_KHR_deferred_host_operations
14551 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
14552 {
14553 return (void*)dynCheck_entry_vkCreateDeferredOperationKHR;
14554 }
14555 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
14556 {
14557 return (void*)dynCheck_entry_vkDestroyDeferredOperationKHR;
14558 }
14559 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
14560 {
14561 return (void*)dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR;
14562 }
14563 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
14564 {
14565 return (void*)dynCheck_entry_vkGetDeferredOperationResultKHR;
14566 }
14567 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
14568 {
14569 return (void*)dynCheck_entry_vkDeferredOperationJoinKHR;
14570 }
14571#endif
14572#ifdef VK_KHR_pipeline_executable_properties
14573 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
14574 {
14575 return (void*)dynCheck_entry_vkGetPipelineExecutablePropertiesKHR;
14576 }
14577 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
14578 {
14579 return (void*)dynCheck_entry_vkGetPipelineExecutableStatisticsKHR;
14580 }
14581 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
14582 {
14583 return (void*)dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR;
14584 }
14585#endif
Yilong Li353409a2022-01-04 02:37:56 -080014586#ifdef VK_KHR_video_encode_queue
14587 if (!strcmp(name, "vkCmdEncodeVideoKHR"))
14588 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014589 return (void*)dynCheck_entry_vkCmdEncodeVideoKHR;
Yilong Li353409a2022-01-04 02:37:56 -080014590 }
14591#endif
14592#ifdef VK_KHR_synchronization2
14593 if (!strcmp(name, "vkCmdSetEvent2KHR"))
14594 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014595 return (void*)dynCheck_entry_vkCmdSetEvent2KHR;
Yilong Li353409a2022-01-04 02:37:56 -080014596 }
14597 if (!strcmp(name, "vkCmdResetEvent2KHR"))
14598 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014599 return (void*)dynCheck_entry_vkCmdResetEvent2KHR;
Yilong Li353409a2022-01-04 02:37:56 -080014600 }
14601 if (!strcmp(name, "vkCmdWaitEvents2KHR"))
14602 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014603 return (void*)dynCheck_entry_vkCmdWaitEvents2KHR;
Yilong Li353409a2022-01-04 02:37:56 -080014604 }
14605 if (!strcmp(name, "vkCmdPipelineBarrier2KHR"))
14606 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014607 return (void*)dynCheck_entry_vkCmdPipelineBarrier2KHR;
Yilong Li353409a2022-01-04 02:37:56 -080014608 }
14609 if (!strcmp(name, "vkCmdWriteTimestamp2KHR"))
14610 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014611 return (void*)dynCheck_entry_vkCmdWriteTimestamp2KHR;
Yilong Li353409a2022-01-04 02:37:56 -080014612 }
14613 if (!strcmp(name, "vkQueueSubmit2KHR"))
14614 {
14615 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_synchronization2");
14616 return hasExt ? (void*)entry_vkQueueSubmit2KHR : nullptr;
14617 }
14618 if (!strcmp(name, "vkCmdWriteBufferMarker2AMD"))
14619 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014620 return (void*)dynCheck_entry_vkCmdWriteBufferMarker2AMD;
Yilong Li353409a2022-01-04 02:37:56 -080014621 }
14622 if (!strcmp(name, "vkGetQueueCheckpointData2NV"))
14623 {
14624 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_synchronization2");
14625 return hasExt ? (void*)entry_vkGetQueueCheckpointData2NV : nullptr;
14626 }
14627#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014628#ifdef VK_KHR_copy_commands2
14629 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
14630 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014631 return (void*)dynCheck_entry_vkCmdCopyBuffer2KHR;
Yilong Lia8d45f12021-02-07 02:30:21 -080014632 }
14633 if (!strcmp(name, "vkCmdCopyImage2KHR"))
14634 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014635 return (void*)dynCheck_entry_vkCmdCopyImage2KHR;
Yilong Lia8d45f12021-02-07 02:30:21 -080014636 }
14637 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
14638 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014639 return (void*)dynCheck_entry_vkCmdCopyBufferToImage2KHR;
Yilong Lia8d45f12021-02-07 02:30:21 -080014640 }
14641 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
14642 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014643 return (void*)dynCheck_entry_vkCmdCopyImageToBuffer2KHR;
Yilong Lia8d45f12021-02-07 02:30:21 -080014644 }
14645 if (!strcmp(name, "vkCmdBlitImage2KHR"))
14646 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014647 return (void*)dynCheck_entry_vkCmdBlitImage2KHR;
Yilong Lia8d45f12021-02-07 02:30:21 -080014648 }
14649 if (!strcmp(name, "vkCmdResolveImage2KHR"))
14650 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014651 return (void*)dynCheck_entry_vkCmdResolveImage2KHR;
Yilong Lia8d45f12021-02-07 02:30:21 -080014652 }
14653#endif
Yilong Li353409a2022-01-04 02:37:56 -080014654#ifdef VK_KHR_maintenance4
14655 if (!strcmp(name, "vkGetDeviceBufferMemoryRequirementsKHR"))
14656 {
14657 return (void*)dynCheck_entry_vkGetDeviceBufferMemoryRequirementsKHR;
14658 }
14659 if (!strcmp(name, "vkGetDeviceImageMemoryRequirementsKHR"))
14660 {
14661 return (void*)dynCheck_entry_vkGetDeviceImageMemoryRequirementsKHR;
14662 }
14663 if (!strcmp(name, "vkGetDeviceImageSparseMemoryRequirementsKHR"))
14664 {
14665 return (void*)dynCheck_entry_vkGetDeviceImageSparseMemoryRequirementsKHR;
14666 }
14667#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014668#ifdef VK_ANDROID_native_buffer
14669 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
14670 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014671 return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014672 }
14673 if (!strcmp(name, "vkAcquireImageANDROID"))
14674 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014675 return (void*)dynCheck_entry_vkAcquireImageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014676 }
14677 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
14678 {
14679 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
14680 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
14681 }
14682#endif
14683#ifdef VK_EXT_debug_report
14684 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
14685 {
14686 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
14687 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
14688 }
14689 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
14690 {
14691 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
14692 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
14693 }
14694 if (!strcmp(name, "vkDebugReportMessageEXT"))
14695 {
14696 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
14697 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
14698 }
14699#endif
14700#ifdef VK_EXT_debug_marker
14701 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
14702 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014703 return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014704 }
14705 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
14706 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014707 return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014708 }
14709 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
14710 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014711 return (void*)dynCheck_entry_vkCmdDebugMarkerBeginEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014712 }
14713 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
14714 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014715 return (void*)dynCheck_entry_vkCmdDebugMarkerEndEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014716 }
14717 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
14718 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014719 return (void*)dynCheck_entry_vkCmdDebugMarkerInsertEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014720 }
14721#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014722#ifdef VK_EXT_transform_feedback
14723 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
14724 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014725 return (void*)dynCheck_entry_vkCmdBindTransformFeedbackBuffersEXT;
Yilong Lia8d45f12021-02-07 02:30:21 -080014726 }
14727 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
14728 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014729 return (void*)dynCheck_entry_vkCmdBeginTransformFeedbackEXT;
Yilong Lia8d45f12021-02-07 02:30:21 -080014730 }
14731 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
14732 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014733 return (void*)dynCheck_entry_vkCmdEndTransformFeedbackEXT;
Yilong Lia8d45f12021-02-07 02:30:21 -080014734 }
14735 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
14736 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014737 return (void*)dynCheck_entry_vkCmdBeginQueryIndexedEXT;
Yilong Lia8d45f12021-02-07 02:30:21 -080014738 }
14739 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
14740 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014741 return (void*)dynCheck_entry_vkCmdEndQueryIndexedEXT;
Yilong Lia8d45f12021-02-07 02:30:21 -080014742 }
14743 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
14744 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014745 return (void*)dynCheck_entry_vkCmdDrawIndirectByteCountEXT;
Yilong Lia8d45f12021-02-07 02:30:21 -080014746 }
14747#endif
Yilong Li353409a2022-01-04 02:37:56 -080014748#ifdef VK_NVX_binary_import
14749 if (!strcmp(name, "vkCreateCuModuleNVX"))
14750 {
14751 return (void*)dynCheck_entry_vkCreateCuModuleNVX;
14752 }
14753 if (!strcmp(name, "vkCreateCuFunctionNVX"))
14754 {
14755 return (void*)dynCheck_entry_vkCreateCuFunctionNVX;
14756 }
14757 if (!strcmp(name, "vkDestroyCuModuleNVX"))
14758 {
14759 return (void*)dynCheck_entry_vkDestroyCuModuleNVX;
14760 }
14761 if (!strcmp(name, "vkDestroyCuFunctionNVX"))
14762 {
14763 return (void*)dynCheck_entry_vkDestroyCuFunctionNVX;
14764 }
14765 if (!strcmp(name, "vkCmdCuLaunchKernelNVX"))
14766 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014767 return (void*)dynCheck_entry_vkCmdCuLaunchKernelNVX;
Yilong Li353409a2022-01-04 02:37:56 -080014768 }
14769#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014770#ifdef VK_NVX_image_view_handle
14771 if (!strcmp(name, "vkGetImageViewHandleNVX"))
14772 {
14773 return (void*)dynCheck_entry_vkGetImageViewHandleNVX;
14774 }
14775 if (!strcmp(name, "vkGetImageViewAddressNVX"))
14776 {
14777 return (void*)dynCheck_entry_vkGetImageViewAddressNVX;
14778 }
14779#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014780#ifdef VK_AMD_draw_indirect_count
14781 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
14782 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014783 return (void*)dynCheck_entry_vkCmdDrawIndirectCountAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014784 }
14785 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
14786 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014787 return (void*)dynCheck_entry_vkCmdDrawIndexedIndirectCountAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014788 }
14789#endif
14790#ifdef VK_AMD_shader_info
14791 if (!strcmp(name, "vkGetShaderInfoAMD"))
14792 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014793 return (void*)dynCheck_entry_vkGetShaderInfoAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014794 }
14795#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014796#ifdef VK_GGP_stream_descriptor_surface
14797 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
14798 {
14799 bool hasExt = resources->hasInstanceExtension(instance, "VK_GGP_stream_descriptor_surface");
14800 return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
14801 }
14802#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014803#ifdef VK_NV_external_memory_capabilities
14804 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
14805 {
14806 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
14807 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
14808 }
14809#endif
14810#ifdef VK_NV_external_memory_win32
14811 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
14812 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014813 return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014814 }
14815#endif
14816#ifdef VK_NN_vi_surface
14817 if (!strcmp(name, "vkCreateViSurfaceNN"))
14818 {
14819 bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
14820 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
14821 }
14822#endif
14823#ifdef VK_EXT_conditional_rendering
14824 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
14825 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014826 return (void*)dynCheck_entry_vkCmdBeginConditionalRenderingEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014827 }
14828 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
14829 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014830 return (void*)dynCheck_entry_vkCmdEndConditionalRenderingEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014831 }
14832#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014833#ifdef VK_NV_clip_space_w_scaling
14834 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
14835 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014836 return (void*)dynCheck_entry_vkCmdSetViewportWScalingNV;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014837 }
14838#endif
14839#ifdef VK_EXT_direct_mode_display
14840 if (!strcmp(name, "vkReleaseDisplayEXT"))
14841 {
14842 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
14843 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
14844 }
14845#endif
14846#ifdef VK_EXT_acquire_xlib_display
14847 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
14848 {
14849 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
14850 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
14851 }
14852 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
14853 {
14854 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
14855 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
14856 }
14857#endif
14858#ifdef VK_EXT_display_surface_counter
14859 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
14860 {
14861 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
14862 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
14863 }
14864#endif
14865#ifdef VK_EXT_display_control
14866 if (!strcmp(name, "vkDisplayPowerControlEXT"))
14867 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014868 return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014869 }
14870 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
14871 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014872 return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014873 }
14874 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
14875 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014876 return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014877 }
14878 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
14879 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014880 return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014881 }
14882#endif
14883#ifdef VK_GOOGLE_display_timing
14884 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
14885 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014886 return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014887 }
14888 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
14889 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014890 return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014891 }
14892#endif
14893#ifdef VK_EXT_discard_rectangles
14894 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
14895 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014896 return (void*)dynCheck_entry_vkCmdSetDiscardRectangleEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014897 }
14898#endif
14899#ifdef VK_EXT_hdr_metadata
14900 if (!strcmp(name, "vkSetHdrMetadataEXT"))
14901 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014902 return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014903 }
14904#endif
14905#ifdef VK_MVK_ios_surface
14906 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
14907 {
14908 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
14909 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
14910 }
14911#endif
14912#ifdef VK_MVK_macos_surface
14913 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
14914 {
14915 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
14916 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
14917 }
14918#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080014919#ifdef VK_MVK_moltenvk
14920 if (!strcmp(name, "vkGetMTLDeviceMVK"))
14921 {
14922 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
14923 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
14924 }
14925 if (!strcmp(name, "vkSetMTLTextureMVK"))
14926 {
14927 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
14928 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
14929 }
14930 if (!strcmp(name, "vkGetMTLTextureMVK"))
14931 {
14932 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
14933 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
14934 }
14935 if (!strcmp(name, "vkGetMTLBufferMVK"))
14936 {
14937 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
14938 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
14939 }
14940 if (!strcmp(name, "vkUseIOSurfaceMVK"))
14941 {
14942 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
14943 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
14944 }
14945 if (!strcmp(name, "vkGetIOSurfaceMVK"))
14946 {
14947 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
14948 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
14949 }
14950#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014951#ifdef VK_EXT_debug_utils
14952 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
14953 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014954 return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014955 }
14956 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
14957 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070014958 return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014959 }
14960 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
14961 {
14962 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
14963 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
14964 }
14965 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
14966 {
14967 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
14968 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
14969 }
14970 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
14971 {
14972 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
14973 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
14974 }
14975 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
14976 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014977 return (void*)dynCheck_entry_vkCmdBeginDebugUtilsLabelEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014978 }
14979 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
14980 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014981 return (void*)dynCheck_entry_vkCmdEndDebugUtilsLabelEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014982 }
14983 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
14984 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070014985 return (void*)dynCheck_entry_vkCmdInsertDebugUtilsLabelEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080014986 }
14987 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
14988 {
14989 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
14990 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
14991 }
14992 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
14993 {
14994 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
14995 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
14996 }
14997 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
14998 {
14999 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
15000 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
15001 }
15002#endif
15003#ifdef VK_ANDROID_external_memory_android_hardware_buffer
15004 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
15005 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070015006 return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015007 }
15008 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
15009 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070015010 return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015011 }
15012#endif
15013#ifdef VK_EXT_sample_locations
15014 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
15015 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015016 return (void*)dynCheck_entry_vkCmdSetSampleLocationsEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015017 }
15018 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
15019 {
15020 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
15021 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
15022 }
15023#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015024#ifdef VK_EXT_image_drm_format_modifier
15025 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
15026 {
15027 return (void*)dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT;
15028 }
15029#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015030#ifdef VK_EXT_validation_cache
15031 if (!strcmp(name, "vkCreateValidationCacheEXT"))
15032 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070015033 return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015034 }
15035 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
15036 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070015037 return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015038 }
15039 if (!strcmp(name, "vkMergeValidationCachesEXT"))
15040 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070015041 return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015042 }
15043 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
15044 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070015045 return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015046 }
15047#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015048#ifdef VK_NV_shading_rate_image
15049 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
15050 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015051 return (void*)dynCheck_entry_vkCmdBindShadingRateImageNV;
Yilong Lia8d45f12021-02-07 02:30:21 -080015052 }
15053 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
15054 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015055 return (void*)dynCheck_entry_vkCmdSetViewportShadingRatePaletteNV;
Yilong Lia8d45f12021-02-07 02:30:21 -080015056 }
15057 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
15058 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015059 return (void*)dynCheck_entry_vkCmdSetCoarseSampleOrderNV;
Yilong Lia8d45f12021-02-07 02:30:21 -080015060 }
15061#endif
15062#ifdef VK_NV_ray_tracing
15063 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
15064 {
15065 return (void*)dynCheck_entry_vkCreateAccelerationStructureNV;
15066 }
15067 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
15068 {
15069 return (void*)dynCheck_entry_vkDestroyAccelerationStructureNV;
15070 }
15071 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
15072 {
15073 return (void*)dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV;
15074 }
15075 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
15076 {
15077 return (void*)dynCheck_entry_vkBindAccelerationStructureMemoryNV;
15078 }
15079 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
15080 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015081 return (void*)dynCheck_entry_vkCmdBuildAccelerationStructureNV;
Yilong Lia8d45f12021-02-07 02:30:21 -080015082 }
15083 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
15084 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015085 return (void*)dynCheck_entry_vkCmdCopyAccelerationStructureNV;
Yilong Lia8d45f12021-02-07 02:30:21 -080015086 }
15087 if (!strcmp(name, "vkCmdTraceRaysNV"))
15088 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015089 return (void*)dynCheck_entry_vkCmdTraceRaysNV;
Yilong Lia8d45f12021-02-07 02:30:21 -080015090 }
15091 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
15092 {
15093 return (void*)dynCheck_entry_vkCreateRayTracingPipelinesNV;
15094 }
15095 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
15096 {
15097 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR;
15098 }
15099 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
15100 {
15101 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV;
15102 }
15103 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
15104 {
15105 return (void*)dynCheck_entry_vkGetAccelerationStructureHandleNV;
15106 }
15107 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
15108 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015109 return (void*)dynCheck_entry_vkCmdWriteAccelerationStructuresPropertiesNV;
Yilong Lia8d45f12021-02-07 02:30:21 -080015110 }
15111 if (!strcmp(name, "vkCompileDeferredNV"))
15112 {
15113 return (void*)dynCheck_entry_vkCompileDeferredNV;
15114 }
15115#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015116#ifdef VK_EXT_external_memory_host
15117 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
15118 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070015119 return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015120 }
15121#endif
15122#ifdef VK_AMD_buffer_marker
15123 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
15124 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015125 return (void*)dynCheck_entry_vkCmdWriteBufferMarkerAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015126 }
15127#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015128#ifdef VK_EXT_calibrated_timestamps
15129 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
15130 {
15131 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_calibrated_timestamps");
15132 return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
15133 }
15134 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
15135 {
15136 return (void*)dynCheck_entry_vkGetCalibratedTimestampsEXT;
15137 }
15138#endif
15139#ifdef VK_NV_mesh_shader
15140 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
15141 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015142 return (void*)dynCheck_entry_vkCmdDrawMeshTasksNV;
Yilong Lia8d45f12021-02-07 02:30:21 -080015143 }
15144 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
15145 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015146 return (void*)dynCheck_entry_vkCmdDrawMeshTasksIndirectNV;
Yilong Lia8d45f12021-02-07 02:30:21 -080015147 }
15148 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
15149 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015150 return (void*)dynCheck_entry_vkCmdDrawMeshTasksIndirectCountNV;
Yilong Lia8d45f12021-02-07 02:30:21 -080015151 }
15152#endif
15153#ifdef VK_NV_scissor_exclusive
15154 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
15155 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015156 return (void*)dynCheck_entry_vkCmdSetExclusiveScissorNV;
Yilong Lia8d45f12021-02-07 02:30:21 -080015157 }
15158#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015159#ifdef VK_NV_device_diagnostic_checkpoints
15160 if (!strcmp(name, "vkCmdSetCheckpointNV"))
15161 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015162 return (void*)dynCheck_entry_vkCmdSetCheckpointNV;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015163 }
15164 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
15165 {
15166 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
15167 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
15168 }
15169#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015170#ifdef VK_INTEL_performance_query
15171 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015172 {
Yilong Lia8d45f12021-02-07 02:30:21 -080015173 return (void*)dynCheck_entry_vkInitializePerformanceApiINTEL;
15174 }
15175 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
15176 {
15177 return (void*)dynCheck_entry_vkUninitializePerformanceApiINTEL;
15178 }
15179 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
15180 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015181 return (void*)dynCheck_entry_vkCmdSetPerformanceMarkerINTEL;
Yilong Lia8d45f12021-02-07 02:30:21 -080015182 }
15183 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
15184 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015185 return (void*)dynCheck_entry_vkCmdSetPerformanceStreamMarkerINTEL;
Yilong Lia8d45f12021-02-07 02:30:21 -080015186 }
15187 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
15188 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015189 return (void*)dynCheck_entry_vkCmdSetPerformanceOverrideINTEL;
Yilong Lia8d45f12021-02-07 02:30:21 -080015190 }
15191 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
15192 {
15193 return (void*)dynCheck_entry_vkAcquirePerformanceConfigurationINTEL;
15194 }
15195 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
15196 {
15197 return (void*)dynCheck_entry_vkReleasePerformanceConfigurationINTEL;
15198 }
15199 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
15200 {
15201 bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
15202 return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
15203 }
15204 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
15205 {
15206 return (void*)dynCheck_entry_vkGetPerformanceParameterINTEL;
15207 }
15208#endif
15209#ifdef VK_AMD_display_native_hdr
15210 if (!strcmp(name, "vkSetLocalDimmingAMD"))
15211 {
15212 return (void*)dynCheck_entry_vkSetLocalDimmingAMD;
15213 }
15214#endif
15215#ifdef VK_FUCHSIA_imagepipe_surface
15216 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
15217 {
15218 bool hasExt = resources->hasInstanceExtension(instance, "VK_FUCHSIA_imagepipe_surface");
15219 return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
15220 }
15221#endif
15222#ifdef VK_EXT_metal_surface
15223 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
15224 {
15225 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_metal_surface");
15226 return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015227 }
15228#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015229#ifdef VK_EXT_buffer_device_address
15230 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
15231 {
15232 return (void*)dynCheck_entry_vkGetBufferDeviceAddressEXT;
15233 }
15234#endif
15235#ifdef VK_EXT_tooling_info
15236 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
15237 {
15238 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_tooling_info");
15239 return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
15240 }
15241#endif
15242#ifdef VK_NV_cooperative_matrix
15243 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
15244 {
15245 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_cooperative_matrix");
15246 return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
15247 }
15248#endif
15249#ifdef VK_NV_coverage_reduction_mode
15250 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
15251 {
15252 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_coverage_reduction_mode");
15253 return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
15254 }
15255#endif
15256#ifdef VK_EXT_full_screen_exclusive
15257 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
15258 {
15259 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_full_screen_exclusive");
15260 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
15261 }
15262 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
15263 {
15264 return (void*)dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT;
15265 }
15266 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
15267 {
15268 return (void*)dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT;
15269 }
15270 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
15271 {
15272 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT;
15273 }
15274#endif
15275#ifdef VK_EXT_headless_surface
15276 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
15277 {
15278 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_headless_surface");
15279 return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
15280 }
15281#endif
15282#ifdef VK_EXT_line_rasterization
15283 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
15284 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015285 return (void*)dynCheck_entry_vkCmdSetLineStippleEXT;
Yilong Lia8d45f12021-02-07 02:30:21 -080015286 }
15287#endif
15288#ifdef VK_EXT_host_query_reset
15289 if (!strcmp(name, "vkResetQueryPoolEXT"))
15290 {
15291 return (void*)dynCheck_entry_vkResetQueryPoolEXT;
15292 }
15293#endif
15294#ifdef VK_EXT_extended_dynamic_state
15295 if (!strcmp(name, "vkCmdSetCullModeEXT"))
15296 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015297 return (void*)dynCheck_entry_vkCmdSetCullModeEXT;
Yilong Lia8d45f12021-02-07 02:30:21 -080015298 }
15299 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
15300 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015301 return (void*)dynCheck_entry_vkCmdSetFrontFaceEXT;
Yilong Lia8d45f12021-02-07 02:30:21 -080015302 }
15303 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
15304 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015305 return (void*)dynCheck_entry_vkCmdSetPrimitiveTopologyEXT;
Yilong Lia8d45f12021-02-07 02:30:21 -080015306 }
15307 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
15308 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015309 return (void*)dynCheck_entry_vkCmdSetViewportWithCountEXT;
Yilong Lia8d45f12021-02-07 02:30:21 -080015310 }
15311 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
15312 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015313 return (void*)dynCheck_entry_vkCmdSetScissorWithCountEXT;
Yilong Lia8d45f12021-02-07 02:30:21 -080015314 }
15315 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
15316 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015317 return (void*)dynCheck_entry_vkCmdBindVertexBuffers2EXT;
Yilong Lia8d45f12021-02-07 02:30:21 -080015318 }
15319 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
15320 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015321 return (void*)dynCheck_entry_vkCmdSetDepthTestEnableEXT;
Yilong Lia8d45f12021-02-07 02:30:21 -080015322 }
15323 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
15324 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015325 return (void*)dynCheck_entry_vkCmdSetDepthWriteEnableEXT;
Yilong Lia8d45f12021-02-07 02:30:21 -080015326 }
15327 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
15328 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015329 return (void*)dynCheck_entry_vkCmdSetDepthCompareOpEXT;
Yilong Lia8d45f12021-02-07 02:30:21 -080015330 }
15331 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
15332 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015333 return (void*)dynCheck_entry_vkCmdSetDepthBoundsTestEnableEXT;
Yilong Lia8d45f12021-02-07 02:30:21 -080015334 }
15335 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
15336 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015337 return (void*)dynCheck_entry_vkCmdSetStencilTestEnableEXT;
Yilong Lia8d45f12021-02-07 02:30:21 -080015338 }
15339 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
15340 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015341 return (void*)dynCheck_entry_vkCmdSetStencilOpEXT;
Yilong Lia8d45f12021-02-07 02:30:21 -080015342 }
15343#endif
15344#ifdef VK_NV_device_generated_commands
15345 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
15346 {
15347 return (void*)dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV;
15348 }
15349 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
15350 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015351 return (void*)dynCheck_entry_vkCmdPreprocessGeneratedCommandsNV;
Yilong Lia8d45f12021-02-07 02:30:21 -080015352 }
15353 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
15354 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015355 return (void*)dynCheck_entry_vkCmdExecuteGeneratedCommandsNV;
Yilong Lia8d45f12021-02-07 02:30:21 -080015356 }
15357 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
15358 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015359 return (void*)dynCheck_entry_vkCmdBindPipelineShaderGroupNV;
Yilong Lia8d45f12021-02-07 02:30:21 -080015360 }
15361 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
15362 {
15363 return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNV;
15364 }
15365 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
15366 {
15367 return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNV;
15368 }
15369#endif
Yilong Li353409a2022-01-04 02:37:56 -080015370#ifdef VK_EXT_acquire_drm_display
15371 if (!strcmp(name, "vkAcquireDrmDisplayEXT"))
15372 {
15373 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_drm_display");
15374 return hasExt ? (void*)entry_vkAcquireDrmDisplayEXT : nullptr;
15375 }
15376 if (!strcmp(name, "vkGetDrmDisplayEXT"))
15377 {
15378 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_drm_display");
15379 return hasExt ? (void*)entry_vkGetDrmDisplayEXT : nullptr;
15380 }
15381#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015382#ifdef VK_EXT_private_data
15383 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
15384 {
15385 return (void*)dynCheck_entry_vkCreatePrivateDataSlotEXT;
15386 }
15387 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
15388 {
15389 return (void*)dynCheck_entry_vkDestroyPrivateDataSlotEXT;
15390 }
15391 if (!strcmp(name, "vkSetPrivateDataEXT"))
15392 {
15393 return (void*)dynCheck_entry_vkSetPrivateDataEXT;
15394 }
15395 if (!strcmp(name, "vkGetPrivateDataEXT"))
15396 {
15397 return (void*)dynCheck_entry_vkGetPrivateDataEXT;
15398 }
15399#endif
15400#ifdef VK_NV_fragment_shading_rate_enums
15401 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
15402 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015403 return (void*)dynCheck_entry_vkCmdSetFragmentShadingRateEnumNV;
Yilong Lia8d45f12021-02-07 02:30:21 -080015404 }
15405#endif
Yilong Li353409a2022-01-04 02:37:56 -080015406#ifdef VK_NV_acquire_winrt_display
15407 if (!strcmp(name, "vkAcquireWinrtDisplayNV"))
15408 {
15409 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_acquire_winrt_display");
15410 return hasExt ? (void*)entry_vkAcquireWinrtDisplayNV : nullptr;
15411 }
15412 if (!strcmp(name, "vkGetWinrtDisplayNV"))
15413 {
15414 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_acquire_winrt_display");
15415 return hasExt ? (void*)entry_vkGetWinrtDisplayNV : nullptr;
15416 }
15417#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015418#ifdef VK_EXT_directfb_surface
15419 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
15420 {
15421 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
15422 return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
15423 }
15424 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
15425 {
15426 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
15427 return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
15428 }
15429#endif
Yilong Li353409a2022-01-04 02:37:56 -080015430#ifdef VK_EXT_vertex_input_dynamic_state
15431 if (!strcmp(name, "vkCmdSetVertexInputEXT"))
15432 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015433 return (void*)dynCheck_entry_vkCmdSetVertexInputEXT;
Yilong Li353409a2022-01-04 02:37:56 -080015434 }
15435#endif
15436#ifdef VK_FUCHSIA_external_memory
15437 if (!strcmp(name, "vkGetMemoryZirconHandleFUCHSIA"))
15438 {
15439 return (void*)dynCheck_entry_vkGetMemoryZirconHandleFUCHSIA;
15440 }
15441 if (!strcmp(name, "vkGetMemoryZirconHandlePropertiesFUCHSIA"))
15442 {
15443 return (void*)dynCheck_entry_vkGetMemoryZirconHandlePropertiesFUCHSIA;
15444 }
15445#endif
15446#ifdef VK_FUCHSIA_external_semaphore
15447 if (!strcmp(name, "vkImportSemaphoreZirconHandleFUCHSIA"))
15448 {
15449 return (void*)dynCheck_entry_vkImportSemaphoreZirconHandleFUCHSIA;
15450 }
15451 if (!strcmp(name, "vkGetSemaphoreZirconHandleFUCHSIA"))
15452 {
15453 return (void*)dynCheck_entry_vkGetSemaphoreZirconHandleFUCHSIA;
15454 }
15455#endif
15456#ifdef VK_FUCHSIA_buffer_collection
15457 if (!strcmp(name, "vkCreateBufferCollectionFUCHSIA"))
15458 {
15459 return (void*)dynCheck_entry_vkCreateBufferCollectionFUCHSIA;
15460 }
15461 if (!strcmp(name, "vkSetBufferCollectionImageConstraintsFUCHSIA"))
15462 {
15463 return (void*)dynCheck_entry_vkSetBufferCollectionImageConstraintsFUCHSIA;
15464 }
15465 if (!strcmp(name, "vkSetBufferCollectionBufferConstraintsFUCHSIA"))
15466 {
15467 return (void*)dynCheck_entry_vkSetBufferCollectionBufferConstraintsFUCHSIA;
15468 }
15469 if (!strcmp(name, "vkDestroyBufferCollectionFUCHSIA"))
15470 {
15471 return (void*)dynCheck_entry_vkDestroyBufferCollectionFUCHSIA;
15472 }
15473 if (!strcmp(name, "vkGetBufferCollectionPropertiesFUCHSIA"))
15474 {
15475 return (void*)dynCheck_entry_vkGetBufferCollectionPropertiesFUCHSIA;
15476 }
15477#endif
15478#ifdef VK_HUAWEI_subpass_shading
15479 if (!strcmp(name, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI"))
15480 {
15481 return (void*)dynCheck_entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;
15482 }
15483 if (!strcmp(name, "vkCmdSubpassShadingHUAWEI"))
15484 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015485 return (void*)dynCheck_entry_vkCmdSubpassShadingHUAWEI;
Yilong Li353409a2022-01-04 02:37:56 -080015486 }
15487#endif
15488#ifdef VK_HUAWEI_invocation_mask
15489 if (!strcmp(name, "vkCmdBindInvocationMaskHUAWEI"))
15490 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015491 return (void*)dynCheck_entry_vkCmdBindInvocationMaskHUAWEI;
Yilong Li353409a2022-01-04 02:37:56 -080015492 }
15493#endif
15494#ifdef VK_NV_external_memory_rdma
15495 if (!strcmp(name, "vkGetMemoryRemoteAddressNV"))
15496 {
15497 return (void*)dynCheck_entry_vkGetMemoryRemoteAddressNV;
15498 }
15499#endif
15500#ifdef VK_EXT_extended_dynamic_state2
15501 if (!strcmp(name, "vkCmdSetPatchControlPointsEXT"))
15502 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015503 return (void*)dynCheck_entry_vkCmdSetPatchControlPointsEXT;
Yilong Li353409a2022-01-04 02:37:56 -080015504 }
15505 if (!strcmp(name, "vkCmdSetRasterizerDiscardEnableEXT"))
15506 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015507 return (void*)dynCheck_entry_vkCmdSetRasterizerDiscardEnableEXT;
Yilong Li353409a2022-01-04 02:37:56 -080015508 }
15509 if (!strcmp(name, "vkCmdSetDepthBiasEnableEXT"))
15510 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015511 return (void*)dynCheck_entry_vkCmdSetDepthBiasEnableEXT;
Yilong Li353409a2022-01-04 02:37:56 -080015512 }
15513 if (!strcmp(name, "vkCmdSetLogicOpEXT"))
15514 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015515 return (void*)dynCheck_entry_vkCmdSetLogicOpEXT;
Yilong Li353409a2022-01-04 02:37:56 -080015516 }
15517 if (!strcmp(name, "vkCmdSetPrimitiveRestartEnableEXT"))
15518 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015519 return (void*)dynCheck_entry_vkCmdSetPrimitiveRestartEnableEXT;
Yilong Li353409a2022-01-04 02:37:56 -080015520 }
15521#endif
15522#ifdef VK_QNX_screen_surface
15523 if (!strcmp(name, "vkCreateScreenSurfaceQNX"))
15524 {
15525 bool hasExt = resources->hasInstanceExtension(instance, "VK_QNX_screen_surface");
15526 return hasExt ? (void*)entry_vkCreateScreenSurfaceQNX : nullptr;
15527 }
15528 if (!strcmp(name, "vkGetPhysicalDeviceScreenPresentationSupportQNX"))
15529 {
15530 bool hasExt = resources->hasInstanceExtension(instance, "VK_QNX_screen_surface");
15531 return hasExt ? (void*)entry_vkGetPhysicalDeviceScreenPresentationSupportQNX : nullptr;
15532 }
15533#endif
15534#ifdef VK_EXT_color_write_enable
15535 if (!strcmp(name, "vkCmdSetColorWriteEnableEXT"))
15536 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015537 return (void*)dynCheck_entry_vkCmdSetColorWriteEnableEXT;
Yilong Li353409a2022-01-04 02:37:56 -080015538 }
15539#endif
Yilong Li71c43c52021-02-10 02:50:43 -080015540#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -070015541 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
15542 {
15543 return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
15544 }
15545 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
15546 {
15547 return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
15548 }
Yilong Lia8d45f12021-02-07 02:30:21 -080015549 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
15550 {
15551 return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
15552 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070015553 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
15554 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070015555 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070015556 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070015557 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
15558 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015559 return (void*)dynCheck_entry_vkBeginCommandBufferAsyncGOOGLE;
Lingfeng Yangc53e7472019-03-27 08:50:55 -070015560 }
15561 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
15562 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015563 return (void*)dynCheck_entry_vkEndCommandBufferAsyncGOOGLE;
Lingfeng Yangc53e7472019-03-27 08:50:55 -070015564 }
15565 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
15566 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015567 return (void*)dynCheck_entry_vkResetCommandBufferAsyncGOOGLE;
Lingfeng Yangc53e7472019-03-27 08:50:55 -070015568 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070015569 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
15570 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015571 return (void*)dynCheck_entry_vkCommandBufferHostSyncGOOGLE;
Lingfeng Yang39a276e2019-06-17 13:27:22 -070015572 }
Lingfeng Yang87f11962019-06-27 16:28:53 +000015573 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
15574 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070015575 return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +000015576 }
15577 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
15578 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -070015579 return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +000015580 }
Lingfeng Yang4c542412020-02-04 18:18:32 -080015581 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
15582 {
15583 return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE;
15584 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070015585 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
15586 {
15587 return (void*)dynCheck_entry_vkFreeMemorySyncGOOGLE;
15588 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070015589 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
15590 {
Yilong Li71c43c52021-02-10 02:50:43 -080015591 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070015592 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
15593 }
15594 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
15595 {
Yilong Li71c43c52021-02-10 02:50:43 -080015596 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070015597 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
15598 }
15599 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
15600 {
Yilong Li71c43c52021-02-10 02:50:43 -080015601 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070015602 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
15603 }
15604 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
15605 {
Yilong Li71c43c52021-02-10 02:50:43 -080015606 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070015607 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
15608 }
Yilong Lia48b0102020-09-15 15:08:28 -070015609 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
15610 {
15611 return (void*)dynCheck_entry_vkGetLinearImageLayoutGOOGLE;
15612 }
Yilong Lidcaf0672022-02-22 16:39:57 -080015613 if (!strcmp(name, "vkGetLinearImageLayout2GOOGLE"))
15614 {
15615 return (void*)dynCheck_entry_vkGetLinearImageLayout2GOOGLE;
15616 }
Lingfeng Yangded34672021-01-22 23:17:47 -080015617 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
15618 {
Yilong Li71c43c52021-02-10 02:50:43 -080015619 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
Lingfeng Yangded34672021-01-22 23:17:47 -080015620 return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
15621 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080015622 if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
15623 {
15624 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
15625 return hasExt ? (void*)entry_vkQueueCommitDescriptorSetUpdatesGOOGLE : nullptr;
15626 }
15627 if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
15628 {
15629 return (void*)dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE;
15630 }
Lingfeng Yang5678e1e2021-07-15 12:28:05 -070015631 if (!strcmp(name, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE"))
15632 {
15633 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
15634 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE : nullptr;
15635 }
Lingfeng Yangded34672021-01-22 23:17:47 -080015636#endif
Yilong Li353409a2022-01-04 02:37:56 -080015637#ifdef VK_EXT_multi_draw
15638 if (!strcmp(name, "vkCmdDrawMultiEXT"))
15639 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015640 return (void*)dynCheck_entry_vkCmdDrawMultiEXT;
Yilong Li353409a2022-01-04 02:37:56 -080015641 }
15642 if (!strcmp(name, "vkCmdDrawMultiIndexedEXT"))
15643 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015644 return (void*)dynCheck_entry_vkCmdDrawMultiIndexedEXT;
Yilong Li353409a2022-01-04 02:37:56 -080015645 }
15646#endif
15647#ifdef VK_EXT_pageable_device_local_memory
15648 if (!strcmp(name, "vkSetDeviceMemoryPriorityEXT"))
15649 {
15650 return (void*)dynCheck_entry_vkSetDeviceMemoryPriorityEXT;
15651 }
15652#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080015653#ifdef VK_KHR_acceleration_structure
15654 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
15655 {
15656 return (void*)dynCheck_entry_vkCreateAccelerationStructureKHR;
15657 }
15658 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
15659 {
15660 return (void*)dynCheck_entry_vkDestroyAccelerationStructureKHR;
15661 }
15662 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
15663 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015664 return (void*)dynCheck_entry_vkCmdBuildAccelerationStructuresKHR;
Yilong Lia8d45f12021-02-07 02:30:21 -080015665 }
15666 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
15667 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015668 return (void*)dynCheck_entry_vkCmdBuildAccelerationStructuresIndirectKHR;
Yilong Lia8d45f12021-02-07 02:30:21 -080015669 }
15670 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
15671 {
15672 return (void*)dynCheck_entry_vkBuildAccelerationStructuresKHR;
15673 }
15674 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
15675 {
15676 return (void*)dynCheck_entry_vkCopyAccelerationStructureKHR;
15677 }
15678 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
15679 {
15680 return (void*)dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR;
15681 }
15682 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
15683 {
15684 return (void*)dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR;
15685 }
15686 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
15687 {
15688 return (void*)dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR;
15689 }
15690 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
15691 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015692 return (void*)dynCheck_entry_vkCmdCopyAccelerationStructureKHR;
Yilong Lia8d45f12021-02-07 02:30:21 -080015693 }
15694 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
15695 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015696 return (void*)dynCheck_entry_vkCmdCopyAccelerationStructureToMemoryKHR;
Yilong Lia8d45f12021-02-07 02:30:21 -080015697 }
15698 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
15699 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015700 return (void*)dynCheck_entry_vkCmdCopyMemoryToAccelerationStructureKHR;
Yilong Lia8d45f12021-02-07 02:30:21 -080015701 }
15702 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
15703 {
15704 return (void*)dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR;
15705 }
15706 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
15707 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015708 return (void*)dynCheck_entry_vkCmdWriteAccelerationStructuresPropertiesKHR;
Yilong Lia8d45f12021-02-07 02:30:21 -080015709 }
15710 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
15711 {
15712 return (void*)dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR;
15713 }
15714 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
15715 {
15716 return (void*)dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR;
15717 }
15718#endif
15719#ifdef VK_KHR_ray_tracing_pipeline
15720 if (!strcmp(name, "vkCmdTraceRaysKHR"))
15721 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015722 return (void*)dynCheck_entry_vkCmdTraceRaysKHR;
Yilong Lia8d45f12021-02-07 02:30:21 -080015723 }
15724 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
15725 {
15726 return (void*)dynCheck_entry_vkCreateRayTracingPipelinesKHR;
15727 }
15728 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
15729 {
15730 return (void*)dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR;
15731 }
15732 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
15733 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015734 return (void*)dynCheck_entry_vkCmdTraceRaysIndirectKHR;
Yilong Lia8d45f12021-02-07 02:30:21 -080015735 }
15736 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
15737 {
15738 return (void*)dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR;
15739 }
15740 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
15741 {
Yahan Zhouf183ac62022-04-13 11:10:26 -070015742 return (void*)dynCheck_entry_vkCmdSetRayTracingPipelineStackSizeKHR;
Yilong Lia8d45f12021-02-07 02:30:21 -080015743 }
15744#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080015745 return nullptr;
15746}
15747void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
15748 auto resources = ResourceTracker::get();
15749 bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
15750#ifdef VK_VERSION_1_0
15751 if (!strcmp(name, "vkCreateInstance"))
15752 {
15753 return (void*)entry_vkCreateInstance;
15754 }
15755 if (!strcmp(name, "vkDestroyInstance"))
15756 {
15757 return (void*)entry_vkDestroyInstance;
15758 }
15759 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
15760 {
15761 return (void*)entry_vkEnumeratePhysicalDevices;
15762 }
15763 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
15764 {
15765 return (void*)entry_vkGetPhysicalDeviceFeatures;
15766 }
15767 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
15768 {
15769 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
15770 }
15771 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
15772 {
15773 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
15774 }
15775 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
15776 {
15777 return (void*)entry_vkGetPhysicalDeviceProperties;
15778 }
15779 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
15780 {
15781 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
15782 }
15783 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
15784 {
15785 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
15786 }
15787 if (!strcmp(name, "vkGetInstanceProcAddr"))
15788 {
15789 return (void*)entry_vkGetInstanceProcAddr;
15790 }
15791 if (!strcmp(name, "vkGetDeviceProcAddr"))
15792 {
15793 return (void*)entry_vkGetDeviceProcAddr;
15794 }
15795 if (!strcmp(name, "vkCreateDevice"))
15796 {
15797 return (void*)entry_vkCreateDevice;
15798 }
15799 if (!strcmp(name, "vkDestroyDevice"))
15800 {
15801 return (void*)entry_vkDestroyDevice;
15802 }
15803 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
15804 {
15805 return (void*)entry_vkEnumerateInstanceExtensionProperties;
15806 }
15807 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
15808 {
15809 return (void*)entry_vkEnumerateDeviceExtensionProperties;
15810 }
15811 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
15812 {
15813 return (void*)entry_vkEnumerateInstanceLayerProperties;
15814 }
15815 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
15816 {
15817 return (void*)entry_vkEnumerateDeviceLayerProperties;
15818 }
15819 if (!strcmp(name, "vkGetDeviceQueue"))
15820 {
15821 return (void*)entry_vkGetDeviceQueue;
15822 }
15823 if (!strcmp(name, "vkQueueSubmit"))
15824 {
15825 return (void*)entry_vkQueueSubmit;
15826 }
15827 if (!strcmp(name, "vkQueueWaitIdle"))
15828 {
15829 return (void*)entry_vkQueueWaitIdle;
15830 }
15831 if (!strcmp(name, "vkDeviceWaitIdle"))
15832 {
15833 return (void*)entry_vkDeviceWaitIdle;
15834 }
15835 if (!strcmp(name, "vkAllocateMemory"))
15836 {
15837 return (void*)entry_vkAllocateMemory;
15838 }
15839 if (!strcmp(name, "vkFreeMemory"))
15840 {
15841 return (void*)entry_vkFreeMemory;
15842 }
15843 if (!strcmp(name, "vkMapMemory"))
15844 {
15845 return (void*)entry_vkMapMemory;
15846 }
15847 if (!strcmp(name, "vkUnmapMemory"))
15848 {
15849 return (void*)entry_vkUnmapMemory;
15850 }
15851 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
15852 {
15853 return (void*)entry_vkFlushMappedMemoryRanges;
15854 }
15855 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
15856 {
15857 return (void*)entry_vkInvalidateMappedMemoryRanges;
15858 }
15859 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
15860 {
15861 return (void*)entry_vkGetDeviceMemoryCommitment;
15862 }
15863 if (!strcmp(name, "vkBindBufferMemory"))
15864 {
15865 return (void*)entry_vkBindBufferMemory;
15866 }
15867 if (!strcmp(name, "vkBindImageMemory"))
15868 {
15869 return (void*)entry_vkBindImageMemory;
15870 }
15871 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
15872 {
15873 return (void*)entry_vkGetBufferMemoryRequirements;
15874 }
15875 if (!strcmp(name, "vkGetImageMemoryRequirements"))
15876 {
15877 return (void*)entry_vkGetImageMemoryRequirements;
15878 }
15879 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
15880 {
15881 return (void*)entry_vkGetImageSparseMemoryRequirements;
15882 }
15883 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
15884 {
15885 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
15886 }
15887 if (!strcmp(name, "vkQueueBindSparse"))
15888 {
15889 return (void*)entry_vkQueueBindSparse;
15890 }
15891 if (!strcmp(name, "vkCreateFence"))
15892 {
15893 return (void*)entry_vkCreateFence;
15894 }
15895 if (!strcmp(name, "vkDestroyFence"))
15896 {
15897 return (void*)entry_vkDestroyFence;
15898 }
15899 if (!strcmp(name, "vkResetFences"))
15900 {
15901 return (void*)entry_vkResetFences;
15902 }
15903 if (!strcmp(name, "vkGetFenceStatus"))
15904 {
15905 return (void*)entry_vkGetFenceStatus;
15906 }
15907 if (!strcmp(name, "vkWaitForFences"))
15908 {
15909 return (void*)entry_vkWaitForFences;
15910 }
15911 if (!strcmp(name, "vkCreateSemaphore"))
15912 {
15913 return (void*)entry_vkCreateSemaphore;
15914 }
15915 if (!strcmp(name, "vkDestroySemaphore"))
15916 {
15917 return (void*)entry_vkDestroySemaphore;
15918 }
15919 if (!strcmp(name, "vkCreateEvent"))
15920 {
15921 return (void*)entry_vkCreateEvent;
15922 }
15923 if (!strcmp(name, "vkDestroyEvent"))
15924 {
15925 return (void*)entry_vkDestroyEvent;
15926 }
15927 if (!strcmp(name, "vkGetEventStatus"))
15928 {
15929 return (void*)entry_vkGetEventStatus;
15930 }
15931 if (!strcmp(name, "vkSetEvent"))
15932 {
15933 return (void*)entry_vkSetEvent;
15934 }
15935 if (!strcmp(name, "vkResetEvent"))
15936 {
15937 return (void*)entry_vkResetEvent;
15938 }
15939 if (!strcmp(name, "vkCreateQueryPool"))
15940 {
15941 return (void*)entry_vkCreateQueryPool;
15942 }
15943 if (!strcmp(name, "vkDestroyQueryPool"))
15944 {
15945 return (void*)entry_vkDestroyQueryPool;
15946 }
15947 if (!strcmp(name, "vkGetQueryPoolResults"))
15948 {
15949 return (void*)entry_vkGetQueryPoolResults;
15950 }
15951 if (!strcmp(name, "vkCreateBuffer"))
15952 {
15953 return (void*)entry_vkCreateBuffer;
15954 }
15955 if (!strcmp(name, "vkDestroyBuffer"))
15956 {
15957 return (void*)entry_vkDestroyBuffer;
15958 }
15959 if (!strcmp(name, "vkCreateBufferView"))
15960 {
15961 return (void*)entry_vkCreateBufferView;
15962 }
15963 if (!strcmp(name, "vkDestroyBufferView"))
15964 {
15965 return (void*)entry_vkDestroyBufferView;
15966 }
15967 if (!strcmp(name, "vkCreateImage"))
15968 {
15969 return (void*)entry_vkCreateImage;
15970 }
15971 if (!strcmp(name, "vkDestroyImage"))
15972 {
15973 return (void*)entry_vkDestroyImage;
15974 }
15975 if (!strcmp(name, "vkGetImageSubresourceLayout"))
15976 {
15977 return (void*)entry_vkGetImageSubresourceLayout;
15978 }
15979 if (!strcmp(name, "vkCreateImageView"))
15980 {
15981 return (void*)entry_vkCreateImageView;
15982 }
15983 if (!strcmp(name, "vkDestroyImageView"))
15984 {
15985 return (void*)entry_vkDestroyImageView;
15986 }
15987 if (!strcmp(name, "vkCreateShaderModule"))
15988 {
15989 return (void*)entry_vkCreateShaderModule;
15990 }
15991 if (!strcmp(name, "vkDestroyShaderModule"))
15992 {
15993 return (void*)entry_vkDestroyShaderModule;
15994 }
15995 if (!strcmp(name, "vkCreatePipelineCache"))
15996 {
15997 return (void*)entry_vkCreatePipelineCache;
15998 }
15999 if (!strcmp(name, "vkDestroyPipelineCache"))
16000 {
16001 return (void*)entry_vkDestroyPipelineCache;
16002 }
16003 if (!strcmp(name, "vkGetPipelineCacheData"))
16004 {
16005 return (void*)entry_vkGetPipelineCacheData;
16006 }
16007 if (!strcmp(name, "vkMergePipelineCaches"))
16008 {
16009 return (void*)entry_vkMergePipelineCaches;
16010 }
16011 if (!strcmp(name, "vkCreateGraphicsPipelines"))
16012 {
16013 return (void*)entry_vkCreateGraphicsPipelines;
16014 }
16015 if (!strcmp(name, "vkCreateComputePipelines"))
16016 {
16017 return (void*)entry_vkCreateComputePipelines;
16018 }
16019 if (!strcmp(name, "vkDestroyPipeline"))
16020 {
16021 return (void*)entry_vkDestroyPipeline;
16022 }
16023 if (!strcmp(name, "vkCreatePipelineLayout"))
16024 {
16025 return (void*)entry_vkCreatePipelineLayout;
16026 }
16027 if (!strcmp(name, "vkDestroyPipelineLayout"))
16028 {
16029 return (void*)entry_vkDestroyPipelineLayout;
16030 }
16031 if (!strcmp(name, "vkCreateSampler"))
16032 {
16033 return (void*)entry_vkCreateSampler;
16034 }
16035 if (!strcmp(name, "vkDestroySampler"))
16036 {
16037 return (void*)entry_vkDestroySampler;
16038 }
16039 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
16040 {
16041 return (void*)entry_vkCreateDescriptorSetLayout;
16042 }
16043 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
16044 {
16045 return (void*)entry_vkDestroyDescriptorSetLayout;
16046 }
16047 if (!strcmp(name, "vkCreateDescriptorPool"))
16048 {
16049 return (void*)entry_vkCreateDescriptorPool;
16050 }
16051 if (!strcmp(name, "vkDestroyDescriptorPool"))
16052 {
16053 return (void*)entry_vkDestroyDescriptorPool;
16054 }
16055 if (!strcmp(name, "vkResetDescriptorPool"))
16056 {
16057 return (void*)entry_vkResetDescriptorPool;
16058 }
16059 if (!strcmp(name, "vkAllocateDescriptorSets"))
16060 {
16061 return (void*)entry_vkAllocateDescriptorSets;
16062 }
16063 if (!strcmp(name, "vkFreeDescriptorSets"))
16064 {
16065 return (void*)entry_vkFreeDescriptorSets;
16066 }
16067 if (!strcmp(name, "vkUpdateDescriptorSets"))
16068 {
16069 return (void*)entry_vkUpdateDescriptorSets;
16070 }
16071 if (!strcmp(name, "vkCreateFramebuffer"))
16072 {
16073 return (void*)entry_vkCreateFramebuffer;
16074 }
16075 if (!strcmp(name, "vkDestroyFramebuffer"))
16076 {
16077 return (void*)entry_vkDestroyFramebuffer;
16078 }
16079 if (!strcmp(name, "vkCreateRenderPass"))
16080 {
16081 return (void*)entry_vkCreateRenderPass;
16082 }
16083 if (!strcmp(name, "vkDestroyRenderPass"))
16084 {
16085 return (void*)entry_vkDestroyRenderPass;
16086 }
16087 if (!strcmp(name, "vkGetRenderAreaGranularity"))
16088 {
16089 return (void*)entry_vkGetRenderAreaGranularity;
16090 }
16091 if (!strcmp(name, "vkCreateCommandPool"))
16092 {
16093 return (void*)entry_vkCreateCommandPool;
16094 }
16095 if (!strcmp(name, "vkDestroyCommandPool"))
16096 {
16097 return (void*)entry_vkDestroyCommandPool;
16098 }
16099 if (!strcmp(name, "vkResetCommandPool"))
16100 {
16101 return (void*)entry_vkResetCommandPool;
16102 }
16103 if (!strcmp(name, "vkAllocateCommandBuffers"))
16104 {
16105 return (void*)entry_vkAllocateCommandBuffers;
16106 }
16107 if (!strcmp(name, "vkFreeCommandBuffers"))
16108 {
16109 return (void*)entry_vkFreeCommandBuffers;
16110 }
16111 if (!strcmp(name, "vkBeginCommandBuffer"))
16112 {
16113 return (void*)entry_vkBeginCommandBuffer;
16114 }
16115 if (!strcmp(name, "vkEndCommandBuffer"))
16116 {
16117 return (void*)entry_vkEndCommandBuffer;
16118 }
16119 if (!strcmp(name, "vkResetCommandBuffer"))
16120 {
16121 return (void*)entry_vkResetCommandBuffer;
16122 }
16123 if (!strcmp(name, "vkCmdBindPipeline"))
16124 {
16125 return (void*)entry_vkCmdBindPipeline;
16126 }
16127 if (!strcmp(name, "vkCmdSetViewport"))
16128 {
16129 return (void*)entry_vkCmdSetViewport;
16130 }
16131 if (!strcmp(name, "vkCmdSetScissor"))
16132 {
16133 return (void*)entry_vkCmdSetScissor;
16134 }
16135 if (!strcmp(name, "vkCmdSetLineWidth"))
16136 {
16137 return (void*)entry_vkCmdSetLineWidth;
16138 }
16139 if (!strcmp(name, "vkCmdSetDepthBias"))
16140 {
16141 return (void*)entry_vkCmdSetDepthBias;
16142 }
16143 if (!strcmp(name, "vkCmdSetBlendConstants"))
16144 {
16145 return (void*)entry_vkCmdSetBlendConstants;
16146 }
16147 if (!strcmp(name, "vkCmdSetDepthBounds"))
16148 {
16149 return (void*)entry_vkCmdSetDepthBounds;
16150 }
16151 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
16152 {
16153 return (void*)entry_vkCmdSetStencilCompareMask;
16154 }
16155 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
16156 {
16157 return (void*)entry_vkCmdSetStencilWriteMask;
16158 }
16159 if (!strcmp(name, "vkCmdSetStencilReference"))
16160 {
16161 return (void*)entry_vkCmdSetStencilReference;
16162 }
16163 if (!strcmp(name, "vkCmdBindDescriptorSets"))
16164 {
16165 return (void*)entry_vkCmdBindDescriptorSets;
16166 }
16167 if (!strcmp(name, "vkCmdBindIndexBuffer"))
16168 {
16169 return (void*)entry_vkCmdBindIndexBuffer;
16170 }
16171 if (!strcmp(name, "vkCmdBindVertexBuffers"))
16172 {
16173 return (void*)entry_vkCmdBindVertexBuffers;
16174 }
16175 if (!strcmp(name, "vkCmdDraw"))
16176 {
16177 return (void*)entry_vkCmdDraw;
16178 }
16179 if (!strcmp(name, "vkCmdDrawIndexed"))
16180 {
16181 return (void*)entry_vkCmdDrawIndexed;
16182 }
16183 if (!strcmp(name, "vkCmdDrawIndirect"))
16184 {
16185 return (void*)entry_vkCmdDrawIndirect;
16186 }
16187 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
16188 {
16189 return (void*)entry_vkCmdDrawIndexedIndirect;
16190 }
16191 if (!strcmp(name, "vkCmdDispatch"))
16192 {
16193 return (void*)entry_vkCmdDispatch;
16194 }
16195 if (!strcmp(name, "vkCmdDispatchIndirect"))
16196 {
16197 return (void*)entry_vkCmdDispatchIndirect;
16198 }
16199 if (!strcmp(name, "vkCmdCopyBuffer"))
16200 {
16201 return (void*)entry_vkCmdCopyBuffer;
16202 }
16203 if (!strcmp(name, "vkCmdCopyImage"))
16204 {
16205 return (void*)entry_vkCmdCopyImage;
16206 }
16207 if (!strcmp(name, "vkCmdBlitImage"))
16208 {
16209 return (void*)entry_vkCmdBlitImage;
16210 }
16211 if (!strcmp(name, "vkCmdCopyBufferToImage"))
16212 {
16213 return (void*)entry_vkCmdCopyBufferToImage;
16214 }
16215 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
16216 {
16217 return (void*)entry_vkCmdCopyImageToBuffer;
16218 }
16219 if (!strcmp(name, "vkCmdUpdateBuffer"))
16220 {
16221 return (void*)entry_vkCmdUpdateBuffer;
16222 }
16223 if (!strcmp(name, "vkCmdFillBuffer"))
16224 {
16225 return (void*)entry_vkCmdFillBuffer;
16226 }
16227 if (!strcmp(name, "vkCmdClearColorImage"))
16228 {
16229 return (void*)entry_vkCmdClearColorImage;
16230 }
16231 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
16232 {
16233 return (void*)entry_vkCmdClearDepthStencilImage;
16234 }
16235 if (!strcmp(name, "vkCmdClearAttachments"))
16236 {
16237 return (void*)entry_vkCmdClearAttachments;
16238 }
16239 if (!strcmp(name, "vkCmdResolveImage"))
16240 {
16241 return (void*)entry_vkCmdResolveImage;
16242 }
16243 if (!strcmp(name, "vkCmdSetEvent"))
16244 {
16245 return (void*)entry_vkCmdSetEvent;
16246 }
16247 if (!strcmp(name, "vkCmdResetEvent"))
16248 {
16249 return (void*)entry_vkCmdResetEvent;
16250 }
16251 if (!strcmp(name, "vkCmdWaitEvents"))
16252 {
16253 return (void*)entry_vkCmdWaitEvents;
16254 }
16255 if (!strcmp(name, "vkCmdPipelineBarrier"))
16256 {
16257 return (void*)entry_vkCmdPipelineBarrier;
16258 }
16259 if (!strcmp(name, "vkCmdBeginQuery"))
16260 {
16261 return (void*)entry_vkCmdBeginQuery;
16262 }
16263 if (!strcmp(name, "vkCmdEndQuery"))
16264 {
16265 return (void*)entry_vkCmdEndQuery;
16266 }
16267 if (!strcmp(name, "vkCmdResetQueryPool"))
16268 {
16269 return (void*)entry_vkCmdResetQueryPool;
16270 }
16271 if (!strcmp(name, "vkCmdWriteTimestamp"))
16272 {
16273 return (void*)entry_vkCmdWriteTimestamp;
16274 }
16275 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
16276 {
16277 return (void*)entry_vkCmdCopyQueryPoolResults;
16278 }
16279 if (!strcmp(name, "vkCmdPushConstants"))
16280 {
16281 return (void*)entry_vkCmdPushConstants;
16282 }
16283 if (!strcmp(name, "vkCmdBeginRenderPass"))
16284 {
16285 return (void*)entry_vkCmdBeginRenderPass;
16286 }
16287 if (!strcmp(name, "vkCmdNextSubpass"))
16288 {
16289 return (void*)entry_vkCmdNextSubpass;
16290 }
16291 if (!strcmp(name, "vkCmdEndRenderPass"))
16292 {
16293 return (void*)entry_vkCmdEndRenderPass;
16294 }
16295 if (!strcmp(name, "vkCmdExecuteCommands"))
16296 {
16297 return (void*)entry_vkCmdExecuteCommands;
16298 }
16299#endif
16300#ifdef VK_VERSION_1_1
16301 if (!strcmp(name, "vkEnumerateInstanceVersion"))
16302 {
16303 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
16304 }
16305 if (!strcmp(name, "vkBindBufferMemory2"))
16306 {
16307 return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
16308 }
16309 if (!strcmp(name, "vkBindImageMemory2"))
16310 {
16311 return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
16312 }
16313 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
16314 {
16315 return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
16316 }
16317 if (!strcmp(name, "vkCmdSetDeviceMask"))
16318 {
16319 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
16320 }
16321 if (!strcmp(name, "vkCmdDispatchBase"))
16322 {
16323 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
16324 }
16325 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
16326 {
16327 return nullptr;
16328 }
16329 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
16330 {
16331 return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
16332 }
16333 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
16334 {
16335 return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
16336 }
16337 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
16338 {
16339 return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
16340 }
16341 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
16342 {
16343 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
16344 }
16345 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
16346 {
16347 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
16348 }
16349 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
16350 {
16351 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
16352 }
16353 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
16354 {
16355 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
16356 }
16357 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
16358 {
16359 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
16360 }
16361 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
16362 {
16363 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
16364 }
16365 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
16366 {
16367 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
16368 }
16369 if (!strcmp(name, "vkTrimCommandPool"))
16370 {
16371 return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
16372 }
16373 if (!strcmp(name, "vkGetDeviceQueue2"))
16374 {
16375 return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
16376 }
16377 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
16378 {
16379 return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
16380 }
16381 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
16382 {
16383 return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
16384 }
16385 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
16386 {
16387 return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
16388 }
16389 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
16390 {
16391 return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
16392 }
16393 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
16394 {
16395 return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
16396 }
16397 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
16398 {
16399 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
16400 }
16401 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
16402 {
16403 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
16404 }
16405 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
16406 {
16407 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
16408 }
16409 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
16410 {
16411 return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
16412 }
16413#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080016414#ifdef VK_VERSION_1_2
16415 if (!strcmp(name, "vkCmdDrawIndirectCount"))
16416 {
16417 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
16418 return hasExt ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
16419 }
16420 if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
16421 {
16422 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
16423 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
16424 }
16425 if (!strcmp(name, "vkCreateRenderPass2"))
16426 {
16427 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
16428 return hasExt ? (void*)entry_vkCreateRenderPass2 : nullptr;
16429 }
16430 if (!strcmp(name, "vkCmdBeginRenderPass2"))
16431 {
16432 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
16433 return hasExt ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
16434 }
16435 if (!strcmp(name, "vkCmdNextSubpass2"))
16436 {
16437 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
16438 return hasExt ? (void*)entry_vkCmdNextSubpass2 : nullptr;
16439 }
16440 if (!strcmp(name, "vkCmdEndRenderPass2"))
16441 {
16442 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
16443 return hasExt ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
16444 }
16445 if (!strcmp(name, "vkResetQueryPool"))
16446 {
16447 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
16448 return hasExt ? (void*)entry_vkResetQueryPool : nullptr;
16449 }
16450 if (!strcmp(name, "vkGetSemaphoreCounterValue"))
16451 {
16452 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
16453 return hasExt ? (void*)entry_vkGetSemaphoreCounterValue : nullptr;
16454 }
16455 if (!strcmp(name, "vkWaitSemaphores"))
16456 {
16457 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
16458 return hasExt ? (void*)entry_vkWaitSemaphores : nullptr;
16459 }
16460 if (!strcmp(name, "vkSignalSemaphore"))
16461 {
16462 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
16463 return hasExt ? (void*)entry_vkSignalSemaphore : nullptr;
16464 }
16465 if (!strcmp(name, "vkGetBufferDeviceAddress"))
16466 {
16467 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
16468 return hasExt ? (void*)entry_vkGetBufferDeviceAddress : nullptr;
16469 }
16470 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
16471 {
16472 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
16473 return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddress : nullptr;
16474 }
16475 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
16476 {
16477 bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
16478 return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddress : nullptr;
16479 }
16480#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080016481#ifdef VK_KHR_surface
16482 if (!strcmp(name, "vkDestroySurfaceKHR"))
16483 {
16484 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
16485 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
16486 }
16487 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
16488 {
16489 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
16490 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
16491 }
16492 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
16493 {
16494 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
16495 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
16496 }
16497 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
16498 {
16499 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
16500 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
16501 }
16502 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
16503 {
16504 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
16505 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
16506 }
16507#endif
16508#ifdef VK_KHR_swapchain
16509 if (!strcmp(name, "vkCreateSwapchainKHR"))
16510 {
16511 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
16512 return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
16513 }
16514 if (!strcmp(name, "vkDestroySwapchainKHR"))
16515 {
16516 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
16517 return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
16518 }
16519 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
16520 {
16521 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
16522 return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
16523 }
16524 if (!strcmp(name, "vkAcquireNextImageKHR"))
16525 {
16526 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
16527 return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
16528 }
16529 if (!strcmp(name, "vkQueuePresentKHR"))
16530 {
16531 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
16532 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
16533 }
16534 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
16535 {
16536 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
16537 return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
16538 }
16539 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
16540 {
16541 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
16542 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
16543 }
16544 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
16545 {
16546 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
16547 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
16548 }
16549 if (!strcmp(name, "vkAcquireNextImage2KHR"))
16550 {
16551 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
16552 return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
16553 }
16554#endif
16555#ifdef VK_KHR_display
16556 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
16557 {
16558 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
16559 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
16560 }
16561 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
16562 {
16563 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
16564 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
16565 }
16566 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
16567 {
16568 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
16569 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
16570 }
16571 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
16572 {
16573 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
16574 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
16575 }
16576 if (!strcmp(name, "vkCreateDisplayModeKHR"))
16577 {
16578 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
16579 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
16580 }
16581 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
16582 {
16583 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
16584 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
16585 }
16586 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
16587 {
16588 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
16589 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
16590 }
16591#endif
16592#ifdef VK_KHR_display_swapchain
16593 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
16594 {
16595 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
16596 return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
16597 }
16598#endif
16599#ifdef VK_KHR_xlib_surface
16600 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
16601 {
16602 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
16603 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
16604 }
16605 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
16606 {
16607 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
16608 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
16609 }
16610#endif
16611#ifdef VK_KHR_xcb_surface
16612 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
16613 {
16614 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
16615 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
16616 }
16617 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
16618 {
16619 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
16620 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
16621 }
16622#endif
16623#ifdef VK_KHR_wayland_surface
16624 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
16625 {
16626 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
16627 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
16628 }
16629 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
16630 {
16631 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
16632 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
16633 }
16634#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080016635#ifdef VK_KHR_android_surface
16636 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
16637 {
16638 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
16639 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
16640 }
16641#endif
16642#ifdef VK_KHR_win32_surface
16643 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
16644 {
16645 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
16646 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
16647 }
16648 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
16649 {
16650 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
16651 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
16652 }
16653#endif
Yilong Li353409a2022-01-04 02:37:56 -080016654#ifdef VK_KHR_video_queue
16655 if (!strcmp(name, "vkGetPhysicalDeviceVideoCapabilitiesKHR"))
16656 {
16657 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
16658 return hasExt ? (void*)entry_vkGetPhysicalDeviceVideoCapabilitiesKHR : nullptr;
16659 }
16660 if (!strcmp(name, "vkGetPhysicalDeviceVideoFormatPropertiesKHR"))
16661 {
16662 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
16663 return hasExt ? (void*)entry_vkGetPhysicalDeviceVideoFormatPropertiesKHR : nullptr;
16664 }
16665 if (!strcmp(name, "vkCreateVideoSessionKHR"))
16666 {
16667 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
16668 return hasExt ? (void*)entry_vkCreateVideoSessionKHR : nullptr;
16669 }
16670 if (!strcmp(name, "vkDestroyVideoSessionKHR"))
16671 {
16672 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
16673 return hasExt ? (void*)entry_vkDestroyVideoSessionKHR : nullptr;
16674 }
16675 if (!strcmp(name, "vkGetVideoSessionMemoryRequirementsKHR"))
16676 {
16677 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
16678 return hasExt ? (void*)entry_vkGetVideoSessionMemoryRequirementsKHR : nullptr;
16679 }
16680 if (!strcmp(name, "vkBindVideoSessionMemoryKHR"))
16681 {
16682 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
16683 return hasExt ? (void*)entry_vkBindVideoSessionMemoryKHR : nullptr;
16684 }
16685 if (!strcmp(name, "vkCreateVideoSessionParametersKHR"))
16686 {
16687 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
16688 return hasExt ? (void*)entry_vkCreateVideoSessionParametersKHR : nullptr;
16689 }
16690 if (!strcmp(name, "vkUpdateVideoSessionParametersKHR"))
16691 {
16692 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
16693 return hasExt ? (void*)entry_vkUpdateVideoSessionParametersKHR : nullptr;
16694 }
16695 if (!strcmp(name, "vkDestroyVideoSessionParametersKHR"))
16696 {
16697 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
16698 return hasExt ? (void*)entry_vkDestroyVideoSessionParametersKHR : nullptr;
16699 }
16700 if (!strcmp(name, "vkCmdBeginVideoCodingKHR"))
16701 {
16702 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
16703 return hasExt ? (void*)entry_vkCmdBeginVideoCodingKHR : nullptr;
16704 }
16705 if (!strcmp(name, "vkCmdEndVideoCodingKHR"))
16706 {
16707 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
16708 return hasExt ? (void*)entry_vkCmdEndVideoCodingKHR : nullptr;
16709 }
16710 if (!strcmp(name, "vkCmdControlVideoCodingKHR"))
16711 {
16712 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
16713 return hasExt ? (void*)entry_vkCmdControlVideoCodingKHR : nullptr;
16714 }
16715#endif
16716#ifdef VK_KHR_video_decode_queue
16717 if (!strcmp(name, "vkCmdDecodeVideoKHR"))
16718 {
16719 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_decode_queue");
16720 return hasExt ? (void*)entry_vkCmdDecodeVideoKHR : nullptr;
16721 }
16722#endif
16723#ifdef VK_KHR_dynamic_rendering
16724 if (!strcmp(name, "vkCmdBeginRenderingKHR"))
16725 {
16726 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_dynamic_rendering");
16727 return hasExt ? (void*)entry_vkCmdBeginRenderingKHR : nullptr;
16728 }
16729 if (!strcmp(name, "vkCmdEndRenderingKHR"))
16730 {
16731 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_dynamic_rendering");
16732 return hasExt ? (void*)entry_vkCmdEndRenderingKHR : nullptr;
16733 }
16734#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080016735#ifdef VK_KHR_get_physical_device_properties2
16736 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
16737 {
16738 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
16739 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
16740 }
16741 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
16742 {
16743 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
16744 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
16745 }
16746 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
16747 {
16748 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
16749 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
16750 }
16751 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
16752 {
16753 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
16754 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
16755 }
16756 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
16757 {
16758 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
16759 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
16760 }
16761 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
16762 {
16763 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
16764 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
16765 }
16766 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
16767 {
16768 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
16769 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
16770 }
16771#endif
16772#ifdef VK_KHR_device_group
16773 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
16774 {
16775 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
16776 return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
16777 }
16778 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
16779 {
16780 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
16781 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
16782 }
16783 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
16784 {
16785 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
16786 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
16787 }
16788#endif
16789#ifdef VK_KHR_maintenance1
16790 if (!strcmp(name, "vkTrimCommandPoolKHR"))
16791 {
16792 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
16793 return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
16794 }
16795#endif
16796#ifdef VK_KHR_device_group_creation
16797 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
16798 {
16799 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
16800 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
16801 }
16802#endif
16803#ifdef VK_KHR_external_memory_capabilities
16804 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
16805 {
16806 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
16807 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
16808 }
16809#endif
16810#ifdef VK_KHR_external_memory_win32
16811 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
16812 {
16813 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
16814 return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
16815 }
16816 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
16817 {
16818 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
16819 return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
16820 }
16821#endif
16822#ifdef VK_KHR_external_memory_fd
16823 if (!strcmp(name, "vkGetMemoryFdKHR"))
16824 {
16825 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
16826 return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
16827 }
16828 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
16829 {
16830 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
16831 return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
16832 }
16833#endif
16834#ifdef VK_KHR_external_semaphore_capabilities
16835 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
16836 {
16837 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
16838 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
16839 }
16840#endif
16841#ifdef VK_KHR_external_semaphore_win32
16842 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
16843 {
16844 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
16845 return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
16846 }
16847 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
16848 {
16849 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
16850 return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
16851 }
16852#endif
16853#ifdef VK_KHR_external_semaphore_fd
16854 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
16855 {
16856 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
16857 return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
16858 }
16859 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
16860 {
16861 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
16862 return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
16863 }
16864#endif
16865#ifdef VK_KHR_push_descriptor
16866 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
16867 {
16868 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
16869 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
16870 }
16871 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
16872 {
16873 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
16874 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
16875 }
16876#endif
16877#ifdef VK_KHR_descriptor_update_template
16878 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
16879 {
16880 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
16881 return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
16882 }
16883 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
16884 {
16885 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
16886 return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
16887 }
16888 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
16889 {
16890 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
16891 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
16892 }
16893#endif
16894#ifdef VK_KHR_create_renderpass2
16895 if (!strcmp(name, "vkCreateRenderPass2KHR"))
16896 {
16897 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
16898 return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
16899 }
16900 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
16901 {
16902 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
16903 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
16904 }
16905 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
16906 {
16907 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
16908 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
16909 }
16910 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
16911 {
16912 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
16913 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
16914 }
16915#endif
16916#ifdef VK_KHR_shared_presentable_image
16917 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
16918 {
16919 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
16920 return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
16921 }
16922#endif
16923#ifdef VK_KHR_external_fence_capabilities
16924 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
16925 {
16926 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
16927 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
16928 }
16929#endif
16930#ifdef VK_KHR_external_fence_win32
16931 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
16932 {
16933 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
16934 return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
16935 }
16936 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
16937 {
16938 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
16939 return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
16940 }
16941#endif
16942#ifdef VK_KHR_external_fence_fd
16943 if (!strcmp(name, "vkImportFenceFdKHR"))
16944 {
16945 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
16946 return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
16947 }
16948 if (!strcmp(name, "vkGetFenceFdKHR"))
16949 {
16950 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
16951 return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
16952 }
16953#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080016954#ifdef VK_KHR_performance_query
16955 if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
16956 {
16957 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
16958 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
16959 }
16960 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
16961 {
16962 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
16963 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
16964 }
16965 if (!strcmp(name, "vkAcquireProfilingLockKHR"))
16966 {
16967 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
16968 return hasExt ? (void*)entry_vkAcquireProfilingLockKHR : nullptr;
16969 }
16970 if (!strcmp(name, "vkReleaseProfilingLockKHR"))
16971 {
16972 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
16973 return hasExt ? (void*)entry_vkReleaseProfilingLockKHR : nullptr;
16974 }
16975#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080016976#ifdef VK_KHR_get_surface_capabilities2
16977 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
16978 {
16979 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
16980 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
16981 }
16982 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
16983 {
16984 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
16985 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
16986 }
16987#endif
16988#ifdef VK_KHR_get_display_properties2
16989 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
16990 {
16991 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
16992 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
16993 }
16994 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
16995 {
16996 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
16997 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
16998 }
16999 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
17000 {
17001 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
17002 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
17003 }
17004 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
17005 {
17006 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
17007 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
17008 }
17009#endif
17010#ifdef VK_KHR_get_memory_requirements2
17011 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
17012 {
17013 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
17014 return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
17015 }
17016 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
17017 {
17018 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
17019 return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
17020 }
17021 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
17022 {
17023 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
17024 return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
17025 }
17026#endif
17027#ifdef VK_KHR_sampler_ycbcr_conversion
17028 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
17029 {
17030 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
17031 return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
17032 }
17033 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
17034 {
17035 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
17036 return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
17037 }
17038#endif
17039#ifdef VK_KHR_bind_memory2
17040 if (!strcmp(name, "vkBindBufferMemory2KHR"))
17041 {
17042 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
17043 return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
17044 }
17045 if (!strcmp(name, "vkBindImageMemory2KHR"))
17046 {
17047 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
17048 return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
17049 }
17050#endif
17051#ifdef VK_KHR_maintenance3
17052 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
17053 {
17054 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
17055 return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
17056 }
17057#endif
17058#ifdef VK_KHR_draw_indirect_count
17059 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
17060 {
17061 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
17062 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
17063 }
17064 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
17065 {
17066 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
17067 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
17068 }
17069#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080017070#ifdef VK_KHR_timeline_semaphore
17071 if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
17072 {
17073 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
17074 return hasExt ? (void*)entry_vkGetSemaphoreCounterValueKHR : nullptr;
17075 }
17076 if (!strcmp(name, "vkWaitSemaphoresKHR"))
17077 {
17078 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
17079 return hasExt ? (void*)entry_vkWaitSemaphoresKHR : nullptr;
17080 }
17081 if (!strcmp(name, "vkSignalSemaphoreKHR"))
17082 {
17083 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
17084 return hasExt ? (void*)entry_vkSignalSemaphoreKHR : nullptr;
17085 }
17086#endif
17087#ifdef VK_KHR_fragment_shading_rate
17088 if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
17089 {
17090 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
17091 return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
17092 }
17093 if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
17094 {
17095 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
17096 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateKHR : nullptr;
17097 }
17098#endif
Yilong Li353409a2022-01-04 02:37:56 -080017099#ifdef VK_KHR_present_wait
17100 if (!strcmp(name, "vkWaitForPresentKHR"))
17101 {
17102 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_present_wait");
17103 return hasExt ? (void*)entry_vkWaitForPresentKHR : nullptr;
17104 }
17105#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080017106#ifdef VK_KHR_buffer_device_address
17107 if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
17108 {
17109 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
17110 return hasExt ? (void*)entry_vkGetBufferDeviceAddressKHR : nullptr;
17111 }
17112 if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
17113 {
17114 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
17115 return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddressKHR : nullptr;
17116 }
17117 if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
17118 {
17119 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
17120 return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR : nullptr;
17121 }
17122#endif
17123#ifdef VK_KHR_deferred_host_operations
17124 if (!strcmp(name, "vkCreateDeferredOperationKHR"))
17125 {
17126 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
17127 return hasExt ? (void*)entry_vkCreateDeferredOperationKHR : nullptr;
17128 }
17129 if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
17130 {
17131 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
17132 return hasExt ? (void*)entry_vkDestroyDeferredOperationKHR : nullptr;
17133 }
17134 if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
17135 {
17136 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
17137 return hasExt ? (void*)entry_vkGetDeferredOperationMaxConcurrencyKHR : nullptr;
17138 }
17139 if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
17140 {
17141 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
17142 return hasExt ? (void*)entry_vkGetDeferredOperationResultKHR : nullptr;
17143 }
17144 if (!strcmp(name, "vkDeferredOperationJoinKHR"))
17145 {
17146 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
17147 return hasExt ? (void*)entry_vkDeferredOperationJoinKHR : nullptr;
17148 }
17149#endif
17150#ifdef VK_KHR_pipeline_executable_properties
17151 if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
17152 {
17153 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
17154 return hasExt ? (void*)entry_vkGetPipelineExecutablePropertiesKHR : nullptr;
17155 }
17156 if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
17157 {
17158 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
17159 return hasExt ? (void*)entry_vkGetPipelineExecutableStatisticsKHR : nullptr;
17160 }
17161 if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
17162 {
17163 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
17164 return hasExt ? (void*)entry_vkGetPipelineExecutableInternalRepresentationsKHR : nullptr;
17165 }
17166#endif
Yilong Li353409a2022-01-04 02:37:56 -080017167#ifdef VK_KHR_video_encode_queue
17168 if (!strcmp(name, "vkCmdEncodeVideoKHR"))
17169 {
17170 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_encode_queue");
17171 return hasExt ? (void*)entry_vkCmdEncodeVideoKHR : nullptr;
17172 }
17173#endif
17174#ifdef VK_KHR_synchronization2
17175 if (!strcmp(name, "vkCmdSetEvent2KHR"))
17176 {
17177 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
17178 return hasExt ? (void*)entry_vkCmdSetEvent2KHR : nullptr;
17179 }
17180 if (!strcmp(name, "vkCmdResetEvent2KHR"))
17181 {
17182 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
17183 return hasExt ? (void*)entry_vkCmdResetEvent2KHR : nullptr;
17184 }
17185 if (!strcmp(name, "vkCmdWaitEvents2KHR"))
17186 {
17187 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
17188 return hasExt ? (void*)entry_vkCmdWaitEvents2KHR : nullptr;
17189 }
17190 if (!strcmp(name, "vkCmdPipelineBarrier2KHR"))
17191 {
17192 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
17193 return hasExt ? (void*)entry_vkCmdPipelineBarrier2KHR : nullptr;
17194 }
17195 if (!strcmp(name, "vkCmdWriteTimestamp2KHR"))
17196 {
17197 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
17198 return hasExt ? (void*)entry_vkCmdWriteTimestamp2KHR : nullptr;
17199 }
17200 if (!strcmp(name, "vkQueueSubmit2KHR"))
17201 {
17202 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
17203 return hasExt ? (void*)entry_vkQueueSubmit2KHR : nullptr;
17204 }
17205 if (!strcmp(name, "vkCmdWriteBufferMarker2AMD"))
17206 {
17207 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
17208 return hasExt ? (void*)entry_vkCmdWriteBufferMarker2AMD : nullptr;
17209 }
17210 if (!strcmp(name, "vkGetQueueCheckpointData2NV"))
17211 {
17212 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
17213 return hasExt ? (void*)entry_vkGetQueueCheckpointData2NV : nullptr;
17214 }
17215#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080017216#ifdef VK_KHR_copy_commands2
17217 if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
17218 {
17219 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
17220 return hasExt ? (void*)entry_vkCmdCopyBuffer2KHR : nullptr;
17221 }
17222 if (!strcmp(name, "vkCmdCopyImage2KHR"))
17223 {
17224 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
17225 return hasExt ? (void*)entry_vkCmdCopyImage2KHR : nullptr;
17226 }
17227 if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
17228 {
17229 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
17230 return hasExt ? (void*)entry_vkCmdCopyBufferToImage2KHR : nullptr;
17231 }
17232 if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
17233 {
17234 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
17235 return hasExt ? (void*)entry_vkCmdCopyImageToBuffer2KHR : nullptr;
17236 }
17237 if (!strcmp(name, "vkCmdBlitImage2KHR"))
17238 {
17239 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
17240 return hasExt ? (void*)entry_vkCmdBlitImage2KHR : nullptr;
17241 }
17242 if (!strcmp(name, "vkCmdResolveImage2KHR"))
17243 {
17244 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
17245 return hasExt ? (void*)entry_vkCmdResolveImage2KHR : nullptr;
17246 }
17247#endif
Yilong Li353409a2022-01-04 02:37:56 -080017248#ifdef VK_KHR_maintenance4
17249 if (!strcmp(name, "vkGetDeviceBufferMemoryRequirementsKHR"))
17250 {
17251 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance4");
17252 return hasExt ? (void*)entry_vkGetDeviceBufferMemoryRequirementsKHR : nullptr;
17253 }
17254 if (!strcmp(name, "vkGetDeviceImageMemoryRequirementsKHR"))
17255 {
17256 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance4");
17257 return hasExt ? (void*)entry_vkGetDeviceImageMemoryRequirementsKHR : nullptr;
17258 }
17259 if (!strcmp(name, "vkGetDeviceImageSparseMemoryRequirementsKHR"))
17260 {
17261 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance4");
17262 return hasExt ? (void*)entry_vkGetDeviceImageSparseMemoryRequirementsKHR : nullptr;
17263 }
17264#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080017265#ifdef VK_ANDROID_native_buffer
17266 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
17267 {
17268 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
17269 return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
17270 }
17271 if (!strcmp(name, "vkAcquireImageANDROID"))
17272 {
17273 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
17274 return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
17275 }
17276 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
17277 {
17278 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
17279 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
17280 }
17281#endif
17282#ifdef VK_EXT_debug_report
17283 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
17284 {
17285 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
17286 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
17287 }
17288 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
17289 {
17290 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
17291 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
17292 }
17293 if (!strcmp(name, "vkDebugReportMessageEXT"))
17294 {
17295 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
17296 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
17297 }
17298#endif
17299#ifdef VK_EXT_debug_marker
17300 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
17301 {
17302 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
17303 return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
17304 }
17305 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
17306 {
17307 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
17308 return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
17309 }
17310 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
17311 {
17312 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
17313 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
17314 }
17315 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
17316 {
17317 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
17318 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
17319 }
17320 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
17321 {
17322 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
17323 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
17324 }
17325#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080017326#ifdef VK_EXT_transform_feedback
17327 if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
17328 {
17329 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
17330 return hasExt ? (void*)entry_vkCmdBindTransformFeedbackBuffersEXT : nullptr;
17331 }
17332 if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
17333 {
17334 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
17335 return hasExt ? (void*)entry_vkCmdBeginTransformFeedbackEXT : nullptr;
17336 }
17337 if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
17338 {
17339 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
17340 return hasExt ? (void*)entry_vkCmdEndTransformFeedbackEXT : nullptr;
17341 }
17342 if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
17343 {
17344 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
17345 return hasExt ? (void*)entry_vkCmdBeginQueryIndexedEXT : nullptr;
17346 }
17347 if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
17348 {
17349 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
17350 return hasExt ? (void*)entry_vkCmdEndQueryIndexedEXT : nullptr;
17351 }
17352 if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
17353 {
17354 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
17355 return hasExt ? (void*)entry_vkCmdDrawIndirectByteCountEXT : nullptr;
17356 }
17357#endif
Yilong Li353409a2022-01-04 02:37:56 -080017358#ifdef VK_NVX_binary_import
17359 if (!strcmp(name, "vkCreateCuModuleNVX"))
17360 {
17361 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
17362 return hasExt ? (void*)entry_vkCreateCuModuleNVX : nullptr;
17363 }
17364 if (!strcmp(name, "vkCreateCuFunctionNVX"))
17365 {
17366 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
17367 return hasExt ? (void*)entry_vkCreateCuFunctionNVX : nullptr;
17368 }
17369 if (!strcmp(name, "vkDestroyCuModuleNVX"))
17370 {
17371 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
17372 return hasExt ? (void*)entry_vkDestroyCuModuleNVX : nullptr;
17373 }
17374 if (!strcmp(name, "vkDestroyCuFunctionNVX"))
17375 {
17376 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
17377 return hasExt ? (void*)entry_vkDestroyCuFunctionNVX : nullptr;
17378 }
17379 if (!strcmp(name, "vkCmdCuLaunchKernelNVX"))
17380 {
17381 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
17382 return hasExt ? (void*)entry_vkCmdCuLaunchKernelNVX : nullptr;
17383 }
17384#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080017385#ifdef VK_NVX_image_view_handle
17386 if (!strcmp(name, "vkGetImageViewHandleNVX"))
17387 {
17388 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
17389 return hasExt ? (void*)entry_vkGetImageViewHandleNVX : nullptr;
17390 }
17391 if (!strcmp(name, "vkGetImageViewAddressNVX"))
17392 {
17393 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
17394 return hasExt ? (void*)entry_vkGetImageViewAddressNVX : nullptr;
17395 }
17396#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080017397#ifdef VK_AMD_draw_indirect_count
17398 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
17399 {
17400 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
17401 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
17402 }
17403 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
17404 {
17405 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
17406 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
17407 }
17408#endif
17409#ifdef VK_AMD_shader_info
17410 if (!strcmp(name, "vkGetShaderInfoAMD"))
17411 {
17412 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
17413 return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
17414 }
17415#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080017416#ifdef VK_GGP_stream_descriptor_surface
17417 if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
17418 {
17419 bool hasExt = resources->hasDeviceExtension(device, "VK_GGP_stream_descriptor_surface");
17420 return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
17421 }
17422#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080017423#ifdef VK_NV_external_memory_capabilities
17424 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
17425 {
17426 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
17427 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
17428 }
17429#endif
17430#ifdef VK_NV_external_memory_win32
17431 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
17432 {
17433 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
17434 return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
17435 }
17436#endif
17437#ifdef VK_NN_vi_surface
17438 if (!strcmp(name, "vkCreateViSurfaceNN"))
17439 {
17440 bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
17441 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
17442 }
17443#endif
17444#ifdef VK_EXT_conditional_rendering
17445 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
17446 {
17447 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
17448 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
17449 }
17450 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
17451 {
17452 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
17453 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
17454 }
17455#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080017456#ifdef VK_NV_clip_space_w_scaling
17457 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
17458 {
17459 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
17460 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
17461 }
17462#endif
17463#ifdef VK_EXT_direct_mode_display
17464 if (!strcmp(name, "vkReleaseDisplayEXT"))
17465 {
17466 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
17467 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
17468 }
17469#endif
17470#ifdef VK_EXT_acquire_xlib_display
17471 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
17472 {
17473 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
17474 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
17475 }
17476 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
17477 {
17478 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
17479 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
17480 }
17481#endif
17482#ifdef VK_EXT_display_surface_counter
17483 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
17484 {
17485 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
17486 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
17487 }
17488#endif
17489#ifdef VK_EXT_display_control
17490 if (!strcmp(name, "vkDisplayPowerControlEXT"))
17491 {
17492 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
17493 return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
17494 }
17495 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
17496 {
17497 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
17498 return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
17499 }
17500 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
17501 {
17502 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
17503 return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
17504 }
17505 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
17506 {
17507 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
17508 return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
17509 }
17510#endif
17511#ifdef VK_GOOGLE_display_timing
17512 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
17513 {
17514 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
17515 return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
17516 }
17517 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
17518 {
17519 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
17520 return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
17521 }
17522#endif
17523#ifdef VK_EXT_discard_rectangles
17524 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
17525 {
17526 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
17527 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
17528 }
17529#endif
17530#ifdef VK_EXT_hdr_metadata
17531 if (!strcmp(name, "vkSetHdrMetadataEXT"))
17532 {
17533 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
17534 return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
17535 }
17536#endif
17537#ifdef VK_MVK_ios_surface
17538 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
17539 {
17540 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
17541 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
17542 }
17543#endif
17544#ifdef VK_MVK_macos_surface
17545 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
17546 {
17547 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
17548 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
17549 }
17550#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080017551#ifdef VK_MVK_moltenvk
17552 if (!strcmp(name, "vkGetMTLDeviceMVK"))
17553 {
17554 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
17555 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
17556 }
17557 if (!strcmp(name, "vkSetMTLTextureMVK"))
17558 {
17559 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
17560 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
17561 }
17562 if (!strcmp(name, "vkGetMTLTextureMVK"))
17563 {
17564 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
17565 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
17566 }
17567 if (!strcmp(name, "vkGetMTLBufferMVK"))
17568 {
17569 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
17570 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
17571 }
17572 if (!strcmp(name, "vkUseIOSurfaceMVK"))
17573 {
17574 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
17575 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
17576 }
17577 if (!strcmp(name, "vkGetIOSurfaceMVK"))
17578 {
17579 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
17580 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
17581 }
17582#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080017583#ifdef VK_EXT_debug_utils
17584 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
17585 {
17586 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
17587 return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
17588 }
17589 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
17590 {
17591 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
17592 return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
17593 }
17594 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
17595 {
17596 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
17597 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
17598 }
17599 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
17600 {
17601 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
17602 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
17603 }
17604 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
17605 {
17606 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
17607 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
17608 }
17609 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
17610 {
17611 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
17612 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
17613 }
17614 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
17615 {
17616 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
17617 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
17618 }
17619 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
17620 {
17621 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
17622 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
17623 }
17624 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
17625 {
17626 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
17627 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
17628 }
17629 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
17630 {
17631 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
17632 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
17633 }
17634 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
17635 {
17636 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
17637 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
17638 }
17639#endif
17640#ifdef VK_ANDROID_external_memory_android_hardware_buffer
17641 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
17642 {
17643 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
17644 return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
17645 }
17646 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
17647 {
17648 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
17649 return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
17650 }
17651#endif
17652#ifdef VK_EXT_sample_locations
17653 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
17654 {
17655 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
17656 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
17657 }
17658 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
17659 {
17660 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
17661 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
17662 }
17663#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080017664#ifdef VK_EXT_image_drm_format_modifier
17665 if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
17666 {
17667 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier");
17668 return hasExt ? (void*)entry_vkGetImageDrmFormatModifierPropertiesEXT : nullptr;
17669 }
17670#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080017671#ifdef VK_EXT_validation_cache
17672 if (!strcmp(name, "vkCreateValidationCacheEXT"))
17673 {
17674 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
17675 return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
17676 }
17677 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
17678 {
17679 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
17680 return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
17681 }
17682 if (!strcmp(name, "vkMergeValidationCachesEXT"))
17683 {
17684 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
17685 return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
17686 }
17687 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
17688 {
17689 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
17690 return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
17691 }
17692#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080017693#ifdef VK_NV_shading_rate_image
17694 if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
17695 {
17696 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
17697 return hasExt ? (void*)entry_vkCmdBindShadingRateImageNV : nullptr;
17698 }
17699 if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
17700 {
17701 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
17702 return hasExt ? (void*)entry_vkCmdSetViewportShadingRatePaletteNV : nullptr;
17703 }
17704 if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
17705 {
17706 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
17707 return hasExt ? (void*)entry_vkCmdSetCoarseSampleOrderNV : nullptr;
17708 }
17709#endif
17710#ifdef VK_NV_ray_tracing
17711 if (!strcmp(name, "vkCreateAccelerationStructureNV"))
17712 {
17713 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
17714 return hasExt ? (void*)entry_vkCreateAccelerationStructureNV : nullptr;
17715 }
17716 if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
17717 {
17718 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
17719 return hasExt ? (void*)entry_vkDestroyAccelerationStructureNV : nullptr;
17720 }
17721 if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
17722 {
17723 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
17724 return hasExt ? (void*)entry_vkGetAccelerationStructureMemoryRequirementsNV : nullptr;
17725 }
17726 if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
17727 {
17728 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
17729 return hasExt ? (void*)entry_vkBindAccelerationStructureMemoryNV : nullptr;
17730 }
17731 if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
17732 {
17733 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
17734 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructureNV : nullptr;
17735 }
17736 if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
17737 {
17738 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
17739 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureNV : nullptr;
17740 }
17741 if (!strcmp(name, "vkCmdTraceRaysNV"))
17742 {
17743 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
17744 return hasExt ? (void*)entry_vkCmdTraceRaysNV : nullptr;
17745 }
17746 if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
17747 {
17748 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
17749 return hasExt ? (void*)entry_vkCreateRayTracingPipelinesNV : nullptr;
17750 }
17751 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
17752 {
17753 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
17754 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesKHR : nullptr;
17755 }
17756 if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
17757 {
17758 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
17759 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesNV : nullptr;
17760 }
17761 if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
17762 {
17763 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
17764 return hasExt ? (void*)entry_vkGetAccelerationStructureHandleNV : nullptr;
17765 }
17766 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
17767 {
17768 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
17769 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesNV : nullptr;
17770 }
17771 if (!strcmp(name, "vkCompileDeferredNV"))
17772 {
17773 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
17774 return hasExt ? (void*)entry_vkCompileDeferredNV : nullptr;
17775 }
17776#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080017777#ifdef VK_EXT_external_memory_host
17778 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
17779 {
17780 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
17781 return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
17782 }
17783#endif
17784#ifdef VK_AMD_buffer_marker
17785 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
17786 {
17787 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
17788 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
17789 }
17790#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080017791#ifdef VK_EXT_calibrated_timestamps
17792 if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
17793 {
17794 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
17795 return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
17796 }
17797 if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
17798 {
17799 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
17800 return hasExt ? (void*)entry_vkGetCalibratedTimestampsEXT : nullptr;
17801 }
17802#endif
17803#ifdef VK_NV_mesh_shader
17804 if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
17805 {
17806 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
17807 return hasExt ? (void*)entry_vkCmdDrawMeshTasksNV : nullptr;
17808 }
17809 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
17810 {
17811 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
17812 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectNV : nullptr;
17813 }
17814 if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
17815 {
17816 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
17817 return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountNV : nullptr;
17818 }
17819#endif
17820#ifdef VK_NV_scissor_exclusive
17821 if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
17822 {
17823 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_scissor_exclusive");
17824 return hasExt ? (void*)entry_vkCmdSetExclusiveScissorNV : nullptr;
17825 }
17826#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080017827#ifdef VK_NV_device_diagnostic_checkpoints
17828 if (!strcmp(name, "vkCmdSetCheckpointNV"))
17829 {
17830 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
17831 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
17832 }
17833 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
17834 {
17835 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
17836 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
17837 }
17838#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080017839#ifdef VK_INTEL_performance_query
17840 if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
Lingfeng Yangf0654ff2019-02-02 12:21:24 -080017841 {
Yilong Lia8d45f12021-02-07 02:30:21 -080017842 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
17843 return hasExt ? (void*)entry_vkInitializePerformanceApiINTEL : nullptr;
17844 }
17845 if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
17846 {
17847 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
17848 return hasExt ? (void*)entry_vkUninitializePerformanceApiINTEL : nullptr;
17849 }
17850 if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
17851 {
17852 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
17853 return hasExt ? (void*)entry_vkCmdSetPerformanceMarkerINTEL : nullptr;
17854 }
17855 if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
17856 {
17857 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
17858 return hasExt ? (void*)entry_vkCmdSetPerformanceStreamMarkerINTEL : nullptr;
17859 }
17860 if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
17861 {
17862 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
17863 return hasExt ? (void*)entry_vkCmdSetPerformanceOverrideINTEL : nullptr;
17864 }
17865 if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
17866 {
17867 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
17868 return hasExt ? (void*)entry_vkAcquirePerformanceConfigurationINTEL : nullptr;
17869 }
17870 if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
17871 {
17872 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
17873 return hasExt ? (void*)entry_vkReleasePerformanceConfigurationINTEL : nullptr;
17874 }
17875 if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
17876 {
17877 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
17878 return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
17879 }
17880 if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
17881 {
17882 bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
17883 return hasExt ? (void*)entry_vkGetPerformanceParameterINTEL : nullptr;
17884 }
17885#endif
17886#ifdef VK_AMD_display_native_hdr
17887 if (!strcmp(name, "vkSetLocalDimmingAMD"))
17888 {
17889 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr");
17890 return hasExt ? (void*)entry_vkSetLocalDimmingAMD : nullptr;
17891 }
17892#endif
17893#ifdef VK_FUCHSIA_imagepipe_surface
17894 if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
17895 {
17896 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_imagepipe_surface");
17897 return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
17898 }
17899#endif
17900#ifdef VK_EXT_metal_surface
17901 if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
17902 {
17903 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_metal_surface");
17904 return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080017905 }
17906#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080017907#ifdef VK_EXT_buffer_device_address
17908 if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
17909 {
17910 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address");
17911 return hasExt ? (void*)entry_vkGetBufferDeviceAddressEXT : nullptr;
17912 }
17913#endif
17914#ifdef VK_EXT_tooling_info
17915 if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
17916 {
17917 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_tooling_info");
17918 return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
17919 }
17920#endif
17921#ifdef VK_NV_cooperative_matrix
17922 if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
17923 {
17924 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_cooperative_matrix");
17925 return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
17926 }
17927#endif
17928#ifdef VK_NV_coverage_reduction_mode
17929 if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
17930 {
17931 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_coverage_reduction_mode");
17932 return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
17933 }
17934#endif
17935#ifdef VK_EXT_full_screen_exclusive
17936 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
17937 {
17938 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
17939 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
17940 }
17941 if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
17942 {
17943 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
17944 return hasExt ? (void*)entry_vkAcquireFullScreenExclusiveModeEXT : nullptr;
17945 }
17946 if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
17947 {
17948 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
17949 return hasExt ? (void*)entry_vkReleaseFullScreenExclusiveModeEXT : nullptr;
17950 }
17951 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
17952 {
17953 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
17954 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModes2EXT : nullptr;
17955 }
17956#endif
17957#ifdef VK_EXT_headless_surface
17958 if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
17959 {
17960 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_headless_surface");
17961 return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
17962 }
17963#endif
17964#ifdef VK_EXT_line_rasterization
17965 if (!strcmp(name, "vkCmdSetLineStippleEXT"))
17966 {
17967 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_line_rasterization");
17968 return hasExt ? (void*)entry_vkCmdSetLineStippleEXT : nullptr;
17969 }
17970#endif
17971#ifdef VK_EXT_host_query_reset
17972 if (!strcmp(name, "vkResetQueryPoolEXT"))
17973 {
17974 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_host_query_reset");
17975 return hasExt ? (void*)entry_vkResetQueryPoolEXT : nullptr;
17976 }
17977#endif
17978#ifdef VK_EXT_extended_dynamic_state
17979 if (!strcmp(name, "vkCmdSetCullModeEXT"))
17980 {
17981 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
17982 return hasExt ? (void*)entry_vkCmdSetCullModeEXT : nullptr;
17983 }
17984 if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
17985 {
17986 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
17987 return hasExt ? (void*)entry_vkCmdSetFrontFaceEXT : nullptr;
17988 }
17989 if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
17990 {
17991 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
17992 return hasExt ? (void*)entry_vkCmdSetPrimitiveTopologyEXT : nullptr;
17993 }
17994 if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
17995 {
17996 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
17997 return hasExt ? (void*)entry_vkCmdSetViewportWithCountEXT : nullptr;
17998 }
17999 if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
18000 {
18001 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
18002 return hasExt ? (void*)entry_vkCmdSetScissorWithCountEXT : nullptr;
18003 }
18004 if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
18005 {
18006 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
18007 return hasExt ? (void*)entry_vkCmdBindVertexBuffers2EXT : nullptr;
18008 }
18009 if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
18010 {
18011 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
18012 return hasExt ? (void*)entry_vkCmdSetDepthTestEnableEXT : nullptr;
18013 }
18014 if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
18015 {
18016 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
18017 return hasExt ? (void*)entry_vkCmdSetDepthWriteEnableEXT : nullptr;
18018 }
18019 if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
18020 {
18021 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
18022 return hasExt ? (void*)entry_vkCmdSetDepthCompareOpEXT : nullptr;
18023 }
18024 if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
18025 {
18026 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
18027 return hasExt ? (void*)entry_vkCmdSetDepthBoundsTestEnableEXT : nullptr;
18028 }
18029 if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
18030 {
18031 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
18032 return hasExt ? (void*)entry_vkCmdSetStencilTestEnableEXT : nullptr;
18033 }
18034 if (!strcmp(name, "vkCmdSetStencilOpEXT"))
18035 {
18036 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
18037 return hasExt ? (void*)entry_vkCmdSetStencilOpEXT : nullptr;
18038 }
18039#endif
18040#ifdef VK_NV_device_generated_commands
18041 if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
18042 {
18043 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
18044 return hasExt ? (void*)entry_vkGetGeneratedCommandsMemoryRequirementsNV : nullptr;
18045 }
18046 if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
18047 {
18048 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
18049 return hasExt ? (void*)entry_vkCmdPreprocessGeneratedCommandsNV : nullptr;
18050 }
18051 if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
18052 {
18053 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
18054 return hasExt ? (void*)entry_vkCmdExecuteGeneratedCommandsNV : nullptr;
18055 }
18056 if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
18057 {
18058 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
18059 return hasExt ? (void*)entry_vkCmdBindPipelineShaderGroupNV : nullptr;
18060 }
18061 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
18062 {
18063 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
18064 return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNV : nullptr;
18065 }
18066 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
18067 {
18068 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
18069 return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNV : nullptr;
18070 }
18071#endif
Yilong Li353409a2022-01-04 02:37:56 -080018072#ifdef VK_EXT_acquire_drm_display
18073 if (!strcmp(name, "vkAcquireDrmDisplayEXT"))
18074 {
18075 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_drm_display");
18076 return hasExt ? (void*)entry_vkAcquireDrmDisplayEXT : nullptr;
18077 }
18078 if (!strcmp(name, "vkGetDrmDisplayEXT"))
18079 {
18080 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_drm_display");
18081 return hasExt ? (void*)entry_vkGetDrmDisplayEXT : nullptr;
18082 }
18083#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080018084#ifdef VK_EXT_private_data
18085 if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
18086 {
18087 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
18088 return hasExt ? (void*)entry_vkCreatePrivateDataSlotEXT : nullptr;
18089 }
18090 if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
18091 {
18092 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
18093 return hasExt ? (void*)entry_vkDestroyPrivateDataSlotEXT : nullptr;
18094 }
18095 if (!strcmp(name, "vkSetPrivateDataEXT"))
18096 {
18097 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
18098 return hasExt ? (void*)entry_vkSetPrivateDataEXT : nullptr;
18099 }
18100 if (!strcmp(name, "vkGetPrivateDataEXT"))
18101 {
18102 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
18103 return hasExt ? (void*)entry_vkGetPrivateDataEXT : nullptr;
18104 }
18105#endif
18106#ifdef VK_NV_fragment_shading_rate_enums
18107 if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
18108 {
18109 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_fragment_shading_rate_enums");
18110 return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateEnumNV : nullptr;
18111 }
18112#endif
Yilong Li353409a2022-01-04 02:37:56 -080018113#ifdef VK_NV_acquire_winrt_display
18114 if (!strcmp(name, "vkAcquireWinrtDisplayNV"))
18115 {
18116 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_acquire_winrt_display");
18117 return hasExt ? (void*)entry_vkAcquireWinrtDisplayNV : nullptr;
18118 }
18119 if (!strcmp(name, "vkGetWinrtDisplayNV"))
18120 {
18121 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_acquire_winrt_display");
18122 return hasExt ? (void*)entry_vkGetWinrtDisplayNV : nullptr;
18123 }
18124#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080018125#ifdef VK_EXT_directfb_surface
18126 if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
18127 {
18128 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
18129 return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
18130 }
18131 if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
18132 {
18133 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
18134 return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
18135 }
18136#endif
Yilong Li353409a2022-01-04 02:37:56 -080018137#ifdef VK_EXT_vertex_input_dynamic_state
18138 if (!strcmp(name, "vkCmdSetVertexInputEXT"))
18139 {
18140 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_vertex_input_dynamic_state");
18141 return hasExt ? (void*)entry_vkCmdSetVertexInputEXT : nullptr;
18142 }
18143#endif
18144#ifdef VK_FUCHSIA_external_memory
18145 if (!strcmp(name, "vkGetMemoryZirconHandleFUCHSIA"))
18146 {
18147 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_external_memory");
18148 return hasExt ? (void*)entry_vkGetMemoryZirconHandleFUCHSIA : nullptr;
18149 }
18150 if (!strcmp(name, "vkGetMemoryZirconHandlePropertiesFUCHSIA"))
18151 {
18152 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_external_memory");
18153 return hasExt ? (void*)entry_vkGetMemoryZirconHandlePropertiesFUCHSIA : nullptr;
18154 }
18155#endif
18156#ifdef VK_FUCHSIA_external_semaphore
18157 if (!strcmp(name, "vkImportSemaphoreZirconHandleFUCHSIA"))
18158 {
18159 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_external_semaphore");
18160 return hasExt ? (void*)entry_vkImportSemaphoreZirconHandleFUCHSIA : nullptr;
18161 }
18162 if (!strcmp(name, "vkGetSemaphoreZirconHandleFUCHSIA"))
18163 {
18164 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_external_semaphore");
18165 return hasExt ? (void*)entry_vkGetSemaphoreZirconHandleFUCHSIA : nullptr;
18166 }
18167#endif
18168#ifdef VK_FUCHSIA_buffer_collection
18169 if (!strcmp(name, "vkCreateBufferCollectionFUCHSIA"))
18170 {
18171 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
18172 return hasExt ? (void*)entry_vkCreateBufferCollectionFUCHSIA : nullptr;
18173 }
18174 if (!strcmp(name, "vkSetBufferCollectionImageConstraintsFUCHSIA"))
18175 {
18176 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
18177 return hasExt ? (void*)entry_vkSetBufferCollectionImageConstraintsFUCHSIA : nullptr;
18178 }
18179 if (!strcmp(name, "vkSetBufferCollectionBufferConstraintsFUCHSIA"))
18180 {
18181 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
18182 return hasExt ? (void*)entry_vkSetBufferCollectionBufferConstraintsFUCHSIA : nullptr;
18183 }
18184 if (!strcmp(name, "vkDestroyBufferCollectionFUCHSIA"))
18185 {
18186 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
18187 return hasExt ? (void*)entry_vkDestroyBufferCollectionFUCHSIA : nullptr;
18188 }
18189 if (!strcmp(name, "vkGetBufferCollectionPropertiesFUCHSIA"))
18190 {
18191 bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
18192 return hasExt ? (void*)entry_vkGetBufferCollectionPropertiesFUCHSIA : nullptr;
18193 }
18194#endif
18195#ifdef VK_HUAWEI_subpass_shading
18196 if (!strcmp(name, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI"))
18197 {
18198 bool hasExt = resources->hasDeviceExtension(device, "VK_HUAWEI_subpass_shading");
18199 return hasExt ? (void*)entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI : nullptr;
18200 }
18201 if (!strcmp(name, "vkCmdSubpassShadingHUAWEI"))
18202 {
18203 bool hasExt = resources->hasDeviceExtension(device, "VK_HUAWEI_subpass_shading");
18204 return hasExt ? (void*)entry_vkCmdSubpassShadingHUAWEI : nullptr;
18205 }
18206#endif
18207#ifdef VK_HUAWEI_invocation_mask
18208 if (!strcmp(name, "vkCmdBindInvocationMaskHUAWEI"))
18209 {
18210 bool hasExt = resources->hasDeviceExtension(device, "VK_HUAWEI_invocation_mask");
18211 return hasExt ? (void*)entry_vkCmdBindInvocationMaskHUAWEI : nullptr;
18212 }
18213#endif
18214#ifdef VK_NV_external_memory_rdma
18215 if (!strcmp(name, "vkGetMemoryRemoteAddressNV"))
18216 {
18217 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_rdma");
18218 return hasExt ? (void*)entry_vkGetMemoryRemoteAddressNV : nullptr;
18219 }
18220#endif
18221#ifdef VK_EXT_extended_dynamic_state2
18222 if (!strcmp(name, "vkCmdSetPatchControlPointsEXT"))
18223 {
18224 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
18225 return hasExt ? (void*)entry_vkCmdSetPatchControlPointsEXT : nullptr;
18226 }
18227 if (!strcmp(name, "vkCmdSetRasterizerDiscardEnableEXT"))
18228 {
18229 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
18230 return hasExt ? (void*)entry_vkCmdSetRasterizerDiscardEnableEXT : nullptr;
18231 }
18232 if (!strcmp(name, "vkCmdSetDepthBiasEnableEXT"))
18233 {
18234 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
18235 return hasExt ? (void*)entry_vkCmdSetDepthBiasEnableEXT : nullptr;
18236 }
18237 if (!strcmp(name, "vkCmdSetLogicOpEXT"))
18238 {
18239 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
18240 return hasExt ? (void*)entry_vkCmdSetLogicOpEXT : nullptr;
18241 }
18242 if (!strcmp(name, "vkCmdSetPrimitiveRestartEnableEXT"))
18243 {
18244 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
18245 return hasExt ? (void*)entry_vkCmdSetPrimitiveRestartEnableEXT : nullptr;
18246 }
18247#endif
18248#ifdef VK_QNX_screen_surface
18249 if (!strcmp(name, "vkCreateScreenSurfaceQNX"))
18250 {
18251 bool hasExt = resources->hasDeviceExtension(device, "VK_QNX_screen_surface");
18252 return hasExt ? (void*)entry_vkCreateScreenSurfaceQNX : nullptr;
18253 }
18254 if (!strcmp(name, "vkGetPhysicalDeviceScreenPresentationSupportQNX"))
18255 {
18256 bool hasExt = resources->hasDeviceExtension(device, "VK_QNX_screen_surface");
18257 return hasExt ? (void*)entry_vkGetPhysicalDeviceScreenPresentationSupportQNX : nullptr;
18258 }
18259#endif
18260#ifdef VK_EXT_color_write_enable
18261 if (!strcmp(name, "vkCmdSetColorWriteEnableEXT"))
18262 {
18263 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_color_write_enable");
18264 return hasExt ? (void*)entry_vkCmdSetColorWriteEnableEXT : nullptr;
18265 }
18266#endif
Yilong Li71c43c52021-02-10 02:50:43 -080018267#ifdef VK_GOOGLE_gfxstream
Yilong Li48081632021-04-13 22:38:10 -070018268 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
18269 {
18270 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18271 return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
18272 }
18273 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
18274 {
18275 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18276 return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
18277 }
Yilong Lia8d45f12021-02-07 02:30:21 -080018278 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
18279 {
Yilong Li71c43c52021-02-10 02:50:43 -080018280 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Yilong Lia8d45f12021-02-07 02:30:21 -080018281 return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
18282 }
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070018283 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
18284 {
Yilong Li71c43c52021-02-10 02:50:43 -080018285 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070018286 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
18287 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070018288 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
18289 {
Yilong Li71c43c52021-02-10 02:50:43 -080018290 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070018291 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
18292 }
18293 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
18294 {
Yilong Li71c43c52021-02-10 02:50:43 -080018295 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070018296 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
18297 }
18298 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
18299 {
Yilong Li71c43c52021-02-10 02:50:43 -080018300 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangc53e7472019-03-27 08:50:55 -070018301 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
18302 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070018303 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
18304 {
Yilong Li71c43c52021-02-10 02:50:43 -080018305 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang39a276e2019-06-17 13:27:22 -070018306 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
18307 }
Lingfeng Yang87f11962019-06-27 16:28:53 +000018308 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
18309 {
Yilong Li71c43c52021-02-10 02:50:43 -080018310 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang87f11962019-06-27 16:28:53 +000018311 return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
18312 }
18313 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
18314 {
Yilong Li71c43c52021-02-10 02:50:43 -080018315 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang87f11962019-06-27 16:28:53 +000018316 return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
18317 }
Lingfeng Yang4c542412020-02-04 18:18:32 -080018318 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
18319 {
Yilong Li71c43c52021-02-10 02:50:43 -080018320 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang4c542412020-02-04 18:18:32 -080018321 return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
18322 }
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070018323 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
18324 {
Yilong Li71c43c52021-02-10 02:50:43 -080018325 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070018326 return hasExt ? (void*)entry_vkFreeMemorySyncGOOGLE : nullptr;
18327 }
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070018328 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
18329 {
Yilong Li71c43c52021-02-10 02:50:43 -080018330 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070018331 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
18332 }
18333 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
18334 {
Yilong Li71c43c52021-02-10 02:50:43 -080018335 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070018336 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
18337 }
18338 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
18339 {
Yilong Li71c43c52021-02-10 02:50:43 -080018340 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070018341 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
18342 }
18343 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
18344 {
Yilong Li71c43c52021-02-10 02:50:43 -080018345 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070018346 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
18347 }
Yilong Lia48b0102020-09-15 15:08:28 -070018348 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
18349 {
Yilong Li71c43c52021-02-10 02:50:43 -080018350 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Yilong Lia48b0102020-09-15 15:08:28 -070018351 return hasExt ? (void*)entry_vkGetLinearImageLayoutGOOGLE : nullptr;
18352 }
Yilong Lidcaf0672022-02-22 16:39:57 -080018353 if (!strcmp(name, "vkGetLinearImageLayout2GOOGLE"))
18354 {
18355 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18356 return hasExt ? (void*)entry_vkGetLinearImageLayout2GOOGLE : nullptr;
18357 }
Lingfeng Yangded34672021-01-22 23:17:47 -080018358 if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
18359 {
Yilong Li71c43c52021-02-10 02:50:43 -080018360 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
Lingfeng Yangded34672021-01-22 23:17:47 -080018361 return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
18362 }
Lingfeng Yang55676e02021-02-08 08:39:45 -080018363 if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
18364 {
18365 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18366 return hasExt ? (void*)entry_vkQueueCommitDescriptorSetUpdatesGOOGLE : nullptr;
18367 }
18368 if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
18369 {
18370 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18371 return hasExt ? (void*)entry_vkCollectDescriptorPoolIdsGOOGLE : nullptr;
18372 }
Lingfeng Yang5678e1e2021-07-15 12:28:05 -070018373 if (!strcmp(name, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE"))
18374 {
18375 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
18376 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE : nullptr;
18377 }
Lingfeng Yangded34672021-01-22 23:17:47 -080018378#endif
Yilong Li353409a2022-01-04 02:37:56 -080018379#ifdef VK_EXT_multi_draw
18380 if (!strcmp(name, "vkCmdDrawMultiEXT"))
18381 {
18382 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_multi_draw");
18383 return hasExt ? (void*)entry_vkCmdDrawMultiEXT : nullptr;
18384 }
18385 if (!strcmp(name, "vkCmdDrawMultiIndexedEXT"))
18386 {
18387 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_multi_draw");
18388 return hasExt ? (void*)entry_vkCmdDrawMultiIndexedEXT : nullptr;
18389 }
18390#endif
18391#ifdef VK_EXT_pageable_device_local_memory
18392 if (!strcmp(name, "vkSetDeviceMemoryPriorityEXT"))
18393 {
18394 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_pageable_device_local_memory");
18395 return hasExt ? (void*)entry_vkSetDeviceMemoryPriorityEXT : nullptr;
18396 }
18397#endif
Yilong Lia8d45f12021-02-07 02:30:21 -080018398#ifdef VK_KHR_acceleration_structure
18399 if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
18400 {
18401 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
18402 return hasExt ? (void*)entry_vkCreateAccelerationStructureKHR : nullptr;
18403 }
18404 if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
18405 {
18406 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
18407 return hasExt ? (void*)entry_vkDestroyAccelerationStructureKHR : nullptr;
18408 }
18409 if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
18410 {
18411 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
18412 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresKHR : nullptr;
18413 }
18414 if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
18415 {
18416 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
18417 return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresIndirectKHR : nullptr;
18418 }
18419 if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
18420 {
18421 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
18422 return hasExt ? (void*)entry_vkBuildAccelerationStructuresKHR : nullptr;
18423 }
18424 if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
18425 {
18426 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
18427 return hasExt ? (void*)entry_vkCopyAccelerationStructureKHR : nullptr;
18428 }
18429 if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
18430 {
18431 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
18432 return hasExt ? (void*)entry_vkCopyAccelerationStructureToMemoryKHR : nullptr;
18433 }
18434 if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
18435 {
18436 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
18437 return hasExt ? (void*)entry_vkCopyMemoryToAccelerationStructureKHR : nullptr;
18438 }
18439 if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
18440 {
18441 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
18442 return hasExt ? (void*)entry_vkWriteAccelerationStructuresPropertiesKHR : nullptr;
18443 }
18444 if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
18445 {
18446 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
18447 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureKHR : nullptr;
18448 }
18449 if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
18450 {
18451 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
18452 return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureToMemoryKHR : nullptr;
18453 }
18454 if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
18455 {
18456 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
18457 return hasExt ? (void*)entry_vkCmdCopyMemoryToAccelerationStructureKHR : nullptr;
18458 }
18459 if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
18460 {
18461 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
18462 return hasExt ? (void*)entry_vkGetAccelerationStructureDeviceAddressKHR : nullptr;
18463 }
18464 if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
18465 {
18466 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
18467 return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesKHR : nullptr;
18468 }
18469 if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
18470 {
18471 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
18472 return hasExt ? (void*)entry_vkGetDeviceAccelerationStructureCompatibilityKHR : nullptr;
18473 }
18474 if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
18475 {
18476 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
18477 return hasExt ? (void*)entry_vkGetAccelerationStructureBuildSizesKHR : nullptr;
18478 }
18479#endif
18480#ifdef VK_KHR_ray_tracing_pipeline
18481 if (!strcmp(name, "vkCmdTraceRaysKHR"))
18482 {
18483 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
18484 return hasExt ? (void*)entry_vkCmdTraceRaysKHR : nullptr;
18485 }
18486 if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
18487 {
18488 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
18489 return hasExt ? (void*)entry_vkCreateRayTracingPipelinesKHR : nullptr;
18490 }
18491 if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
18492 {
18493 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
18494 return hasExt ? (void*)entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR : nullptr;
18495 }
18496 if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
18497 {
18498 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
18499 return hasExt ? (void*)entry_vkCmdTraceRaysIndirectKHR : nullptr;
18500 }
18501 if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
18502 {
18503 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
18504 return hasExt ? (void*)entry_vkGetRayTracingShaderGroupStackSizeKHR : nullptr;
18505 }
18506 if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
18507 {
18508 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
18509 return hasExt ? (void*)entry_vkCmdSetRayTracingPipelineStackSizeKHR : nullptr;
18510 }
18511#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080018512 return nullptr;
18513}
18514
18515} // namespace goldfish_vk