blob: 721e7c5c2336f679f62f0ce97b53756bad40fca4 [file] [log] [blame]
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001// Copyright (C) 2018 The Android Open Source Project
2// Copyright (C) 2018 Google Inc.
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16// Autogenerated module func_table
17// (impl) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
18// Please do not modify directly;
19// re-run android/scripts/generate-vulkan-sources.sh,
20// or directly from Python by defining:
21// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
22// CEREAL_OUTPUT_DIR: Where to put the generated sources.
23// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
24
25#include "func_table.h"
26
27
28#include "VkEncoder.h"
29#include "HostConnection.h"
Lingfeng Yange9979522018-12-25 14:44:52 -080030#include "ResourceTracker.h"
Lingfeng Yang0b81df22018-11-05 21:40:30 -080031
Lingfeng Yang808a6312018-11-13 21:06:15 -080032#include "goldfish_vk_private_defs.h"
33
Lingfeng Yang2f51a332019-10-30 09:25:25 -070034#include <log/log.h>
35
Lingfeng Yang0b81df22018-11-05 21:40:30 -080036// Stuff we are not going to use but if included,
37// will cause compile errors. These are Android Vulkan
38// required extensions, but the approach will be to
39// implement them completely on the guest side.
40#undef VK_KHR_android_surface
Lingfeng Yang0b81df22018-11-05 21:40:30 -080041
42
43namespace goldfish_vk {
44
Lingfeng Yang2f51a332019-10-30 09:25:25 -070045static void sOnInvalidDynamicallyCheckedCall(const char* apiname, const char* neededFeature)
46{
47 ALOGE("invalid call to %s: %s not supported", apiname, neededFeature);
48 abort();
49}
Lingfeng Yang0b81df22018-11-05 21:40:30 -080050#ifdef VK_VERSION_1_0
51static VkResult entry_vkCreateInstance(
52 const VkInstanceCreateInfo* pCreateInfo,
53 const VkAllocationCallbacks* pAllocator,
54 VkInstance* pInstance)
55{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080056 AEMU_SCOPED_TRACE("vkCreateInstance");
Lingfeng Yang0b81df22018-11-05 21:40:30 -080057 auto vkEnc = HostConnection::get()->vkEncoder();
58 VkResult vkCreateInstance_VkResult_return = (VkResult)0;
59 vkCreateInstance_VkResult_return = vkEnc->vkCreateInstance(pCreateInfo, pAllocator, pInstance);
60 return vkCreateInstance_VkResult_return;
61}
62static void entry_vkDestroyInstance(
63 VkInstance instance,
64 const VkAllocationCallbacks* pAllocator)
65{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080066 AEMU_SCOPED_TRACE("vkDestroyInstance");
Lingfeng Yang0b81df22018-11-05 21:40:30 -080067 auto vkEnc = HostConnection::get()->vkEncoder();
68 vkEnc->vkDestroyInstance(instance, pAllocator);
69}
70static VkResult entry_vkEnumeratePhysicalDevices(
71 VkInstance instance,
72 uint32_t* pPhysicalDeviceCount,
73 VkPhysicalDevice* pPhysicalDevices)
74{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080075 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices");
Lingfeng Yang0b81df22018-11-05 21:40:30 -080076 auto vkEnc = HostConnection::get()->vkEncoder();
77 VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
Lingfeng Yangb64ca452019-02-14 22:04:28 -080078 auto resources = ResourceTracker::get();
79 vkEnumeratePhysicalDevices_VkResult_return = resources->on_vkEnumeratePhysicalDevices(vkEnc, VK_SUCCESS, instance, pPhysicalDeviceCount, pPhysicalDevices);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080080 return vkEnumeratePhysicalDevices_VkResult_return;
81}
82static void entry_vkGetPhysicalDeviceFeatures(
83 VkPhysicalDevice physicalDevice,
84 VkPhysicalDeviceFeatures* pFeatures)
85{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080086 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures");
Lingfeng Yang0b81df22018-11-05 21:40:30 -080087 auto vkEnc = HostConnection::get()->vkEncoder();
88 vkEnc->vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures);
89}
90static void entry_vkGetPhysicalDeviceFormatProperties(
91 VkPhysicalDevice physicalDevice,
92 VkFormat format,
93 VkFormatProperties* pFormatProperties)
94{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080095 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -080096 auto vkEnc = HostConnection::get()->vkEncoder();
97 vkEnc->vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties);
98}
99static VkResult entry_vkGetPhysicalDeviceImageFormatProperties(
100 VkPhysicalDevice physicalDevice,
101 VkFormat format,
102 VkImageType type,
103 VkImageTiling tiling,
104 VkImageUsageFlags usage,
105 VkImageCreateFlags flags,
106 VkImageFormatProperties* pImageFormatProperties)
107{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800108 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800109 auto vkEnc = HostConnection::get()->vkEncoder();
110 VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
111 vkGetPhysicalDeviceImageFormatProperties_VkResult_return = vkEnc->vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties);
112 return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
113}
114static void entry_vkGetPhysicalDeviceProperties(
115 VkPhysicalDevice physicalDevice,
116 VkPhysicalDeviceProperties* pProperties)
117{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800118 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800119 auto vkEnc = HostConnection::get()->vkEncoder();
120 vkEnc->vkGetPhysicalDeviceProperties(physicalDevice, pProperties);
121}
122static void entry_vkGetPhysicalDeviceQueueFamilyProperties(
123 VkPhysicalDevice physicalDevice,
124 uint32_t* pQueueFamilyPropertyCount,
125 VkQueueFamilyProperties* pQueueFamilyProperties)
126{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800127 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800128 auto vkEnc = HostConnection::get()->vkEncoder();
129 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
130}
131static void entry_vkGetPhysicalDeviceMemoryProperties(
132 VkPhysicalDevice physicalDevice,
133 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
134{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800135 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800136 auto vkEnc = HostConnection::get()->vkEncoder();
137 vkEnc->vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties);
138}
139static PFN_vkVoidFunction entry_vkGetInstanceProcAddr(
140 VkInstance instance,
141 const char* pName)
142{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800143 AEMU_SCOPED_TRACE("vkGetInstanceProcAddr");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800144 auto vkEnc = HostConnection::get()->vkEncoder();
145 PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
146 vkGetInstanceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetInstanceProcAddr(instance, pName);
147 return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
148}
149static PFN_vkVoidFunction entry_vkGetDeviceProcAddr(
150 VkDevice device,
151 const char* pName)
152{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800153 AEMU_SCOPED_TRACE("vkGetDeviceProcAddr");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800154 auto vkEnc = HostConnection::get()->vkEncoder();
155 PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
156 vkGetDeviceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetDeviceProcAddr(device, pName);
157 return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
158}
159static VkResult entry_vkCreateDevice(
160 VkPhysicalDevice physicalDevice,
161 const VkDeviceCreateInfo* pCreateInfo,
162 const VkAllocationCallbacks* pAllocator,
163 VkDevice* pDevice)
164{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800165 AEMU_SCOPED_TRACE("vkCreateDevice");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800166 auto vkEnc = HostConnection::get()->vkEncoder();
167 VkResult vkCreateDevice_VkResult_return = (VkResult)0;
168 vkCreateDevice_VkResult_return = vkEnc->vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice);
169 return vkCreateDevice_VkResult_return;
170}
171static void entry_vkDestroyDevice(
172 VkDevice device,
173 const VkAllocationCallbacks* pAllocator)
174{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800175 AEMU_SCOPED_TRACE("vkDestroyDevice");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800176 auto vkEnc = HostConnection::get()->vkEncoder();
177 vkEnc->vkDestroyDevice(device, pAllocator);
178}
179static VkResult entry_vkEnumerateInstanceExtensionProperties(
180 const char* pLayerName,
181 uint32_t* pPropertyCount,
182 VkExtensionProperties* pProperties)
183{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800184 AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800185 auto vkEnc = HostConnection::get()->vkEncoder();
186 VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -0800187 auto resources = ResourceTracker::get();
188 vkEnumerateInstanceExtensionProperties_VkResult_return = resources->on_vkEnumerateInstanceExtensionProperties(vkEnc, VK_SUCCESS, pLayerName, pPropertyCount, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800189 return vkEnumerateInstanceExtensionProperties_VkResult_return;
190}
191static VkResult entry_vkEnumerateDeviceExtensionProperties(
192 VkPhysicalDevice physicalDevice,
193 const char* pLayerName,
194 uint32_t* pPropertyCount,
195 VkExtensionProperties* pProperties)
196{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800197 AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800198 auto vkEnc = HostConnection::get()->vkEncoder();
199 VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -0800200 auto resources = ResourceTracker::get();
201 vkEnumerateDeviceExtensionProperties_VkResult_return = resources->on_vkEnumerateDeviceExtensionProperties(vkEnc, VK_SUCCESS, physicalDevice, pLayerName, pPropertyCount, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800202 return vkEnumerateDeviceExtensionProperties_VkResult_return;
203}
204static VkResult entry_vkEnumerateInstanceLayerProperties(
205 uint32_t* pPropertyCount,
206 VkLayerProperties* pProperties)
207{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800208 AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800209 auto vkEnc = HostConnection::get()->vkEncoder();
210 VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
211 vkEnumerateInstanceLayerProperties_VkResult_return = vkEnc->vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties);
212 return vkEnumerateInstanceLayerProperties_VkResult_return;
213}
214static VkResult entry_vkEnumerateDeviceLayerProperties(
215 VkPhysicalDevice physicalDevice,
216 uint32_t* pPropertyCount,
217 VkLayerProperties* pProperties)
218{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800219 AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800220 auto vkEnc = HostConnection::get()->vkEncoder();
221 VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
222 vkEnumerateDeviceLayerProperties_VkResult_return = vkEnc->vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties);
223 return vkEnumerateDeviceLayerProperties_VkResult_return;
224}
225static void entry_vkGetDeviceQueue(
226 VkDevice device,
227 uint32_t queueFamilyIndex,
228 uint32_t queueIndex,
229 VkQueue* pQueue)
230{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800231 AEMU_SCOPED_TRACE("vkGetDeviceQueue");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800232 auto vkEnc = HostConnection::get()->vkEncoder();
233 vkEnc->vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue);
234}
235static VkResult entry_vkQueueSubmit(
236 VkQueue queue,
237 uint32_t submitCount,
238 const VkSubmitInfo* pSubmits,
239 VkFence fence)
240{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800241 AEMU_SCOPED_TRACE("vkQueueSubmit");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800242 auto vkEnc = HostConnection::get()->vkEncoder();
243 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
David Reveman24710222019-02-25 02:21:42 -0500244 auto resources = ResourceTracker::get();
245 vkQueueSubmit_VkResult_return = resources->on_vkQueueSubmit(vkEnc, VK_SUCCESS, queue, submitCount, pSubmits, fence);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800246 return vkQueueSubmit_VkResult_return;
247}
248static VkResult entry_vkQueueWaitIdle(
249 VkQueue queue)
250{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800251 AEMU_SCOPED_TRACE("vkQueueWaitIdle");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800252 auto vkEnc = HostConnection::get()->vkEncoder();
253 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700254 auto resources = ResourceTracker::get();
255 vkQueueWaitIdle_VkResult_return = resources->on_vkQueueWaitIdle(vkEnc, VK_SUCCESS, queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800256 return vkQueueWaitIdle_VkResult_return;
257}
258static VkResult entry_vkDeviceWaitIdle(
259 VkDevice device)
260{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800261 AEMU_SCOPED_TRACE("vkDeviceWaitIdle");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800262 auto vkEnc = HostConnection::get()->vkEncoder();
263 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
264 vkDeviceWaitIdle_VkResult_return = vkEnc->vkDeviceWaitIdle(device);
265 return vkDeviceWaitIdle_VkResult_return;
266}
267static VkResult entry_vkAllocateMemory(
268 VkDevice device,
269 const VkMemoryAllocateInfo* pAllocateInfo,
270 const VkAllocationCallbacks* pAllocator,
271 VkDeviceMemory* pMemory)
272{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800273 AEMU_SCOPED_TRACE("vkAllocateMemory");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800274 auto vkEnc = HostConnection::get()->vkEncoder();
275 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
Lingfeng Yange9979522018-12-25 14:44:52 -0800276 auto resources = ResourceTracker::get();
277 vkAllocateMemory_VkResult_return = resources->on_vkAllocateMemory(vkEnc, VK_SUCCESS, device, pAllocateInfo, pAllocator, pMemory);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800278 return vkAllocateMemory_VkResult_return;
279}
280static void entry_vkFreeMemory(
281 VkDevice device,
282 VkDeviceMemory memory,
283 const VkAllocationCallbacks* pAllocator)
284{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800285 AEMU_SCOPED_TRACE("vkFreeMemory");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800286 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yange9979522018-12-25 14:44:52 -0800287 auto resources = ResourceTracker::get();
288 resources->on_vkFreeMemory(vkEnc, device, memory, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800289}
290static VkResult entry_vkMapMemory(
291 VkDevice device,
292 VkDeviceMemory memory,
293 VkDeviceSize offset,
294 VkDeviceSize size,
295 VkMemoryMapFlags flags,
296 void** ppData)
297{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800298 AEMU_SCOPED_TRACE("vkMapMemory");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800299 auto vkEnc = HostConnection::get()->vkEncoder();
300 VkResult vkMapMemory_VkResult_return = (VkResult)0;
301 vkMapMemory_VkResult_return = vkEnc->vkMapMemory(device, memory, offset, size, flags, ppData);
302 return vkMapMemory_VkResult_return;
303}
304static void entry_vkUnmapMemory(
305 VkDevice device,
306 VkDeviceMemory memory)
307{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800308 AEMU_SCOPED_TRACE("vkUnmapMemory");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800309 auto vkEnc = HostConnection::get()->vkEncoder();
310 vkEnc->vkUnmapMemory(device, memory);
311}
312static VkResult entry_vkFlushMappedMemoryRanges(
313 VkDevice device,
314 uint32_t memoryRangeCount,
315 const VkMappedMemoryRange* pMemoryRanges)
316{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800317 AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800318 auto vkEnc = HostConnection::get()->vkEncoder();
319 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
320 vkFlushMappedMemoryRanges_VkResult_return = vkEnc->vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);
321 return vkFlushMappedMemoryRanges_VkResult_return;
322}
323static VkResult entry_vkInvalidateMappedMemoryRanges(
324 VkDevice device,
325 uint32_t memoryRangeCount,
326 const VkMappedMemoryRange* pMemoryRanges)
327{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800328 AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800329 auto vkEnc = HostConnection::get()->vkEncoder();
330 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
331 vkInvalidateMappedMemoryRanges_VkResult_return = vkEnc->vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);
332 return vkInvalidateMappedMemoryRanges_VkResult_return;
333}
334static void entry_vkGetDeviceMemoryCommitment(
335 VkDevice device,
336 VkDeviceMemory memory,
337 VkDeviceSize* pCommittedMemoryInBytes)
338{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800339 AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800340 auto vkEnc = HostConnection::get()->vkEncoder();
341 vkEnc->vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes);
342}
343static VkResult entry_vkBindBufferMemory(
344 VkDevice device,
345 VkBuffer buffer,
346 VkDeviceMemory memory,
347 VkDeviceSize memoryOffset)
348{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800349 AEMU_SCOPED_TRACE("vkBindBufferMemory");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800350 auto vkEnc = HostConnection::get()->vkEncoder();
351 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800352 auto resources = ResourceTracker::get();
353 vkBindBufferMemory_VkResult_return = resources->on_vkBindBufferMemory(vkEnc, VK_SUCCESS, device, buffer, memory, memoryOffset);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800354 return vkBindBufferMemory_VkResult_return;
355}
356static VkResult entry_vkBindImageMemory(
357 VkDevice device,
358 VkImage image,
359 VkDeviceMemory memory,
360 VkDeviceSize memoryOffset)
361{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800362 AEMU_SCOPED_TRACE("vkBindImageMemory");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800363 auto vkEnc = HostConnection::get()->vkEncoder();
364 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800365 auto resources = ResourceTracker::get();
366 vkBindImageMemory_VkResult_return = resources->on_vkBindImageMemory(vkEnc, VK_SUCCESS, device, image, memory, memoryOffset);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800367 return vkBindImageMemory_VkResult_return;
368}
369static void entry_vkGetBufferMemoryRequirements(
370 VkDevice device,
371 VkBuffer buffer,
372 VkMemoryRequirements* pMemoryRequirements)
373{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800374 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800375 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800376 auto resources = ResourceTracker::get();
377 resources->on_vkGetBufferMemoryRequirements(vkEnc, device, buffer, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800378}
379static void entry_vkGetImageMemoryRequirements(
380 VkDevice device,
381 VkImage image,
382 VkMemoryRequirements* pMemoryRequirements)
383{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800384 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800385 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800386 auto resources = ResourceTracker::get();
387 resources->on_vkGetImageMemoryRequirements(vkEnc, device, image, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800388}
389static void entry_vkGetImageSparseMemoryRequirements(
390 VkDevice device,
391 VkImage image,
392 uint32_t* pSparseMemoryRequirementCount,
393 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
394{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800395 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800396 auto vkEnc = HostConnection::get()->vkEncoder();
397 vkEnc->vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
398}
399static void entry_vkGetPhysicalDeviceSparseImageFormatProperties(
400 VkPhysicalDevice physicalDevice,
401 VkFormat format,
402 VkImageType type,
403 VkSampleCountFlagBits samples,
404 VkImageUsageFlags usage,
405 VkImageTiling tiling,
406 uint32_t* pPropertyCount,
407 VkSparseImageFormatProperties* pProperties)
408{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800409 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800410 auto vkEnc = HostConnection::get()->vkEncoder();
411 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties);
412}
413static VkResult entry_vkQueueBindSparse(
414 VkQueue queue,
415 uint32_t bindInfoCount,
416 const VkBindSparseInfo* pBindInfo,
417 VkFence fence)
418{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800419 AEMU_SCOPED_TRACE("vkQueueBindSparse");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800420 auto vkEnc = HostConnection::get()->vkEncoder();
421 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
422 vkQueueBindSparse_VkResult_return = vkEnc->vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence);
423 return vkQueueBindSparse_VkResult_return;
424}
425static VkResult entry_vkCreateFence(
426 VkDevice device,
427 const VkFenceCreateInfo* pCreateInfo,
428 const VkAllocationCallbacks* pAllocator,
429 VkFence* pFence)
430{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800431 AEMU_SCOPED_TRACE("vkCreateFence");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800432 auto vkEnc = HostConnection::get()->vkEncoder();
433 VkResult vkCreateFence_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700434 auto resources = ResourceTracker::get();
435 vkCreateFence_VkResult_return = resources->on_vkCreateFence(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pFence);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800436 return vkCreateFence_VkResult_return;
437}
438static void entry_vkDestroyFence(
439 VkDevice device,
440 VkFence fence,
441 const VkAllocationCallbacks* pAllocator)
442{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800443 AEMU_SCOPED_TRACE("vkDestroyFence");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800444 auto vkEnc = HostConnection::get()->vkEncoder();
445 vkEnc->vkDestroyFence(device, fence, pAllocator);
446}
447static VkResult entry_vkResetFences(
448 VkDevice device,
449 uint32_t fenceCount,
450 const VkFence* pFences)
451{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800452 AEMU_SCOPED_TRACE("vkResetFences");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800453 auto vkEnc = HostConnection::get()->vkEncoder();
454 VkResult vkResetFences_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700455 auto resources = ResourceTracker::get();
456 vkResetFences_VkResult_return = resources->on_vkResetFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800457 return vkResetFences_VkResult_return;
458}
459static VkResult entry_vkGetFenceStatus(
460 VkDevice device,
461 VkFence fence)
462{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800463 AEMU_SCOPED_TRACE("vkGetFenceStatus");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800464 auto vkEnc = HostConnection::get()->vkEncoder();
465 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
466 vkGetFenceStatus_VkResult_return = vkEnc->vkGetFenceStatus(device, fence);
467 return vkGetFenceStatus_VkResult_return;
468}
469static VkResult entry_vkWaitForFences(
470 VkDevice device,
471 uint32_t fenceCount,
472 const VkFence* pFences,
473 VkBool32 waitAll,
474 uint64_t timeout)
475{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800476 AEMU_SCOPED_TRACE("vkWaitForFences");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800477 auto vkEnc = HostConnection::get()->vkEncoder();
478 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700479 auto resources = ResourceTracker::get();
480 vkWaitForFences_VkResult_return = resources->on_vkWaitForFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences, waitAll, timeout);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800481 return vkWaitForFences_VkResult_return;
482}
483static VkResult entry_vkCreateSemaphore(
484 VkDevice device,
485 const VkSemaphoreCreateInfo* pCreateInfo,
486 const VkAllocationCallbacks* pAllocator,
487 VkSemaphore* pSemaphore)
488{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800489 AEMU_SCOPED_TRACE("vkCreateSemaphore");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800490 auto vkEnc = HostConnection::get()->vkEncoder();
491 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
David Reveman32b110e2019-02-21 13:20:54 -0500492 auto resources = ResourceTracker::get();
493 vkCreateSemaphore_VkResult_return = resources->on_vkCreateSemaphore(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSemaphore);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800494 return vkCreateSemaphore_VkResult_return;
495}
496static void entry_vkDestroySemaphore(
497 VkDevice device,
498 VkSemaphore semaphore,
499 const VkAllocationCallbacks* pAllocator)
500{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800501 AEMU_SCOPED_TRACE("vkDestroySemaphore");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800502 auto vkEnc = HostConnection::get()->vkEncoder();
David Reveman32b110e2019-02-21 13:20:54 -0500503 auto resources = ResourceTracker::get();
504 resources->on_vkDestroySemaphore(vkEnc, device, semaphore, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800505}
506static VkResult entry_vkCreateEvent(
507 VkDevice device,
508 const VkEventCreateInfo* pCreateInfo,
509 const VkAllocationCallbacks* pAllocator,
510 VkEvent* pEvent)
511{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800512 AEMU_SCOPED_TRACE("vkCreateEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800513 auto vkEnc = HostConnection::get()->vkEncoder();
514 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
515 vkCreateEvent_VkResult_return = vkEnc->vkCreateEvent(device, pCreateInfo, pAllocator, pEvent);
516 return vkCreateEvent_VkResult_return;
517}
518static void entry_vkDestroyEvent(
519 VkDevice device,
520 VkEvent event,
521 const VkAllocationCallbacks* pAllocator)
522{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800523 AEMU_SCOPED_TRACE("vkDestroyEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800524 auto vkEnc = HostConnection::get()->vkEncoder();
525 vkEnc->vkDestroyEvent(device, event, pAllocator);
526}
527static VkResult entry_vkGetEventStatus(
528 VkDevice device,
529 VkEvent event)
530{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800531 AEMU_SCOPED_TRACE("vkGetEventStatus");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800532 auto vkEnc = HostConnection::get()->vkEncoder();
533 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
534 vkGetEventStatus_VkResult_return = vkEnc->vkGetEventStatus(device, event);
535 return vkGetEventStatus_VkResult_return;
536}
537static VkResult entry_vkSetEvent(
538 VkDevice device,
539 VkEvent event)
540{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800541 AEMU_SCOPED_TRACE("vkSetEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800542 auto vkEnc = HostConnection::get()->vkEncoder();
543 VkResult vkSetEvent_VkResult_return = (VkResult)0;
544 vkSetEvent_VkResult_return = vkEnc->vkSetEvent(device, event);
545 return vkSetEvent_VkResult_return;
546}
547static VkResult entry_vkResetEvent(
548 VkDevice device,
549 VkEvent event)
550{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800551 AEMU_SCOPED_TRACE("vkResetEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800552 auto vkEnc = HostConnection::get()->vkEncoder();
553 VkResult vkResetEvent_VkResult_return = (VkResult)0;
554 vkResetEvent_VkResult_return = vkEnc->vkResetEvent(device, event);
555 return vkResetEvent_VkResult_return;
556}
557static VkResult entry_vkCreateQueryPool(
558 VkDevice device,
559 const VkQueryPoolCreateInfo* pCreateInfo,
560 const VkAllocationCallbacks* pAllocator,
561 VkQueryPool* pQueryPool)
562{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800563 AEMU_SCOPED_TRACE("vkCreateQueryPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800564 auto vkEnc = HostConnection::get()->vkEncoder();
565 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
566 vkCreateQueryPool_VkResult_return = vkEnc->vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool);
567 return vkCreateQueryPool_VkResult_return;
568}
569static void entry_vkDestroyQueryPool(
570 VkDevice device,
571 VkQueryPool queryPool,
572 const VkAllocationCallbacks* pAllocator)
573{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800574 AEMU_SCOPED_TRACE("vkDestroyQueryPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800575 auto vkEnc = HostConnection::get()->vkEncoder();
576 vkEnc->vkDestroyQueryPool(device, queryPool, pAllocator);
577}
578static VkResult entry_vkGetQueryPoolResults(
579 VkDevice device,
580 VkQueryPool queryPool,
581 uint32_t firstQuery,
582 uint32_t queryCount,
583 size_t dataSize,
584 void* pData,
585 VkDeviceSize stride,
586 VkQueryResultFlags flags)
587{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800588 AEMU_SCOPED_TRACE("vkGetQueryPoolResults");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800589 auto vkEnc = HostConnection::get()->vkEncoder();
590 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
591 vkGetQueryPoolResults_VkResult_return = vkEnc->vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags);
592 return vkGetQueryPoolResults_VkResult_return;
593}
594static VkResult entry_vkCreateBuffer(
595 VkDevice device,
596 const VkBufferCreateInfo* pCreateInfo,
597 const VkAllocationCallbacks* pAllocator,
598 VkBuffer* pBuffer)
599{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800600 AEMU_SCOPED_TRACE("vkCreateBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800601 auto vkEnc = HostConnection::get()->vkEncoder();
602 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800603 auto resources = ResourceTracker::get();
604 vkCreateBuffer_VkResult_return = resources->on_vkCreateBuffer(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800605 return vkCreateBuffer_VkResult_return;
606}
607static void entry_vkDestroyBuffer(
608 VkDevice device,
609 VkBuffer buffer,
610 const VkAllocationCallbacks* pAllocator)
611{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800612 AEMU_SCOPED_TRACE("vkDestroyBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800613 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800614 auto resources = ResourceTracker::get();
615 resources->on_vkDestroyBuffer(vkEnc, device, buffer, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800616}
617static VkResult entry_vkCreateBufferView(
618 VkDevice device,
619 const VkBufferViewCreateInfo* pCreateInfo,
620 const VkAllocationCallbacks* pAllocator,
621 VkBufferView* pView)
622{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800623 AEMU_SCOPED_TRACE("vkCreateBufferView");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800624 auto vkEnc = HostConnection::get()->vkEncoder();
625 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
626 vkCreateBufferView_VkResult_return = vkEnc->vkCreateBufferView(device, pCreateInfo, pAllocator, pView);
627 return vkCreateBufferView_VkResult_return;
628}
629static void entry_vkDestroyBufferView(
630 VkDevice device,
631 VkBufferView bufferView,
632 const VkAllocationCallbacks* pAllocator)
633{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800634 AEMU_SCOPED_TRACE("vkDestroyBufferView");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800635 auto vkEnc = HostConnection::get()->vkEncoder();
636 vkEnc->vkDestroyBufferView(device, bufferView, pAllocator);
637}
638static VkResult entry_vkCreateImage(
639 VkDevice device,
640 const VkImageCreateInfo* pCreateInfo,
641 const VkAllocationCallbacks* pAllocator,
642 VkImage* pImage)
643{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800644 AEMU_SCOPED_TRACE("vkCreateImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800645 auto vkEnc = HostConnection::get()->vkEncoder();
646 VkResult vkCreateImage_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800647 auto resources = ResourceTracker::get();
648 vkCreateImage_VkResult_return = resources->on_vkCreateImage(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pImage);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800649 return vkCreateImage_VkResult_return;
650}
651static void entry_vkDestroyImage(
652 VkDevice device,
653 VkImage image,
654 const VkAllocationCallbacks* pAllocator)
655{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800656 AEMU_SCOPED_TRACE("vkDestroyImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800657 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800658 auto resources = ResourceTracker::get();
659 resources->on_vkDestroyImage(vkEnc, device, image, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800660}
661static void entry_vkGetImageSubresourceLayout(
662 VkDevice device,
663 VkImage image,
664 const VkImageSubresource* pSubresource,
665 VkSubresourceLayout* pLayout)
666{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800667 AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800668 auto vkEnc = HostConnection::get()->vkEncoder();
669 vkEnc->vkGetImageSubresourceLayout(device, image, pSubresource, pLayout);
670}
671static VkResult entry_vkCreateImageView(
672 VkDevice device,
673 const VkImageViewCreateInfo* pCreateInfo,
674 const VkAllocationCallbacks* pAllocator,
675 VkImageView* pView)
676{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800677 AEMU_SCOPED_TRACE("vkCreateImageView");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800678 auto vkEnc = HostConnection::get()->vkEncoder();
679 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
Roman Kiryanov6db11e52019-04-26 14:18:14 -0700680 auto resources = ResourceTracker::get();
681 vkCreateImageView_VkResult_return = resources->on_vkCreateImageView(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pView);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800682 return vkCreateImageView_VkResult_return;
683}
684static void entry_vkDestroyImageView(
685 VkDevice device,
686 VkImageView imageView,
687 const VkAllocationCallbacks* pAllocator)
688{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800689 AEMU_SCOPED_TRACE("vkDestroyImageView");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800690 auto vkEnc = HostConnection::get()->vkEncoder();
691 vkEnc->vkDestroyImageView(device, imageView, pAllocator);
692}
693static VkResult entry_vkCreateShaderModule(
694 VkDevice device,
695 const VkShaderModuleCreateInfo* pCreateInfo,
696 const VkAllocationCallbacks* pAllocator,
697 VkShaderModule* pShaderModule)
698{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800699 AEMU_SCOPED_TRACE("vkCreateShaderModule");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800700 auto vkEnc = HostConnection::get()->vkEncoder();
701 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
702 vkCreateShaderModule_VkResult_return = vkEnc->vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule);
703 return vkCreateShaderModule_VkResult_return;
704}
705static void entry_vkDestroyShaderModule(
706 VkDevice device,
707 VkShaderModule shaderModule,
708 const VkAllocationCallbacks* pAllocator)
709{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800710 AEMU_SCOPED_TRACE("vkDestroyShaderModule");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800711 auto vkEnc = HostConnection::get()->vkEncoder();
712 vkEnc->vkDestroyShaderModule(device, shaderModule, pAllocator);
713}
714static VkResult entry_vkCreatePipelineCache(
715 VkDevice device,
716 const VkPipelineCacheCreateInfo* pCreateInfo,
717 const VkAllocationCallbacks* pAllocator,
718 VkPipelineCache* pPipelineCache)
719{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800720 AEMU_SCOPED_TRACE("vkCreatePipelineCache");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800721 auto vkEnc = HostConnection::get()->vkEncoder();
722 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
723 vkCreatePipelineCache_VkResult_return = vkEnc->vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache);
724 return vkCreatePipelineCache_VkResult_return;
725}
726static void entry_vkDestroyPipelineCache(
727 VkDevice device,
728 VkPipelineCache pipelineCache,
729 const VkAllocationCallbacks* pAllocator)
730{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800731 AEMU_SCOPED_TRACE("vkDestroyPipelineCache");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800732 auto vkEnc = HostConnection::get()->vkEncoder();
733 vkEnc->vkDestroyPipelineCache(device, pipelineCache, pAllocator);
734}
735static VkResult entry_vkGetPipelineCacheData(
736 VkDevice device,
737 VkPipelineCache pipelineCache,
738 size_t* pDataSize,
739 void* pData)
740{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800741 AEMU_SCOPED_TRACE("vkGetPipelineCacheData");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800742 auto vkEnc = HostConnection::get()->vkEncoder();
743 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
744 vkGetPipelineCacheData_VkResult_return = vkEnc->vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData);
745 return vkGetPipelineCacheData_VkResult_return;
746}
747static VkResult entry_vkMergePipelineCaches(
748 VkDevice device,
749 VkPipelineCache dstCache,
750 uint32_t srcCacheCount,
751 const VkPipelineCache* pSrcCaches)
752{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800753 AEMU_SCOPED_TRACE("vkMergePipelineCaches");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800754 auto vkEnc = HostConnection::get()->vkEncoder();
755 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
756 vkMergePipelineCaches_VkResult_return = vkEnc->vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches);
757 return vkMergePipelineCaches_VkResult_return;
758}
759static VkResult entry_vkCreateGraphicsPipelines(
760 VkDevice device,
761 VkPipelineCache pipelineCache,
762 uint32_t createInfoCount,
763 const VkGraphicsPipelineCreateInfo* pCreateInfos,
764 const VkAllocationCallbacks* pAllocator,
765 VkPipeline* pPipelines)
766{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800767 AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800768 auto vkEnc = HostConnection::get()->vkEncoder();
769 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
770 vkCreateGraphicsPipelines_VkResult_return = vkEnc->vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
771 return vkCreateGraphicsPipelines_VkResult_return;
772}
773static VkResult entry_vkCreateComputePipelines(
774 VkDevice device,
775 VkPipelineCache pipelineCache,
776 uint32_t createInfoCount,
777 const VkComputePipelineCreateInfo* pCreateInfos,
778 const VkAllocationCallbacks* pAllocator,
779 VkPipeline* pPipelines)
780{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800781 AEMU_SCOPED_TRACE("vkCreateComputePipelines");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800782 auto vkEnc = HostConnection::get()->vkEncoder();
783 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
784 vkCreateComputePipelines_VkResult_return = vkEnc->vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
785 return vkCreateComputePipelines_VkResult_return;
786}
787static void entry_vkDestroyPipeline(
788 VkDevice device,
789 VkPipeline pipeline,
790 const VkAllocationCallbacks* pAllocator)
791{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800792 AEMU_SCOPED_TRACE("vkDestroyPipeline");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800793 auto vkEnc = HostConnection::get()->vkEncoder();
794 vkEnc->vkDestroyPipeline(device, pipeline, pAllocator);
795}
796static VkResult entry_vkCreatePipelineLayout(
797 VkDevice device,
798 const VkPipelineLayoutCreateInfo* pCreateInfo,
799 const VkAllocationCallbacks* pAllocator,
800 VkPipelineLayout* pPipelineLayout)
801{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800802 AEMU_SCOPED_TRACE("vkCreatePipelineLayout");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800803 auto vkEnc = HostConnection::get()->vkEncoder();
804 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
805 vkCreatePipelineLayout_VkResult_return = vkEnc->vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout);
806 return vkCreatePipelineLayout_VkResult_return;
807}
808static void entry_vkDestroyPipelineLayout(
809 VkDevice device,
810 VkPipelineLayout pipelineLayout,
811 const VkAllocationCallbacks* pAllocator)
812{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800813 AEMU_SCOPED_TRACE("vkDestroyPipelineLayout");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800814 auto vkEnc = HostConnection::get()->vkEncoder();
815 vkEnc->vkDestroyPipelineLayout(device, pipelineLayout, pAllocator);
816}
817static VkResult entry_vkCreateSampler(
818 VkDevice device,
819 const VkSamplerCreateInfo* pCreateInfo,
820 const VkAllocationCallbacks* pAllocator,
821 VkSampler* pSampler)
822{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800823 AEMU_SCOPED_TRACE("vkCreateSampler");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800824 auto vkEnc = HostConnection::get()->vkEncoder();
825 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
Roman Kiryanov004f48c2019-06-28 14:59:32 -0700826 auto resources = ResourceTracker::get();
827 vkCreateSampler_VkResult_return = resources->on_vkCreateSampler(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSampler);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800828 return vkCreateSampler_VkResult_return;
829}
830static void entry_vkDestroySampler(
831 VkDevice device,
832 VkSampler sampler,
833 const VkAllocationCallbacks* pAllocator)
834{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800835 AEMU_SCOPED_TRACE("vkDestroySampler");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800836 auto vkEnc = HostConnection::get()->vkEncoder();
837 vkEnc->vkDestroySampler(device, sampler, pAllocator);
838}
839static VkResult entry_vkCreateDescriptorSetLayout(
840 VkDevice device,
841 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
842 const VkAllocationCallbacks* pAllocator,
843 VkDescriptorSetLayout* pSetLayout)
844{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800845 AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800846 auto vkEnc = HostConnection::get()->vkEncoder();
847 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
Lingfeng Yang03354c72020-03-26 13:00:51 -0700848 auto resources = ResourceTracker::get();
849 vkCreateDescriptorSetLayout_VkResult_return = resources->on_vkCreateDescriptorSetLayout(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSetLayout);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800850 return vkCreateDescriptorSetLayout_VkResult_return;
851}
852static void entry_vkDestroyDescriptorSetLayout(
853 VkDevice device,
854 VkDescriptorSetLayout descriptorSetLayout,
855 const VkAllocationCallbacks* pAllocator)
856{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800857 AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800858 auto vkEnc = HostConnection::get()->vkEncoder();
859 vkEnc->vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator);
860}
861static VkResult entry_vkCreateDescriptorPool(
862 VkDevice device,
863 const VkDescriptorPoolCreateInfo* pCreateInfo,
864 const VkAllocationCallbacks* pAllocator,
865 VkDescriptorPool* pDescriptorPool)
866{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800867 AEMU_SCOPED_TRACE("vkCreateDescriptorPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800868 auto vkEnc = HostConnection::get()->vkEncoder();
869 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700870 auto resources = ResourceTracker::get();
871 vkCreateDescriptorPool_VkResult_return = resources->on_vkCreateDescriptorPool(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pDescriptorPool);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800872 return vkCreateDescriptorPool_VkResult_return;
873}
874static void entry_vkDestroyDescriptorPool(
875 VkDevice device,
876 VkDescriptorPool descriptorPool,
877 const VkAllocationCallbacks* pAllocator)
878{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800879 AEMU_SCOPED_TRACE("vkDestroyDescriptorPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800880 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700881 auto resources = ResourceTracker::get();
882 resources->on_vkDestroyDescriptorPool(vkEnc, device, descriptorPool, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800883}
884static VkResult entry_vkResetDescriptorPool(
885 VkDevice device,
886 VkDescriptorPool descriptorPool,
887 VkDescriptorPoolResetFlags flags)
888{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800889 AEMU_SCOPED_TRACE("vkResetDescriptorPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800890 auto vkEnc = HostConnection::get()->vkEncoder();
891 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700892 auto resources = ResourceTracker::get();
893 vkResetDescriptorPool_VkResult_return = resources->on_vkResetDescriptorPool(vkEnc, VK_SUCCESS, device, descriptorPool, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800894 return vkResetDescriptorPool_VkResult_return;
895}
896static VkResult entry_vkAllocateDescriptorSets(
897 VkDevice device,
898 const VkDescriptorSetAllocateInfo* pAllocateInfo,
899 VkDescriptorSet* pDescriptorSets)
900{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800901 AEMU_SCOPED_TRACE("vkAllocateDescriptorSets");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800902 auto vkEnc = HostConnection::get()->vkEncoder();
903 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700904 auto resources = ResourceTracker::get();
905 vkAllocateDescriptorSets_VkResult_return = resources->on_vkAllocateDescriptorSets(vkEnc, VK_SUCCESS, device, pAllocateInfo, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800906 return vkAllocateDescriptorSets_VkResult_return;
907}
908static VkResult entry_vkFreeDescriptorSets(
909 VkDevice device,
910 VkDescriptorPool descriptorPool,
911 uint32_t descriptorSetCount,
912 const VkDescriptorSet* pDescriptorSets)
913{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800914 AEMU_SCOPED_TRACE("vkFreeDescriptorSets");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800915 auto vkEnc = HostConnection::get()->vkEncoder();
916 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700917 auto resources = ResourceTracker::get();
918 vkFreeDescriptorSets_VkResult_return = resources->on_vkFreeDescriptorSets(vkEnc, VK_SUCCESS, device, descriptorPool, descriptorSetCount, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800919 return vkFreeDescriptorSets_VkResult_return;
920}
921static void entry_vkUpdateDescriptorSets(
922 VkDevice device,
923 uint32_t descriptorWriteCount,
924 const VkWriteDescriptorSet* pDescriptorWrites,
925 uint32_t descriptorCopyCount,
926 const VkCopyDescriptorSet* pDescriptorCopies)
927{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800928 AEMU_SCOPED_TRACE("vkUpdateDescriptorSets");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800929 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang03354c72020-03-26 13:00:51 -0700930 auto resources = ResourceTracker::get();
931 resources->on_vkUpdateDescriptorSets(vkEnc, device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800932}
933static VkResult entry_vkCreateFramebuffer(
934 VkDevice device,
935 const VkFramebufferCreateInfo* pCreateInfo,
936 const VkAllocationCallbacks* pAllocator,
937 VkFramebuffer* pFramebuffer)
938{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800939 AEMU_SCOPED_TRACE("vkCreateFramebuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800940 auto vkEnc = HostConnection::get()->vkEncoder();
941 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
942 vkCreateFramebuffer_VkResult_return = vkEnc->vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer);
943 return vkCreateFramebuffer_VkResult_return;
944}
945static void entry_vkDestroyFramebuffer(
946 VkDevice device,
947 VkFramebuffer framebuffer,
948 const VkAllocationCallbacks* pAllocator)
949{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800950 AEMU_SCOPED_TRACE("vkDestroyFramebuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800951 auto vkEnc = HostConnection::get()->vkEncoder();
952 vkEnc->vkDestroyFramebuffer(device, framebuffer, pAllocator);
953}
954static VkResult entry_vkCreateRenderPass(
955 VkDevice device,
956 const VkRenderPassCreateInfo* pCreateInfo,
957 const VkAllocationCallbacks* pAllocator,
958 VkRenderPass* pRenderPass)
959{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800960 AEMU_SCOPED_TRACE("vkCreateRenderPass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800961 auto vkEnc = HostConnection::get()->vkEncoder();
962 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
963 vkCreateRenderPass_VkResult_return = vkEnc->vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass);
964 return vkCreateRenderPass_VkResult_return;
965}
966static void entry_vkDestroyRenderPass(
967 VkDevice device,
968 VkRenderPass renderPass,
969 const VkAllocationCallbacks* pAllocator)
970{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800971 AEMU_SCOPED_TRACE("vkDestroyRenderPass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800972 auto vkEnc = HostConnection::get()->vkEncoder();
973 vkEnc->vkDestroyRenderPass(device, renderPass, pAllocator);
974}
975static void entry_vkGetRenderAreaGranularity(
976 VkDevice device,
977 VkRenderPass renderPass,
978 VkExtent2D* pGranularity)
979{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800980 AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800981 auto vkEnc = HostConnection::get()->vkEncoder();
982 vkEnc->vkGetRenderAreaGranularity(device, renderPass, pGranularity);
983}
984static VkResult entry_vkCreateCommandPool(
985 VkDevice device,
986 const VkCommandPoolCreateInfo* pCreateInfo,
987 const VkAllocationCallbacks* pAllocator,
988 VkCommandPool* pCommandPool)
989{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800990 AEMU_SCOPED_TRACE("vkCreateCommandPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800991 auto vkEnc = HostConnection::get()->vkEncoder();
992 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
993 vkCreateCommandPool_VkResult_return = vkEnc->vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool);
994 return vkCreateCommandPool_VkResult_return;
995}
996static void entry_vkDestroyCommandPool(
997 VkDevice device,
998 VkCommandPool commandPool,
999 const VkAllocationCallbacks* pAllocator)
1000{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001001 AEMU_SCOPED_TRACE("vkDestroyCommandPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001002 auto vkEnc = HostConnection::get()->vkEncoder();
1003 vkEnc->vkDestroyCommandPool(device, commandPool, pAllocator);
1004}
1005static VkResult entry_vkResetCommandPool(
1006 VkDevice device,
1007 VkCommandPool commandPool,
1008 VkCommandPoolResetFlags flags)
1009{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001010 AEMU_SCOPED_TRACE("vkResetCommandPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001011 auto vkEnc = HostConnection::get()->vkEncoder();
1012 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
1013 vkResetCommandPool_VkResult_return = vkEnc->vkResetCommandPool(device, commandPool, flags);
1014 return vkResetCommandPool_VkResult_return;
1015}
1016static VkResult entry_vkAllocateCommandBuffers(
1017 VkDevice device,
1018 const VkCommandBufferAllocateInfo* pAllocateInfo,
1019 VkCommandBuffer* pCommandBuffers)
1020{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001021 AEMU_SCOPED_TRACE("vkAllocateCommandBuffers");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001022 auto vkEnc = HostConnection::get()->vkEncoder();
1023 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
1024 vkAllocateCommandBuffers_VkResult_return = vkEnc->vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers);
1025 return vkAllocateCommandBuffers_VkResult_return;
1026}
1027static void entry_vkFreeCommandBuffers(
1028 VkDevice device,
1029 VkCommandPool commandPool,
1030 uint32_t commandBufferCount,
1031 const VkCommandBuffer* pCommandBuffers)
1032{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001033 AEMU_SCOPED_TRACE("vkFreeCommandBuffers");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001034 auto vkEnc = HostConnection::get()->vkEncoder();
1035 vkEnc->vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers);
1036}
1037static VkResult entry_vkBeginCommandBuffer(
1038 VkCommandBuffer commandBuffer,
1039 const VkCommandBufferBeginInfo* pBeginInfo)
1040{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001041 AEMU_SCOPED_TRACE("vkBeginCommandBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001042 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001043 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001044 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001045 auto resources = ResourceTracker::get();
1046 vkBeginCommandBuffer_VkResult_return = resources->on_vkBeginCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, pBeginInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001047 return vkBeginCommandBuffer_VkResult_return;
1048}
1049static VkResult entry_vkEndCommandBuffer(
1050 VkCommandBuffer commandBuffer)
1051{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001052 AEMU_SCOPED_TRACE("vkEndCommandBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001053 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001054 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001055 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001056 auto resources = ResourceTracker::get();
1057 vkEndCommandBuffer_VkResult_return = resources->on_vkEndCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001058 return vkEndCommandBuffer_VkResult_return;
1059}
1060static VkResult entry_vkResetCommandBuffer(
1061 VkCommandBuffer commandBuffer,
1062 VkCommandBufferResetFlags flags)
1063{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001064 AEMU_SCOPED_TRACE("vkResetCommandBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001065 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001066 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001067 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001068 auto resources = ResourceTracker::get();
1069 vkResetCommandBuffer_VkResult_return = resources->on_vkResetCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001070 return vkResetCommandBuffer_VkResult_return;
1071}
1072static void entry_vkCmdBindPipeline(
1073 VkCommandBuffer commandBuffer,
1074 VkPipelineBindPoint pipelineBindPoint,
1075 VkPipeline pipeline)
1076{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001077 AEMU_SCOPED_TRACE("vkCmdBindPipeline");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001078 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001079 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001080 vkEnc->vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline);
1081}
1082static void entry_vkCmdSetViewport(
1083 VkCommandBuffer commandBuffer,
1084 uint32_t firstViewport,
1085 uint32_t viewportCount,
1086 const VkViewport* pViewports)
1087{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001088 AEMU_SCOPED_TRACE("vkCmdSetViewport");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001089 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001090 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001091 vkEnc->vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports);
1092}
1093static void entry_vkCmdSetScissor(
1094 VkCommandBuffer commandBuffer,
1095 uint32_t firstScissor,
1096 uint32_t scissorCount,
1097 const VkRect2D* pScissors)
1098{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001099 AEMU_SCOPED_TRACE("vkCmdSetScissor");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001100 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001101 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001102 vkEnc->vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors);
1103}
1104static void entry_vkCmdSetLineWidth(
1105 VkCommandBuffer commandBuffer,
1106 float lineWidth)
1107{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001108 AEMU_SCOPED_TRACE("vkCmdSetLineWidth");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001109 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001110 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001111 vkEnc->vkCmdSetLineWidth(commandBuffer, lineWidth);
1112}
1113static void entry_vkCmdSetDepthBias(
1114 VkCommandBuffer commandBuffer,
1115 float depthBiasConstantFactor,
1116 float depthBiasClamp,
1117 float depthBiasSlopeFactor)
1118{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001119 AEMU_SCOPED_TRACE("vkCmdSetDepthBias");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001120 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001121 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001122 vkEnc->vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
1123}
1124static void entry_vkCmdSetBlendConstants(
1125 VkCommandBuffer commandBuffer,
Lingfeng Yang97ddeb82019-04-20 14:32:52 -07001126 const float blendConstants[4])
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001127{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001128 AEMU_SCOPED_TRACE("vkCmdSetBlendConstants");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001129 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001130 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001131 vkEnc->vkCmdSetBlendConstants(commandBuffer, blendConstants);
1132}
1133static void entry_vkCmdSetDepthBounds(
1134 VkCommandBuffer commandBuffer,
1135 float minDepthBounds,
1136 float maxDepthBounds)
1137{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001138 AEMU_SCOPED_TRACE("vkCmdSetDepthBounds");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001139 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001140 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001141 vkEnc->vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds);
1142}
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 Yang0b81df22018-11-05 21:40:30 -08001149 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001150 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001151 vkEnc->vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask);
1152}
1153static void entry_vkCmdSetStencilWriteMask(
1154 VkCommandBuffer commandBuffer,
1155 VkStencilFaceFlags faceMask,
1156 uint32_t writeMask)
1157{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001158 AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001159 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001160 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001161 vkEnc->vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask);
1162}
1163static void entry_vkCmdSetStencilReference(
1164 VkCommandBuffer commandBuffer,
1165 VkStencilFaceFlags faceMask,
1166 uint32_t reference)
1167{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001168 AEMU_SCOPED_TRACE("vkCmdSetStencilReference");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001169 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001170 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001171 vkEnc->vkCmdSetStencilReference(commandBuffer, faceMask, reference);
1172}
1173static void entry_vkCmdBindDescriptorSets(
1174 VkCommandBuffer commandBuffer,
1175 VkPipelineBindPoint pipelineBindPoint,
1176 VkPipelineLayout layout,
1177 uint32_t firstSet,
1178 uint32_t descriptorSetCount,
1179 const VkDescriptorSet* pDescriptorSets,
1180 uint32_t dynamicOffsetCount,
1181 const uint32_t* pDynamicOffsets)
1182{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001183 AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001184 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001185 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001186 vkEnc->vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
1187}
1188static void entry_vkCmdBindIndexBuffer(
1189 VkCommandBuffer commandBuffer,
1190 VkBuffer buffer,
1191 VkDeviceSize offset,
1192 VkIndexType indexType)
1193{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001194 AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001195 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001196 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001197 vkEnc->vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType);
1198}
1199static void entry_vkCmdBindVertexBuffers(
1200 VkCommandBuffer commandBuffer,
1201 uint32_t firstBinding,
1202 uint32_t bindingCount,
1203 const VkBuffer* pBuffers,
1204 const VkDeviceSize* pOffsets)
1205{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001206 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001207 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001208 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001209 vkEnc->vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets);
1210}
1211static void entry_vkCmdDraw(
1212 VkCommandBuffer commandBuffer,
1213 uint32_t vertexCount,
1214 uint32_t instanceCount,
1215 uint32_t firstVertex,
1216 uint32_t firstInstance)
1217{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001218 AEMU_SCOPED_TRACE("vkCmdDraw");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001219 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001220 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001221 vkEnc->vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance);
1222}
1223static void entry_vkCmdDrawIndexed(
1224 VkCommandBuffer commandBuffer,
1225 uint32_t indexCount,
1226 uint32_t instanceCount,
1227 uint32_t firstIndex,
1228 int32_t vertexOffset,
1229 uint32_t firstInstance)
1230{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001231 AEMU_SCOPED_TRACE("vkCmdDrawIndexed");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001232 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001233 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001234 vkEnc->vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
1235}
1236static void entry_vkCmdDrawIndirect(
1237 VkCommandBuffer commandBuffer,
1238 VkBuffer buffer,
1239 VkDeviceSize offset,
1240 uint32_t drawCount,
1241 uint32_t stride)
1242{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001243 AEMU_SCOPED_TRACE("vkCmdDrawIndirect");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001244 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001245 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001246 vkEnc->vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride);
1247}
1248static void entry_vkCmdDrawIndexedIndirect(
1249 VkCommandBuffer commandBuffer,
1250 VkBuffer buffer,
1251 VkDeviceSize offset,
1252 uint32_t drawCount,
1253 uint32_t stride)
1254{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001255 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001256 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001257 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001258 vkEnc->vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride);
1259}
1260static void entry_vkCmdDispatch(
1261 VkCommandBuffer commandBuffer,
1262 uint32_t groupCountX,
1263 uint32_t groupCountY,
1264 uint32_t groupCountZ)
1265{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001266 AEMU_SCOPED_TRACE("vkCmdDispatch");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001267 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001268 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001269 vkEnc->vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ);
1270}
1271static void entry_vkCmdDispatchIndirect(
1272 VkCommandBuffer commandBuffer,
1273 VkBuffer buffer,
1274 VkDeviceSize offset)
1275{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001276 AEMU_SCOPED_TRACE("vkCmdDispatchIndirect");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001277 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001278 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001279 vkEnc->vkCmdDispatchIndirect(commandBuffer, buffer, offset);
1280}
1281static void entry_vkCmdCopyBuffer(
1282 VkCommandBuffer commandBuffer,
1283 VkBuffer srcBuffer,
1284 VkBuffer dstBuffer,
1285 uint32_t regionCount,
1286 const VkBufferCopy* pRegions)
1287{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001288 AEMU_SCOPED_TRACE("vkCmdCopyBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001289 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001290 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001291 vkEnc->vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions);
1292}
1293static void entry_vkCmdCopyImage(
1294 VkCommandBuffer commandBuffer,
1295 VkImage srcImage,
1296 VkImageLayout srcImageLayout,
1297 VkImage dstImage,
1298 VkImageLayout dstImageLayout,
1299 uint32_t regionCount,
1300 const VkImageCopy* pRegions)
1301{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001302 AEMU_SCOPED_TRACE("vkCmdCopyImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001303 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001304 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001305 vkEnc->vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
1306}
1307static void entry_vkCmdBlitImage(
1308 VkCommandBuffer commandBuffer,
1309 VkImage srcImage,
1310 VkImageLayout srcImageLayout,
1311 VkImage dstImage,
1312 VkImageLayout dstImageLayout,
1313 uint32_t regionCount,
1314 const VkImageBlit* pRegions,
1315 VkFilter filter)
1316{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001317 AEMU_SCOPED_TRACE("vkCmdBlitImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001318 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001319 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001320 vkEnc->vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter);
1321}
1322static void entry_vkCmdCopyBufferToImage(
1323 VkCommandBuffer commandBuffer,
1324 VkBuffer srcBuffer,
1325 VkImage dstImage,
1326 VkImageLayout dstImageLayout,
1327 uint32_t regionCount,
1328 const VkBufferImageCopy* pRegions)
1329{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001330 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001331 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001332 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001333 vkEnc->vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions);
1334}
1335static void entry_vkCmdCopyImageToBuffer(
1336 VkCommandBuffer commandBuffer,
1337 VkImage srcImage,
1338 VkImageLayout srcImageLayout,
1339 VkBuffer dstBuffer,
1340 uint32_t regionCount,
1341 const VkBufferImageCopy* pRegions)
1342{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001343 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001344 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001345 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001346 vkEnc->vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions);
1347}
1348static void entry_vkCmdUpdateBuffer(
1349 VkCommandBuffer commandBuffer,
1350 VkBuffer dstBuffer,
1351 VkDeviceSize dstOffset,
1352 VkDeviceSize dataSize,
1353 const void* pData)
1354{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001355 AEMU_SCOPED_TRACE("vkCmdUpdateBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001356 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001357 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001358 vkEnc->vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData);
1359}
1360static void entry_vkCmdFillBuffer(
1361 VkCommandBuffer commandBuffer,
1362 VkBuffer dstBuffer,
1363 VkDeviceSize dstOffset,
1364 VkDeviceSize size,
1365 uint32_t data)
1366{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001367 AEMU_SCOPED_TRACE("vkCmdFillBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001368 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001369 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001370 vkEnc->vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data);
1371}
1372static void entry_vkCmdClearColorImage(
1373 VkCommandBuffer commandBuffer,
1374 VkImage image,
1375 VkImageLayout imageLayout,
1376 const VkClearColorValue* pColor,
1377 uint32_t rangeCount,
1378 const VkImageSubresourceRange* pRanges)
1379{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001380 AEMU_SCOPED_TRACE("vkCmdClearColorImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001381 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001382 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001383 vkEnc->vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges);
1384}
1385static void entry_vkCmdClearDepthStencilImage(
1386 VkCommandBuffer commandBuffer,
1387 VkImage image,
1388 VkImageLayout imageLayout,
1389 const VkClearDepthStencilValue* pDepthStencil,
1390 uint32_t rangeCount,
1391 const VkImageSubresourceRange* pRanges)
1392{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001393 AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001394 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001395 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001396 vkEnc->vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges);
1397}
1398static void entry_vkCmdClearAttachments(
1399 VkCommandBuffer commandBuffer,
1400 uint32_t attachmentCount,
1401 const VkClearAttachment* pAttachments,
1402 uint32_t rectCount,
1403 const VkClearRect* pRects)
1404{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001405 AEMU_SCOPED_TRACE("vkCmdClearAttachments");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001406 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001407 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001408 vkEnc->vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects);
1409}
1410static void entry_vkCmdResolveImage(
1411 VkCommandBuffer commandBuffer,
1412 VkImage srcImage,
1413 VkImageLayout srcImageLayout,
1414 VkImage dstImage,
1415 VkImageLayout dstImageLayout,
1416 uint32_t regionCount,
1417 const VkImageResolve* pRegions)
1418{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001419 AEMU_SCOPED_TRACE("vkCmdResolveImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001420 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001421 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001422 vkEnc->vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
1423}
1424static void entry_vkCmdSetEvent(
1425 VkCommandBuffer commandBuffer,
1426 VkEvent event,
1427 VkPipelineStageFlags stageMask)
1428{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001429 AEMU_SCOPED_TRACE("vkCmdSetEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001430 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001431 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001432 vkEnc->vkCmdSetEvent(commandBuffer, event, stageMask);
1433}
1434static void entry_vkCmdResetEvent(
1435 VkCommandBuffer commandBuffer,
1436 VkEvent event,
1437 VkPipelineStageFlags stageMask)
1438{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001439 AEMU_SCOPED_TRACE("vkCmdResetEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001440 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001441 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001442 vkEnc->vkCmdResetEvent(commandBuffer, event, stageMask);
1443}
1444static void entry_vkCmdWaitEvents(
1445 VkCommandBuffer commandBuffer,
1446 uint32_t eventCount,
1447 const VkEvent* pEvents,
1448 VkPipelineStageFlags srcStageMask,
1449 VkPipelineStageFlags dstStageMask,
1450 uint32_t memoryBarrierCount,
1451 const VkMemoryBarrier* pMemoryBarriers,
1452 uint32_t bufferMemoryBarrierCount,
1453 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1454 uint32_t imageMemoryBarrierCount,
1455 const VkImageMemoryBarrier* pImageMemoryBarriers)
1456{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001457 AEMU_SCOPED_TRACE("vkCmdWaitEvents");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001458 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001459 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001460 vkEnc->vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
1461}
1462static void entry_vkCmdPipelineBarrier(
1463 VkCommandBuffer commandBuffer,
1464 VkPipelineStageFlags srcStageMask,
1465 VkPipelineStageFlags dstStageMask,
1466 VkDependencyFlags dependencyFlags,
1467 uint32_t memoryBarrierCount,
1468 const VkMemoryBarrier* pMemoryBarriers,
1469 uint32_t bufferMemoryBarrierCount,
1470 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1471 uint32_t imageMemoryBarrierCount,
1472 const VkImageMemoryBarrier* pImageMemoryBarriers)
1473{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001474 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001475 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001476 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001477 vkEnc->vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
1478}
1479static void entry_vkCmdBeginQuery(
1480 VkCommandBuffer commandBuffer,
1481 VkQueryPool queryPool,
1482 uint32_t query,
1483 VkQueryControlFlags flags)
1484{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001485 AEMU_SCOPED_TRACE("vkCmdBeginQuery");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001486 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001487 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001488 vkEnc->vkCmdBeginQuery(commandBuffer, queryPool, query, flags);
1489}
1490static void entry_vkCmdEndQuery(
1491 VkCommandBuffer commandBuffer,
1492 VkQueryPool queryPool,
1493 uint32_t query)
1494{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001495 AEMU_SCOPED_TRACE("vkCmdEndQuery");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001496 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001497 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001498 vkEnc->vkCmdEndQuery(commandBuffer, queryPool, query);
1499}
1500static void entry_vkCmdResetQueryPool(
1501 VkCommandBuffer commandBuffer,
1502 VkQueryPool queryPool,
1503 uint32_t firstQuery,
1504 uint32_t queryCount)
1505{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001506 AEMU_SCOPED_TRACE("vkCmdResetQueryPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001507 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001508 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001509 vkEnc->vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount);
1510}
1511static void entry_vkCmdWriteTimestamp(
1512 VkCommandBuffer commandBuffer,
1513 VkPipelineStageFlagBits pipelineStage,
1514 VkQueryPool queryPool,
1515 uint32_t query)
1516{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001517 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001518 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001519 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001520 vkEnc->vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query);
1521}
1522static void entry_vkCmdCopyQueryPoolResults(
1523 VkCommandBuffer commandBuffer,
1524 VkQueryPool queryPool,
1525 uint32_t firstQuery,
1526 uint32_t queryCount,
1527 VkBuffer dstBuffer,
1528 VkDeviceSize dstOffset,
1529 VkDeviceSize stride,
1530 VkQueryResultFlags flags)
1531{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001532 AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001533 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001534 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001535 vkEnc->vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags);
1536}
1537static void entry_vkCmdPushConstants(
1538 VkCommandBuffer commandBuffer,
1539 VkPipelineLayout layout,
1540 VkShaderStageFlags stageFlags,
1541 uint32_t offset,
1542 uint32_t size,
1543 const void* pValues)
1544{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001545 AEMU_SCOPED_TRACE("vkCmdPushConstants");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001546 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001547 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001548 vkEnc->vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues);
1549}
1550static void entry_vkCmdBeginRenderPass(
1551 VkCommandBuffer commandBuffer,
1552 const VkRenderPassBeginInfo* pRenderPassBegin,
1553 VkSubpassContents contents)
1554{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001555 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001556 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001557 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001558 vkEnc->vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents);
1559}
1560static void entry_vkCmdNextSubpass(
1561 VkCommandBuffer commandBuffer,
1562 VkSubpassContents contents)
1563{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001564 AEMU_SCOPED_TRACE("vkCmdNextSubpass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001565 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001566 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001567 vkEnc->vkCmdNextSubpass(commandBuffer, contents);
1568}
1569static void entry_vkCmdEndRenderPass(
1570 VkCommandBuffer commandBuffer)
1571{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001572 AEMU_SCOPED_TRACE("vkCmdEndRenderPass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001573 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001574 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001575 vkEnc->vkCmdEndRenderPass(commandBuffer);
1576}
1577static void entry_vkCmdExecuteCommands(
1578 VkCommandBuffer commandBuffer,
1579 uint32_t commandBufferCount,
1580 const VkCommandBuffer* pCommandBuffers)
1581{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001582 AEMU_SCOPED_TRACE("vkCmdExecuteCommands");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001583 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001584 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001585 vkEnc->vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers);
1586}
1587#endif
1588#ifdef VK_VERSION_1_1
1589static VkResult entry_vkEnumerateInstanceVersion(
1590 uint32_t* pApiVersion)
1591{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001592 AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001593 auto vkEnc = HostConnection::get()->vkEncoder();
1594 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
1595 vkEnumerateInstanceVersion_VkResult_return = vkEnc->vkEnumerateInstanceVersion(pApiVersion);
1596 return vkEnumerateInstanceVersion_VkResult_return;
1597}
1598static VkResult entry_vkBindBufferMemory2(
1599 VkDevice device,
1600 uint32_t bindInfoCount,
1601 const VkBindBufferMemoryInfo* pBindInfos)
1602{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001603 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001604 auto vkEnc = HostConnection::get()->vkEncoder();
1605 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001606 auto resources = ResourceTracker::get();
1607 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001608 return vkBindBufferMemory2_VkResult_return;
1609}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001610static VkResult dynCheck_entry_vkBindBufferMemory2(
1611 VkDevice device,
1612 uint32_t bindInfoCount,
1613 const VkBindBufferMemoryInfo* pBindInfos)
1614{
1615 auto resources = ResourceTracker::get();
1616 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1617 {
1618 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2", "VK_VERSION_1_1");
1619 }
1620 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
1621 auto vkEnc = HostConnection::get()->vkEncoder();
1622 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
1623 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1624 return vkBindBufferMemory2_VkResult_return;
1625}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001626static VkResult entry_vkBindImageMemory2(
1627 VkDevice device,
1628 uint32_t bindInfoCount,
1629 const VkBindImageMemoryInfo* pBindInfos)
1630{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001631 AEMU_SCOPED_TRACE("vkBindImageMemory2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001632 auto vkEnc = HostConnection::get()->vkEncoder();
1633 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001634 auto resources = ResourceTracker::get();
1635 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001636 return vkBindImageMemory2_VkResult_return;
1637}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001638static VkResult dynCheck_entry_vkBindImageMemory2(
1639 VkDevice device,
1640 uint32_t bindInfoCount,
1641 const VkBindImageMemoryInfo* pBindInfos)
1642{
1643 auto resources = ResourceTracker::get();
1644 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1645 {
1646 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2", "VK_VERSION_1_1");
1647 }
1648 AEMU_SCOPED_TRACE("vkBindImageMemory2");
1649 auto vkEnc = HostConnection::get()->vkEncoder();
1650 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
1651 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1652 return vkBindImageMemory2_VkResult_return;
1653}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001654static void entry_vkGetDeviceGroupPeerMemoryFeatures(
1655 VkDevice device,
1656 uint32_t heapIndex,
1657 uint32_t localDeviceIndex,
1658 uint32_t remoteDeviceIndex,
1659 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1660{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001661 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001662 auto vkEnc = HostConnection::get()->vkEncoder();
1663 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
1664}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001665static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures(
1666 VkDevice device,
1667 uint32_t heapIndex,
1668 uint32_t localDeviceIndex,
1669 uint32_t remoteDeviceIndex,
1670 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1671{
1672 auto resources = ResourceTracker::get();
1673 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1674 {
1675 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeatures", "VK_VERSION_1_1");
1676 }
1677 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
1678 auto vkEnc = HostConnection::get()->vkEncoder();
1679 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
1680}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001681static void entry_vkCmdSetDeviceMask(
1682 VkCommandBuffer commandBuffer,
1683 uint32_t deviceMask)
1684{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001685 AEMU_SCOPED_TRACE("vkCmdSetDeviceMask");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001686 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001687 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001688 vkEnc->vkCmdSetDeviceMask(commandBuffer, deviceMask);
1689}
1690static void entry_vkCmdDispatchBase(
1691 VkCommandBuffer commandBuffer,
1692 uint32_t baseGroupX,
1693 uint32_t baseGroupY,
1694 uint32_t baseGroupZ,
1695 uint32_t groupCountX,
1696 uint32_t groupCountY,
1697 uint32_t groupCountZ)
1698{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001699 AEMU_SCOPED_TRACE("vkCmdDispatchBase");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001700 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001701 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001702 vkEnc->vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
1703}
1704static VkResult entry_vkEnumeratePhysicalDeviceGroups(
1705 VkInstance instance,
1706 uint32_t* pPhysicalDeviceGroupCount,
1707 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
1708{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001709 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001710 auto vkEnc = HostConnection::get()->vkEncoder();
1711 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
1712 vkEnumeratePhysicalDeviceGroups_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
1713 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
1714}
1715static void entry_vkGetImageMemoryRequirements2(
1716 VkDevice device,
1717 const VkImageMemoryRequirementsInfo2* pInfo,
1718 VkMemoryRequirements2* pMemoryRequirements)
1719{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001720 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001721 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001722 auto resources = ResourceTracker::get();
1723 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001724}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001725static void dynCheck_entry_vkGetImageMemoryRequirements2(
1726 VkDevice device,
1727 const VkImageMemoryRequirementsInfo2* pInfo,
1728 VkMemoryRequirements2* pMemoryRequirements)
1729{
1730 auto resources = ResourceTracker::get();
1731 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1732 {
1733 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2", "VK_VERSION_1_1");
1734 }
1735 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
1736 auto vkEnc = HostConnection::get()->vkEncoder();
1737 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1738}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001739static void entry_vkGetBufferMemoryRequirements2(
1740 VkDevice device,
1741 const VkBufferMemoryRequirementsInfo2* pInfo,
1742 VkMemoryRequirements2* pMemoryRequirements)
1743{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001744 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001745 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001746 auto resources = ResourceTracker::get();
1747 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001748}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001749static void dynCheck_entry_vkGetBufferMemoryRequirements2(
1750 VkDevice device,
1751 const VkBufferMemoryRequirementsInfo2* pInfo,
1752 VkMemoryRequirements2* pMemoryRequirements)
1753{
1754 auto resources = ResourceTracker::get();
1755 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1756 {
1757 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2", "VK_VERSION_1_1");
1758 }
1759 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
1760 auto vkEnc = HostConnection::get()->vkEncoder();
1761 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1762}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001763static void entry_vkGetImageSparseMemoryRequirements2(
1764 VkDevice device,
1765 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1766 uint32_t* pSparseMemoryRequirementCount,
1767 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1768{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001769 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001770 auto vkEnc = HostConnection::get()->vkEncoder();
1771 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
1772}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001773static void dynCheck_entry_vkGetImageSparseMemoryRequirements2(
1774 VkDevice device,
1775 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1776 uint32_t* pSparseMemoryRequirementCount,
1777 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1778{
1779 auto resources = ResourceTracker::get();
1780 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1781 {
1782 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2", "VK_VERSION_1_1");
1783 }
1784 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
1785 auto vkEnc = HostConnection::get()->vkEncoder();
1786 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
1787}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001788static void entry_vkGetPhysicalDeviceFeatures2(
1789 VkPhysicalDevice physicalDevice,
1790 VkPhysicalDeviceFeatures2* pFeatures)
1791{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001792 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001793 auto vkEnc = HostConnection::get()->vkEncoder();
1794 vkEnc->vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures);
1795}
1796static void entry_vkGetPhysicalDeviceProperties2(
1797 VkPhysicalDevice physicalDevice,
1798 VkPhysicalDeviceProperties2* pProperties)
1799{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001800 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001801 auto vkEnc = HostConnection::get()->vkEncoder();
1802 vkEnc->vkGetPhysicalDeviceProperties2(physicalDevice, pProperties);
1803}
1804static void entry_vkGetPhysicalDeviceFormatProperties2(
1805 VkPhysicalDevice physicalDevice,
1806 VkFormat format,
1807 VkFormatProperties2* pFormatProperties)
1808{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001809 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001810 auto vkEnc = HostConnection::get()->vkEncoder();
1811 vkEnc->vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties);
1812}
1813static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2(
1814 VkPhysicalDevice physicalDevice,
1815 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
1816 VkImageFormatProperties2* pImageFormatProperties)
1817{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001818 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001819 auto vkEnc = HostConnection::get()->vkEncoder();
1820 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07001821 auto resources = ResourceTracker::get();
1822 vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001823 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
1824}
1825static void entry_vkGetPhysicalDeviceQueueFamilyProperties2(
1826 VkPhysicalDevice physicalDevice,
1827 uint32_t* pQueueFamilyPropertyCount,
1828 VkQueueFamilyProperties2* pQueueFamilyProperties)
1829{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001830 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001831 auto vkEnc = HostConnection::get()->vkEncoder();
1832 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
1833}
1834static void entry_vkGetPhysicalDeviceMemoryProperties2(
1835 VkPhysicalDevice physicalDevice,
1836 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
1837{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001838 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001839 auto vkEnc = HostConnection::get()->vkEncoder();
1840 vkEnc->vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties);
1841}
1842static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2(
1843 VkPhysicalDevice physicalDevice,
1844 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
1845 uint32_t* pPropertyCount,
1846 VkSparseImageFormatProperties2* pProperties)
1847{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001848 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001849 auto vkEnc = HostConnection::get()->vkEncoder();
1850 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties);
1851}
1852static void entry_vkTrimCommandPool(
1853 VkDevice device,
1854 VkCommandPool commandPool,
1855 VkCommandPoolTrimFlags flags)
1856{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001857 AEMU_SCOPED_TRACE("vkTrimCommandPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001858 auto vkEnc = HostConnection::get()->vkEncoder();
1859 vkEnc->vkTrimCommandPool(device, commandPool, flags);
1860}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001861static void dynCheck_entry_vkTrimCommandPool(
1862 VkDevice device,
1863 VkCommandPool commandPool,
1864 VkCommandPoolTrimFlags flags)
1865{
1866 auto resources = ResourceTracker::get();
1867 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1868 {
1869 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPool", "VK_VERSION_1_1");
1870 }
1871 AEMU_SCOPED_TRACE("vkTrimCommandPool");
1872 auto vkEnc = HostConnection::get()->vkEncoder();
1873 vkEnc->vkTrimCommandPool(device, commandPool, flags);
1874}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001875static void entry_vkGetDeviceQueue2(
1876 VkDevice device,
1877 const VkDeviceQueueInfo2* pQueueInfo,
1878 VkQueue* pQueue)
1879{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001880 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001881 auto vkEnc = HostConnection::get()->vkEncoder();
1882 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue);
1883}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001884static void dynCheck_entry_vkGetDeviceQueue2(
1885 VkDevice device,
1886 const VkDeviceQueueInfo2* pQueueInfo,
1887 VkQueue* pQueue)
1888{
1889 auto resources = ResourceTracker::get();
1890 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1891 {
1892 sOnInvalidDynamicallyCheckedCall("vkGetDeviceQueue2", "VK_VERSION_1_1");
1893 }
1894 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
1895 auto vkEnc = HostConnection::get()->vkEncoder();
1896 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue);
1897}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001898static VkResult entry_vkCreateSamplerYcbcrConversion(
1899 VkDevice device,
1900 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1901 const VkAllocationCallbacks* pAllocator,
1902 VkSamplerYcbcrConversion* pYcbcrConversion)
1903{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001904 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001905 auto vkEnc = HostConnection::get()->vkEncoder();
1906 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08001907 auto resources = ResourceTracker::get();
1908 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001909 return vkCreateSamplerYcbcrConversion_VkResult_return;
1910}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001911static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversion(
1912 VkDevice device,
1913 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1914 const VkAllocationCallbacks* pAllocator,
1915 VkSamplerYcbcrConversion* pYcbcrConversion)
1916{
1917 auto resources = ResourceTracker::get();
1918 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1919 {
1920 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversion", "VK_VERSION_1_1");
1921 }
1922 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
1923 auto vkEnc = HostConnection::get()->vkEncoder();
1924 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
1925 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
1926 return vkCreateSamplerYcbcrConversion_VkResult_return;
1927}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001928static void entry_vkDestroySamplerYcbcrConversion(
1929 VkDevice device,
1930 VkSamplerYcbcrConversion ycbcrConversion,
1931 const VkAllocationCallbacks* pAllocator)
1932{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001933 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001934 auto vkEnc = HostConnection::get()->vkEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07001935 auto resources = ResourceTracker::get();
1936 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001937}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001938static void dynCheck_entry_vkDestroySamplerYcbcrConversion(
1939 VkDevice device,
1940 VkSamplerYcbcrConversion ycbcrConversion,
1941 const VkAllocationCallbacks* pAllocator)
1942{
1943 auto resources = ResourceTracker::get();
1944 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1945 {
1946 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversion", "VK_VERSION_1_1");
1947 }
1948 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
1949 auto vkEnc = HostConnection::get()->vkEncoder();
1950 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
1951}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001952static VkResult entry_vkCreateDescriptorUpdateTemplate(
1953 VkDevice device,
1954 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1955 const VkAllocationCallbacks* pAllocator,
1956 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1957{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001958 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001959 auto vkEnc = HostConnection::get()->vkEncoder();
1960 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
1961 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
1962 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1963}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001964static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplate(
1965 VkDevice device,
1966 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1967 const VkAllocationCallbacks* pAllocator,
1968 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1969{
1970 auto resources = ResourceTracker::get();
1971 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1972 {
1973 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplate", "VK_VERSION_1_1");
1974 }
1975 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
1976 auto vkEnc = HostConnection::get()->vkEncoder();
1977 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
1978 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
1979 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1980}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001981static void entry_vkDestroyDescriptorUpdateTemplate(
1982 VkDevice device,
1983 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1984 const VkAllocationCallbacks* pAllocator)
1985{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001986 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001987 auto vkEnc = HostConnection::get()->vkEncoder();
1988 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator);
1989}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001990static void dynCheck_entry_vkDestroyDescriptorUpdateTemplate(
1991 VkDevice device,
1992 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1993 const VkAllocationCallbacks* pAllocator)
1994{
1995 auto resources = ResourceTracker::get();
1996 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1997 {
1998 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplate", "VK_VERSION_1_1");
1999 }
2000 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
2001 auto vkEnc = HostConnection::get()->vkEncoder();
2002 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator);
2003}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002004static void entry_vkUpdateDescriptorSetWithTemplate(
2005 VkDevice device,
2006 VkDescriptorSet descriptorSet,
2007 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
2008 const void* pData)
2009{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002010 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002011 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07002012 auto resources = ResourceTracker::get();
2013 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002014}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002015static void dynCheck_entry_vkUpdateDescriptorSetWithTemplate(
2016 VkDevice device,
2017 VkDescriptorSet descriptorSet,
2018 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
2019 const void* pData)
2020{
2021 auto resources = ResourceTracker::get();
2022 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2023 {
2024 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplate", "VK_VERSION_1_1");
2025 }
2026 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
2027 auto vkEnc = HostConnection::get()->vkEncoder();
2028 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
2029}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002030static void entry_vkGetPhysicalDeviceExternalBufferProperties(
2031 VkPhysicalDevice physicalDevice,
2032 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
2033 VkExternalBufferProperties* pExternalBufferProperties)
2034{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002035 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002036 auto vkEnc = HostConnection::get()->vkEncoder();
2037 vkEnc->vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
2038}
2039static void entry_vkGetPhysicalDeviceExternalFenceProperties(
2040 VkPhysicalDevice physicalDevice,
2041 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
2042 VkExternalFenceProperties* pExternalFenceProperties)
2043{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002044 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002045 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07002046 auto resources = ResourceTracker::get();
2047 resources->on_vkGetPhysicalDeviceExternalFenceProperties(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002048}
2049static void entry_vkGetPhysicalDeviceExternalSemaphoreProperties(
2050 VkPhysicalDevice physicalDevice,
2051 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2052 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
2053{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002054 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002055 auto vkEnc = HostConnection::get()->vkEncoder();
2056 vkEnc->vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
2057}
2058static void entry_vkGetDescriptorSetLayoutSupport(
2059 VkDevice device,
2060 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2061 VkDescriptorSetLayoutSupport* pSupport)
2062{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002063 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002064 auto vkEnc = HostConnection::get()->vkEncoder();
2065 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport);
2066}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002067static void dynCheck_entry_vkGetDescriptorSetLayoutSupport(
2068 VkDevice device,
2069 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2070 VkDescriptorSetLayoutSupport* pSupport)
2071{
2072 auto resources = ResourceTracker::get();
2073 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2074 {
2075 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupport", "VK_VERSION_1_1");
2076 }
2077 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
2078 auto vkEnc = HostConnection::get()->vkEncoder();
2079 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport);
2080}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002081#endif
2082#ifdef VK_KHR_surface
2083static void entry_vkDestroySurfaceKHR(
2084 VkInstance instance,
2085 VkSurfaceKHR surface,
2086 const VkAllocationCallbacks* pAllocator)
2087{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002088 AEMU_SCOPED_TRACE("vkDestroySurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002089 auto vkEnc = HostConnection::get()->vkEncoder();
2090 vkEnc->vkDestroySurfaceKHR(instance, surface, pAllocator);
2091}
2092static VkResult entry_vkGetPhysicalDeviceSurfaceSupportKHR(
2093 VkPhysicalDevice physicalDevice,
2094 uint32_t queueFamilyIndex,
2095 VkSurfaceKHR surface,
2096 VkBool32* pSupported)
2097{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002098 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002099 auto vkEnc = HostConnection::get()->vkEncoder();
2100 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
2101 vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported);
2102 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
2103}
2104static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
2105 VkPhysicalDevice physicalDevice,
2106 VkSurfaceKHR surface,
2107 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
2108{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002109 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002110 auto vkEnc = HostConnection::get()->vkEncoder();
2111 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
2112 vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities);
2113 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
2114}
2115static VkResult entry_vkGetPhysicalDeviceSurfaceFormatsKHR(
2116 VkPhysicalDevice physicalDevice,
2117 VkSurfaceKHR surface,
2118 uint32_t* pSurfaceFormatCount,
2119 VkSurfaceFormatKHR* pSurfaceFormats)
2120{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002121 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002122 auto vkEnc = HostConnection::get()->vkEncoder();
2123 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
2124 vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats);
2125 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
2126}
2127static VkResult entry_vkGetPhysicalDeviceSurfacePresentModesKHR(
2128 VkPhysicalDevice physicalDevice,
2129 VkSurfaceKHR surface,
2130 uint32_t* pPresentModeCount,
2131 VkPresentModeKHR* pPresentModes)
2132{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002133 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002134 auto vkEnc = HostConnection::get()->vkEncoder();
2135 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
2136 vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes);
2137 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
2138}
2139#endif
2140#ifdef VK_KHR_swapchain
2141static VkResult entry_vkCreateSwapchainKHR(
2142 VkDevice device,
2143 const VkSwapchainCreateInfoKHR* pCreateInfo,
2144 const VkAllocationCallbacks* pAllocator,
2145 VkSwapchainKHR* pSwapchain)
2146{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002147 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002148 auto vkEnc = HostConnection::get()->vkEncoder();
2149 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
2150 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain);
2151 return vkCreateSwapchainKHR_VkResult_return;
2152}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002153static VkResult dynCheck_entry_vkCreateSwapchainKHR(
2154 VkDevice device,
2155 const VkSwapchainCreateInfoKHR* pCreateInfo,
2156 const VkAllocationCallbacks* pAllocator,
2157 VkSwapchainKHR* pSwapchain)
2158{
2159 auto resources = ResourceTracker::get();
2160 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2161 {
2162 sOnInvalidDynamicallyCheckedCall("vkCreateSwapchainKHR", "VK_KHR_swapchain");
2163 }
2164 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
2165 auto vkEnc = HostConnection::get()->vkEncoder();
2166 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
2167 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain);
2168 return vkCreateSwapchainKHR_VkResult_return;
2169}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002170static void entry_vkDestroySwapchainKHR(
2171 VkDevice device,
2172 VkSwapchainKHR swapchain,
2173 const VkAllocationCallbacks* pAllocator)
2174{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002175 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002176 auto vkEnc = HostConnection::get()->vkEncoder();
2177 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator);
2178}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002179static void dynCheck_entry_vkDestroySwapchainKHR(
2180 VkDevice device,
2181 VkSwapchainKHR swapchain,
2182 const VkAllocationCallbacks* pAllocator)
2183{
2184 auto resources = ResourceTracker::get();
2185 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2186 {
2187 sOnInvalidDynamicallyCheckedCall("vkDestroySwapchainKHR", "VK_KHR_swapchain");
2188 }
2189 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
2190 auto vkEnc = HostConnection::get()->vkEncoder();
2191 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator);
2192}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002193static VkResult entry_vkGetSwapchainImagesKHR(
2194 VkDevice device,
2195 VkSwapchainKHR swapchain,
2196 uint32_t* pSwapchainImageCount,
2197 VkImage* pSwapchainImages)
2198{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002199 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002200 auto vkEnc = HostConnection::get()->vkEncoder();
2201 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
2202 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages);
2203 return vkGetSwapchainImagesKHR_VkResult_return;
2204}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002205static VkResult dynCheck_entry_vkGetSwapchainImagesKHR(
2206 VkDevice device,
2207 VkSwapchainKHR swapchain,
2208 uint32_t* pSwapchainImageCount,
2209 VkImage* pSwapchainImages)
2210{
2211 auto resources = ResourceTracker::get();
2212 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2213 {
2214 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainImagesKHR", "VK_KHR_swapchain");
2215 }
2216 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
2217 auto vkEnc = HostConnection::get()->vkEncoder();
2218 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
2219 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages);
2220 return vkGetSwapchainImagesKHR_VkResult_return;
2221}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002222static VkResult entry_vkAcquireNextImageKHR(
2223 VkDevice device,
2224 VkSwapchainKHR swapchain,
2225 uint64_t timeout,
2226 VkSemaphore semaphore,
2227 VkFence fence,
2228 uint32_t* pImageIndex)
2229{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002230 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002231 auto vkEnc = HostConnection::get()->vkEncoder();
2232 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
2233 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex);
2234 return vkAcquireNextImageKHR_VkResult_return;
2235}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002236static VkResult dynCheck_entry_vkAcquireNextImageKHR(
2237 VkDevice device,
2238 VkSwapchainKHR swapchain,
2239 uint64_t timeout,
2240 VkSemaphore semaphore,
2241 VkFence fence,
2242 uint32_t* pImageIndex)
2243{
2244 auto resources = ResourceTracker::get();
2245 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2246 {
2247 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImageKHR", "VK_KHR_swapchain");
2248 }
2249 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
2250 auto vkEnc = HostConnection::get()->vkEncoder();
2251 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
2252 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex);
2253 return vkAcquireNextImageKHR_VkResult_return;
2254}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002255static VkResult entry_vkQueuePresentKHR(
2256 VkQueue queue,
2257 const VkPresentInfoKHR* pPresentInfo)
2258{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002259 AEMU_SCOPED_TRACE("vkQueuePresentKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002260 auto vkEnc = HostConnection::get()->vkEncoder();
2261 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
2262 vkQueuePresentKHR_VkResult_return = vkEnc->vkQueuePresentKHR(queue, pPresentInfo);
2263 return vkQueuePresentKHR_VkResult_return;
2264}
2265static VkResult entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2266 VkDevice device,
2267 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2268{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002269 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002270 auto vkEnc = HostConnection::get()->vkEncoder();
2271 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
2272 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities);
2273 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2274}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002275static VkResult dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2276 VkDevice device,
2277 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2278{
2279 auto resources = ResourceTracker::get();
2280 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2281 {
2282 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPresentCapabilitiesKHR", "VK_KHR_swapchain");
2283 }
2284 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
2285 auto vkEnc = HostConnection::get()->vkEncoder();
2286 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
2287 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities);
2288 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2289}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002290static VkResult entry_vkGetDeviceGroupSurfacePresentModesKHR(
2291 VkDevice device,
2292 VkSurfaceKHR surface,
2293 VkDeviceGroupPresentModeFlagsKHR* pModes)
2294{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002295 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002296 auto vkEnc = HostConnection::get()->vkEncoder();
2297 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
2298 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes);
2299 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2300}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002301static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR(
2302 VkDevice device,
2303 VkSurfaceKHR surface,
2304 VkDeviceGroupPresentModeFlagsKHR* pModes)
2305{
2306 auto resources = ResourceTracker::get();
2307 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2308 {
2309 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModesKHR", "VK_KHR_swapchain");
2310 }
2311 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
2312 auto vkEnc = HostConnection::get()->vkEncoder();
2313 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
2314 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes);
2315 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2316}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002317static VkResult entry_vkGetPhysicalDevicePresentRectanglesKHR(
2318 VkPhysicalDevice physicalDevice,
2319 VkSurfaceKHR surface,
2320 uint32_t* pRectCount,
2321 VkRect2D* pRects)
2322{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002323 AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002324 auto vkEnc = HostConnection::get()->vkEncoder();
2325 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
2326 vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = vkEnc->vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects);
2327 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
2328}
2329static VkResult entry_vkAcquireNextImage2KHR(
2330 VkDevice device,
2331 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2332 uint32_t* pImageIndex)
2333{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002334 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002335 auto vkEnc = HostConnection::get()->vkEncoder();
2336 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
2337 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex);
2338 return vkAcquireNextImage2KHR_VkResult_return;
2339}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002340static VkResult dynCheck_entry_vkAcquireNextImage2KHR(
2341 VkDevice device,
2342 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2343 uint32_t* pImageIndex)
2344{
2345 auto resources = ResourceTracker::get();
2346 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2347 {
2348 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImage2KHR", "VK_KHR_swapchain");
2349 }
2350 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
2351 auto vkEnc = HostConnection::get()->vkEncoder();
2352 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
2353 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex);
2354 return vkAcquireNextImage2KHR_VkResult_return;
2355}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002356#endif
2357#ifdef VK_KHR_display
2358static VkResult entry_vkGetPhysicalDeviceDisplayPropertiesKHR(
2359 VkPhysicalDevice physicalDevice,
2360 uint32_t* pPropertyCount,
2361 VkDisplayPropertiesKHR* pProperties)
2362{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002363 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002364 auto vkEnc = HostConnection::get()->vkEncoder();
2365 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
2366 vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties);
2367 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
2368}
2369static VkResult entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
2370 VkPhysicalDevice physicalDevice,
2371 uint32_t* pPropertyCount,
2372 VkDisplayPlanePropertiesKHR* pProperties)
2373{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002374 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002375 auto vkEnc = HostConnection::get()->vkEncoder();
2376 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
2377 vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties);
2378 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
2379}
2380static VkResult entry_vkGetDisplayPlaneSupportedDisplaysKHR(
2381 VkPhysicalDevice physicalDevice,
2382 uint32_t planeIndex,
2383 uint32_t* pDisplayCount,
2384 VkDisplayKHR* pDisplays)
2385{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002386 AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002387 auto vkEnc = HostConnection::get()->vkEncoder();
2388 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
2389 vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = vkEnc->vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays);
2390 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
2391}
2392static VkResult entry_vkGetDisplayModePropertiesKHR(
2393 VkPhysicalDevice physicalDevice,
2394 VkDisplayKHR display,
2395 uint32_t* pPropertyCount,
2396 VkDisplayModePropertiesKHR* pProperties)
2397{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002398 AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002399 auto vkEnc = HostConnection::get()->vkEncoder();
2400 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
2401 vkGetDisplayModePropertiesKHR_VkResult_return = vkEnc->vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties);
2402 return vkGetDisplayModePropertiesKHR_VkResult_return;
2403}
2404static VkResult entry_vkCreateDisplayModeKHR(
2405 VkPhysicalDevice physicalDevice,
2406 VkDisplayKHR display,
2407 const VkDisplayModeCreateInfoKHR* pCreateInfo,
2408 const VkAllocationCallbacks* pAllocator,
2409 VkDisplayModeKHR* pMode)
2410{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002411 AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002412 auto vkEnc = HostConnection::get()->vkEncoder();
2413 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
2414 vkCreateDisplayModeKHR_VkResult_return = vkEnc->vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode);
2415 return vkCreateDisplayModeKHR_VkResult_return;
2416}
2417static VkResult entry_vkGetDisplayPlaneCapabilitiesKHR(
2418 VkPhysicalDevice physicalDevice,
2419 VkDisplayModeKHR mode,
2420 uint32_t planeIndex,
2421 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
2422{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002423 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002424 auto vkEnc = HostConnection::get()->vkEncoder();
2425 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
2426 vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities);
2427 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
2428}
2429static VkResult entry_vkCreateDisplayPlaneSurfaceKHR(
2430 VkInstance instance,
2431 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
2432 const VkAllocationCallbacks* pAllocator,
2433 VkSurfaceKHR* pSurface)
2434{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002435 AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002436 auto vkEnc = HostConnection::get()->vkEncoder();
2437 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
2438 vkCreateDisplayPlaneSurfaceKHR_VkResult_return = vkEnc->vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2439 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
2440}
2441#endif
2442#ifdef VK_KHR_display_swapchain
2443static VkResult entry_vkCreateSharedSwapchainsKHR(
2444 VkDevice device,
2445 uint32_t swapchainCount,
2446 const VkSwapchainCreateInfoKHR* pCreateInfos,
2447 const VkAllocationCallbacks* pAllocator,
2448 VkSwapchainKHR* pSwapchains)
2449{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002450 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002451 auto vkEnc = HostConnection::get()->vkEncoder();
2452 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
2453 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains);
2454 return vkCreateSharedSwapchainsKHR_VkResult_return;
2455}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002456static VkResult dynCheck_entry_vkCreateSharedSwapchainsKHR(
2457 VkDevice device,
2458 uint32_t swapchainCount,
2459 const VkSwapchainCreateInfoKHR* pCreateInfos,
2460 const VkAllocationCallbacks* pAllocator,
2461 VkSwapchainKHR* pSwapchains)
2462{
2463 auto resources = ResourceTracker::get();
2464 if (!resources->hasDeviceExtension(device, "VK_KHR_display_swapchain"))
2465 {
2466 sOnInvalidDynamicallyCheckedCall("vkCreateSharedSwapchainsKHR", "VK_KHR_display_swapchain");
2467 }
2468 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
2469 auto vkEnc = HostConnection::get()->vkEncoder();
2470 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
2471 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains);
2472 return vkCreateSharedSwapchainsKHR_VkResult_return;
2473}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002474#endif
2475#ifdef VK_KHR_xlib_surface
2476static VkResult entry_vkCreateXlibSurfaceKHR(
2477 VkInstance instance,
2478 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
2479 const VkAllocationCallbacks* pAllocator,
2480 VkSurfaceKHR* pSurface)
2481{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002482 AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002483 auto vkEnc = HostConnection::get()->vkEncoder();
2484 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
2485 vkCreateXlibSurfaceKHR_VkResult_return = vkEnc->vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2486 return vkCreateXlibSurfaceKHR_VkResult_return;
2487}
2488static VkBool32 entry_vkGetPhysicalDeviceXlibPresentationSupportKHR(
2489 VkPhysicalDevice physicalDevice,
2490 uint32_t queueFamilyIndex,
2491 Display* dpy,
2492 VisualID visualID)
2493{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002494 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002495 auto vkEnc = HostConnection::get()->vkEncoder();
2496 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2497 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID);
2498 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
2499}
2500#endif
2501#ifdef VK_KHR_xcb_surface
2502static VkResult entry_vkCreateXcbSurfaceKHR(
2503 VkInstance instance,
2504 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
2505 const VkAllocationCallbacks* pAllocator,
2506 VkSurfaceKHR* pSurface)
2507{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002508 AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002509 auto vkEnc = HostConnection::get()->vkEncoder();
2510 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
2511 vkCreateXcbSurfaceKHR_VkResult_return = vkEnc->vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2512 return vkCreateXcbSurfaceKHR_VkResult_return;
2513}
2514static VkBool32 entry_vkGetPhysicalDeviceXcbPresentationSupportKHR(
2515 VkPhysicalDevice physicalDevice,
2516 uint32_t queueFamilyIndex,
2517 xcb_connection_t* connection,
2518 xcb_visualid_t visual_id)
2519{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002520 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002521 auto vkEnc = HostConnection::get()->vkEncoder();
2522 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2523 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id);
2524 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
2525}
2526#endif
2527#ifdef VK_KHR_wayland_surface
2528static VkResult entry_vkCreateWaylandSurfaceKHR(
2529 VkInstance instance,
2530 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
2531 const VkAllocationCallbacks* pAllocator,
2532 VkSurfaceKHR* pSurface)
2533{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002534 AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002535 auto vkEnc = HostConnection::get()->vkEncoder();
2536 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
2537 vkCreateWaylandSurfaceKHR_VkResult_return = vkEnc->vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2538 return vkCreateWaylandSurfaceKHR_VkResult_return;
2539}
2540static VkBool32 entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
2541 VkPhysicalDevice physicalDevice,
2542 uint32_t queueFamilyIndex,
2543 wl_display* display)
2544{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002545 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002546 auto vkEnc = HostConnection::get()->vkEncoder();
2547 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2548 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display);
2549 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
2550}
2551#endif
2552#ifdef VK_KHR_mir_surface
2553static VkResult entry_vkCreateMirSurfaceKHR(
2554 VkInstance instance,
2555 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
2556 const VkAllocationCallbacks* pAllocator,
2557 VkSurfaceKHR* pSurface)
2558{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002559 AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002560 auto vkEnc = HostConnection::get()->vkEncoder();
2561 VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
2562 vkCreateMirSurfaceKHR_VkResult_return = vkEnc->vkCreateMirSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2563 return vkCreateMirSurfaceKHR_VkResult_return;
2564}
2565static VkBool32 entry_vkGetPhysicalDeviceMirPresentationSupportKHR(
2566 VkPhysicalDevice physicalDevice,
2567 uint32_t queueFamilyIndex,
2568 MirConnection* connection)
2569{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002570 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002571 auto vkEnc = HostConnection::get()->vkEncoder();
2572 VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2573 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceMirPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection);
2574 return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
2575}
2576#endif
2577#ifdef VK_KHR_android_surface
2578static VkResult entry_vkCreateAndroidSurfaceKHR(
2579 VkInstance instance,
2580 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
2581 const VkAllocationCallbacks* pAllocator,
2582 VkSurfaceKHR* pSurface)
2583{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002584 AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002585 auto vkEnc = HostConnection::get()->vkEncoder();
2586 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
2587 vkCreateAndroidSurfaceKHR_VkResult_return = vkEnc->vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2588 return vkCreateAndroidSurfaceKHR_VkResult_return;
2589}
2590#endif
2591#ifdef VK_KHR_win32_surface
2592static VkResult entry_vkCreateWin32SurfaceKHR(
2593 VkInstance instance,
2594 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
2595 const VkAllocationCallbacks* pAllocator,
2596 VkSurfaceKHR* pSurface)
2597{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002598 AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002599 auto vkEnc = HostConnection::get()->vkEncoder();
2600 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
2601 vkCreateWin32SurfaceKHR_VkResult_return = vkEnc->vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2602 return vkCreateWin32SurfaceKHR_VkResult_return;
2603}
2604static VkBool32 entry_vkGetPhysicalDeviceWin32PresentationSupportKHR(
2605 VkPhysicalDevice physicalDevice,
2606 uint32_t queueFamilyIndex)
2607{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002608 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002609 auto vkEnc = HostConnection::get()->vkEncoder();
2610 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
2611 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex);
2612 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
2613}
2614#endif
2615#ifdef VK_KHR_sampler_mirror_clamp_to_edge
2616#endif
2617#ifdef VK_KHR_multiview
2618#endif
2619#ifdef VK_KHR_get_physical_device_properties2
2620static void entry_vkGetPhysicalDeviceFeatures2KHR(
2621 VkPhysicalDevice physicalDevice,
2622 VkPhysicalDeviceFeatures2* pFeatures)
2623{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002624 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002625 auto vkEnc = HostConnection::get()->vkEncoder();
2626 vkEnc->vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures);
2627}
2628static void entry_vkGetPhysicalDeviceProperties2KHR(
2629 VkPhysicalDevice physicalDevice,
2630 VkPhysicalDeviceProperties2* pProperties)
2631{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002632 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002633 auto vkEnc = HostConnection::get()->vkEncoder();
2634 vkEnc->vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties);
2635}
2636static void entry_vkGetPhysicalDeviceFormatProperties2KHR(
2637 VkPhysicalDevice physicalDevice,
2638 VkFormat format,
2639 VkFormatProperties2* pFormatProperties)
2640{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002641 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002642 auto vkEnc = HostConnection::get()->vkEncoder();
2643 vkEnc->vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties);
2644}
2645static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2KHR(
2646 VkPhysicalDevice physicalDevice,
2647 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
2648 VkImageFormatProperties2* pImageFormatProperties)
2649{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002650 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002651 auto vkEnc = HostConnection::get()->vkEncoder();
2652 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07002653 auto resources = ResourceTracker::get();
2654 vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2KHR(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002655 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
2656}
2657static void entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
2658 VkPhysicalDevice physicalDevice,
2659 uint32_t* pQueueFamilyPropertyCount,
2660 VkQueueFamilyProperties2* pQueueFamilyProperties)
2661{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002662 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002663 auto vkEnc = HostConnection::get()->vkEncoder();
2664 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
2665}
2666static void entry_vkGetPhysicalDeviceMemoryProperties2KHR(
2667 VkPhysicalDevice physicalDevice,
2668 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
2669{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002670 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002671 auto vkEnc = HostConnection::get()->vkEncoder();
2672 vkEnc->vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties);
2673}
2674static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
2675 VkPhysicalDevice physicalDevice,
2676 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
2677 uint32_t* pPropertyCount,
2678 VkSparseImageFormatProperties2* pProperties)
2679{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002680 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002681 auto vkEnc = HostConnection::get()->vkEncoder();
2682 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties);
2683}
2684#endif
2685#ifdef VK_KHR_device_group
2686static void entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2687 VkDevice device,
2688 uint32_t heapIndex,
2689 uint32_t localDeviceIndex,
2690 uint32_t remoteDeviceIndex,
2691 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2692{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002693 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002694 auto vkEnc = HostConnection::get()->vkEncoder();
2695 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
2696}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002697static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2698 VkDevice device,
2699 uint32_t heapIndex,
2700 uint32_t localDeviceIndex,
2701 uint32_t remoteDeviceIndex,
2702 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2703{
2704 auto resources = ResourceTracker::get();
2705 if (!resources->hasDeviceExtension(device, "VK_KHR_device_group"))
2706 {
2707 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeaturesKHR", "VK_KHR_device_group");
2708 }
2709 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
2710 auto vkEnc = HostConnection::get()->vkEncoder();
2711 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
2712}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002713static void entry_vkCmdSetDeviceMaskKHR(
2714 VkCommandBuffer commandBuffer,
2715 uint32_t deviceMask)
2716{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002717 AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002718 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07002719 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002720 vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask);
2721}
2722static void entry_vkCmdDispatchBaseKHR(
2723 VkCommandBuffer commandBuffer,
2724 uint32_t baseGroupX,
2725 uint32_t baseGroupY,
2726 uint32_t baseGroupZ,
2727 uint32_t groupCountX,
2728 uint32_t groupCountY,
2729 uint32_t groupCountZ)
2730{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002731 AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002732 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07002733 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002734 vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
2735}
2736#endif
2737#ifdef VK_KHR_shader_draw_parameters
2738#endif
2739#ifdef VK_KHR_maintenance1
2740static void entry_vkTrimCommandPoolKHR(
2741 VkDevice device,
2742 VkCommandPool commandPool,
2743 VkCommandPoolTrimFlags flags)
2744{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002745 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002746 auto vkEnc = HostConnection::get()->vkEncoder();
2747 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags);
2748}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002749static void dynCheck_entry_vkTrimCommandPoolKHR(
2750 VkDevice device,
2751 VkCommandPool commandPool,
2752 VkCommandPoolTrimFlags flags)
2753{
2754 auto resources = ResourceTracker::get();
2755 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance1"))
2756 {
2757 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPoolKHR", "VK_KHR_maintenance1");
2758 }
2759 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
2760 auto vkEnc = HostConnection::get()->vkEncoder();
2761 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags);
2762}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002763#endif
2764#ifdef VK_KHR_device_group_creation
2765static VkResult entry_vkEnumeratePhysicalDeviceGroupsKHR(
2766 VkInstance instance,
2767 uint32_t* pPhysicalDeviceGroupCount,
2768 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
2769{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002770 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002771 auto vkEnc = HostConnection::get()->vkEncoder();
2772 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
2773 vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
2774 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
2775}
2776#endif
2777#ifdef VK_KHR_external_memory_capabilities
2778static void entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
2779 VkPhysicalDevice physicalDevice,
2780 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
2781 VkExternalBufferProperties* pExternalBufferProperties)
2782{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002783 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002784 auto vkEnc = HostConnection::get()->vkEncoder();
2785 vkEnc->vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
2786}
2787#endif
2788#ifdef VK_KHR_external_memory
2789#endif
2790#ifdef VK_KHR_external_memory_win32
2791static VkResult entry_vkGetMemoryWin32HandleKHR(
2792 VkDevice device,
2793 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2794 HANDLE* pHandle)
2795{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002796 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002797 auto vkEnc = HostConnection::get()->vkEncoder();
2798 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
2799 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2800 return vkGetMemoryWin32HandleKHR_VkResult_return;
2801}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002802static VkResult dynCheck_entry_vkGetMemoryWin32HandleKHR(
2803 VkDevice device,
2804 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2805 HANDLE* pHandle)
2806{
2807 auto resources = ResourceTracker::get();
2808 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
2809 {
2810 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleKHR", "VK_KHR_external_memory_win32");
2811 }
2812 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
2813 auto vkEnc = HostConnection::get()->vkEncoder();
2814 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
2815 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2816 return vkGetMemoryWin32HandleKHR_VkResult_return;
2817}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002818static VkResult entry_vkGetMemoryWin32HandlePropertiesKHR(
2819 VkDevice device,
2820 VkExternalMemoryHandleTypeFlagBits handleType,
2821 HANDLE handle,
2822 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
2823{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002824 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002825 auto vkEnc = HostConnection::get()->vkEncoder();
2826 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
2827 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties);
2828 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
2829}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002830static VkResult dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR(
2831 VkDevice device,
2832 VkExternalMemoryHandleTypeFlagBits handleType,
2833 HANDLE handle,
2834 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
2835{
2836 auto resources = ResourceTracker::get();
2837 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
2838 {
2839 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandlePropertiesKHR", "VK_KHR_external_memory_win32");
2840 }
2841 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
2842 auto vkEnc = HostConnection::get()->vkEncoder();
2843 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
2844 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties);
2845 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
2846}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002847#endif
2848#ifdef VK_KHR_external_memory_fd
2849static VkResult entry_vkGetMemoryFdKHR(
2850 VkDevice device,
2851 const VkMemoryGetFdInfoKHR* pGetFdInfo,
2852 int* pFd)
2853{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002854 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002855 auto vkEnc = HostConnection::get()->vkEncoder();
2856 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
2857 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd);
2858 return vkGetMemoryFdKHR_VkResult_return;
2859}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002860static VkResult dynCheck_entry_vkGetMemoryFdKHR(
2861 VkDevice device,
2862 const VkMemoryGetFdInfoKHR* pGetFdInfo,
2863 int* pFd)
2864{
2865 auto resources = ResourceTracker::get();
2866 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
2867 {
2868 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdKHR", "VK_KHR_external_memory_fd");
2869 }
2870 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
2871 auto vkEnc = HostConnection::get()->vkEncoder();
2872 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
2873 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd);
2874 return vkGetMemoryFdKHR_VkResult_return;
2875}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002876static VkResult entry_vkGetMemoryFdPropertiesKHR(
2877 VkDevice device,
2878 VkExternalMemoryHandleTypeFlagBits handleType,
2879 int fd,
2880 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
2881{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002882 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002883 auto vkEnc = HostConnection::get()->vkEncoder();
2884 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
2885 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties);
2886 return vkGetMemoryFdPropertiesKHR_VkResult_return;
2887}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002888static VkResult dynCheck_entry_vkGetMemoryFdPropertiesKHR(
2889 VkDevice device,
2890 VkExternalMemoryHandleTypeFlagBits handleType,
2891 int fd,
2892 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
2893{
2894 auto resources = ResourceTracker::get();
2895 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
2896 {
2897 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdPropertiesKHR", "VK_KHR_external_memory_fd");
2898 }
2899 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
2900 auto vkEnc = HostConnection::get()->vkEncoder();
2901 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
2902 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties);
2903 return vkGetMemoryFdPropertiesKHR_VkResult_return;
2904}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002905#endif
2906#ifdef VK_KHR_win32_keyed_mutex
2907#endif
2908#ifdef VK_KHR_external_semaphore_capabilities
2909static void entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
2910 VkPhysicalDevice physicalDevice,
2911 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2912 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
2913{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002914 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002915 auto vkEnc = HostConnection::get()->vkEncoder();
2916 vkEnc->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
2917}
2918#endif
2919#ifdef VK_KHR_external_semaphore
2920#endif
2921#ifdef VK_KHR_external_semaphore_win32
2922static VkResult entry_vkImportSemaphoreWin32HandleKHR(
2923 VkDevice device,
2924 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
2925{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002926 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002927 auto vkEnc = HostConnection::get()->vkEncoder();
2928 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2929 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo);
2930 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
2931}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002932static VkResult dynCheck_entry_vkImportSemaphoreWin32HandleKHR(
2933 VkDevice device,
2934 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
2935{
2936 auto resources = ResourceTracker::get();
2937 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
2938 {
2939 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
2940 }
2941 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
2942 auto vkEnc = HostConnection::get()->vkEncoder();
2943 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2944 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo);
2945 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
2946}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002947static VkResult entry_vkGetSemaphoreWin32HandleKHR(
2948 VkDevice device,
2949 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2950 HANDLE* pHandle)
2951{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002952 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002953 auto vkEnc = HostConnection::get()->vkEncoder();
2954 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2955 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2956 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
2957}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002958static VkResult dynCheck_entry_vkGetSemaphoreWin32HandleKHR(
2959 VkDevice device,
2960 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2961 HANDLE* pHandle)
2962{
2963 auto resources = ResourceTracker::get();
2964 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
2965 {
2966 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
2967 }
2968 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
2969 auto vkEnc = HostConnection::get()->vkEncoder();
2970 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2971 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2972 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
2973}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002974#endif
2975#ifdef VK_KHR_external_semaphore_fd
2976static VkResult entry_vkImportSemaphoreFdKHR(
2977 VkDevice device,
2978 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
2979{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002980 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002981 auto vkEnc = HostConnection::get()->vkEncoder();
2982 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08002983 auto resources = ResourceTracker::get();
2984 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002985 return vkImportSemaphoreFdKHR_VkResult_return;
2986}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002987static VkResult dynCheck_entry_vkImportSemaphoreFdKHR(
2988 VkDevice device,
2989 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
2990{
2991 auto resources = ResourceTracker::get();
2992 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
2993 {
2994 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
2995 }
2996 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
2997 auto vkEnc = HostConnection::get()->vkEncoder();
2998 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
2999 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
3000 return vkImportSemaphoreFdKHR_VkResult_return;
3001}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003002static VkResult entry_vkGetSemaphoreFdKHR(
3003 VkDevice device,
3004 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3005 int* pFd)
3006{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003007 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003008 auto vkEnc = HostConnection::get()->vkEncoder();
3009 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08003010 auto resources = ResourceTracker::get();
3011 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003012 return vkGetSemaphoreFdKHR_VkResult_return;
3013}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003014static VkResult dynCheck_entry_vkGetSemaphoreFdKHR(
3015 VkDevice device,
3016 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3017 int* pFd)
3018{
3019 auto resources = ResourceTracker::get();
3020 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3021 {
3022 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3023 }
3024 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
3025 auto vkEnc = HostConnection::get()->vkEncoder();
3026 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
3027 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3028 return vkGetSemaphoreFdKHR_VkResult_return;
3029}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003030#endif
3031#ifdef VK_KHR_push_descriptor
3032static void entry_vkCmdPushDescriptorSetKHR(
3033 VkCommandBuffer commandBuffer,
3034 VkPipelineBindPoint pipelineBindPoint,
3035 VkPipelineLayout layout,
3036 uint32_t set,
3037 uint32_t descriptorWriteCount,
3038 const VkWriteDescriptorSet* pDescriptorWrites)
3039{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003040 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003041 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003042 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003043 vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites);
3044}
3045static void entry_vkCmdPushDescriptorSetWithTemplateKHR(
3046 VkCommandBuffer commandBuffer,
3047 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3048 VkPipelineLayout layout,
3049 uint32_t set,
3050 const void* pData)
3051{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003052 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003053 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003054 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003055 vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData);
3056}
3057#endif
3058#ifdef VK_KHR_16bit_storage
3059#endif
3060#ifdef VK_KHR_incremental_present
3061#endif
3062#ifdef VK_KHR_descriptor_update_template
3063static VkResult entry_vkCreateDescriptorUpdateTemplateKHR(
3064 VkDevice device,
3065 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3066 const VkAllocationCallbacks* pAllocator,
3067 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3068{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003069 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003070 auto vkEnc = HostConnection::get()->vkEncoder();
3071 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
3072 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
3073 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3074}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003075static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR(
3076 VkDevice device,
3077 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3078 const VkAllocationCallbacks* pAllocator,
3079 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3080{
3081 auto resources = ResourceTracker::get();
3082 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3083 {
3084 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3085 }
3086 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
3087 auto vkEnc = HostConnection::get()->vkEncoder();
3088 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
3089 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
3090 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3091}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003092static void entry_vkDestroyDescriptorUpdateTemplateKHR(
3093 VkDevice device,
3094 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3095 const VkAllocationCallbacks* pAllocator)
3096{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003097 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003098 auto vkEnc = HostConnection::get()->vkEncoder();
3099 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator);
3100}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003101static void dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR(
3102 VkDevice device,
3103 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3104 const VkAllocationCallbacks* pAllocator)
3105{
3106 auto resources = ResourceTracker::get();
3107 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3108 {
3109 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3110 }
3111 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
3112 auto vkEnc = HostConnection::get()->vkEncoder();
3113 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator);
3114}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003115static void entry_vkUpdateDescriptorSetWithTemplateKHR(
3116 VkDevice device,
3117 VkDescriptorSet descriptorSet,
3118 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3119 const void* pData)
3120{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003121 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003122 auto vkEnc = HostConnection::get()->vkEncoder();
3123 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData);
3124}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003125static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR(
3126 VkDevice device,
3127 VkDescriptorSet descriptorSet,
3128 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3129 const void* pData)
3130{
3131 auto resources = ResourceTracker::get();
3132 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3133 {
3134 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateKHR", "VK_KHR_descriptor_update_template");
3135 }
3136 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
3137 auto vkEnc = HostConnection::get()->vkEncoder();
3138 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData);
3139}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003140#endif
3141#ifdef VK_KHR_create_renderpass2
3142static VkResult entry_vkCreateRenderPass2KHR(
3143 VkDevice device,
3144 const VkRenderPassCreateInfo2KHR* pCreateInfo,
3145 const VkAllocationCallbacks* pAllocator,
3146 VkRenderPass* pRenderPass)
3147{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003148 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003149 auto vkEnc = HostConnection::get()->vkEncoder();
3150 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
3151 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass);
3152 return vkCreateRenderPass2KHR_VkResult_return;
3153}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003154static VkResult dynCheck_entry_vkCreateRenderPass2KHR(
3155 VkDevice device,
3156 const VkRenderPassCreateInfo2KHR* pCreateInfo,
3157 const VkAllocationCallbacks* pAllocator,
3158 VkRenderPass* pRenderPass)
3159{
3160 auto resources = ResourceTracker::get();
3161 if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"))
3162 {
3163 sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2KHR", "VK_KHR_create_renderpass2");
3164 }
3165 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
3166 auto vkEnc = HostConnection::get()->vkEncoder();
3167 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
3168 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass);
3169 return vkCreateRenderPass2KHR_VkResult_return;
3170}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003171static void entry_vkCmdBeginRenderPass2KHR(
3172 VkCommandBuffer commandBuffer,
3173 const VkRenderPassBeginInfo* pRenderPassBegin,
3174 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
3175{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003176 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003177 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003178 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003179 vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
3180}
3181static void entry_vkCmdNextSubpass2KHR(
3182 VkCommandBuffer commandBuffer,
3183 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
3184 const VkSubpassEndInfoKHR* pSubpassEndInfo)
3185{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003186 AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003187 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003188 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003189 vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
3190}
3191static void entry_vkCmdEndRenderPass2KHR(
3192 VkCommandBuffer commandBuffer,
3193 const VkSubpassEndInfoKHR* pSubpassEndInfo)
3194{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003195 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003196 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003197 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003198 vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo);
3199}
3200#endif
3201#ifdef VK_KHR_shared_presentable_image
3202static VkResult entry_vkGetSwapchainStatusKHR(
3203 VkDevice device,
3204 VkSwapchainKHR swapchain)
3205{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003206 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003207 auto vkEnc = HostConnection::get()->vkEncoder();
3208 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
3209 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain);
3210 return vkGetSwapchainStatusKHR_VkResult_return;
3211}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003212static VkResult dynCheck_entry_vkGetSwapchainStatusKHR(
3213 VkDevice device,
3214 VkSwapchainKHR swapchain)
3215{
3216 auto resources = ResourceTracker::get();
3217 if (!resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image"))
3218 {
3219 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainStatusKHR", "VK_KHR_shared_presentable_image");
3220 }
3221 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
3222 auto vkEnc = HostConnection::get()->vkEncoder();
3223 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
3224 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain);
3225 return vkGetSwapchainStatusKHR_VkResult_return;
3226}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003227#endif
3228#ifdef VK_KHR_external_fence_capabilities
3229static void entry_vkGetPhysicalDeviceExternalFencePropertiesKHR(
3230 VkPhysicalDevice physicalDevice,
3231 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
3232 VkExternalFenceProperties* pExternalFenceProperties)
3233{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003234 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003235 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003236 auto resources = ResourceTracker::get();
3237 resources->on_vkGetPhysicalDeviceExternalFencePropertiesKHR(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003238}
3239#endif
3240#ifdef VK_KHR_external_fence
3241#endif
3242#ifdef VK_KHR_external_fence_win32
3243static VkResult entry_vkImportFenceWin32HandleKHR(
3244 VkDevice device,
3245 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3246{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003247 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003248 auto vkEnc = HostConnection::get()->vkEncoder();
3249 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3250 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo);
3251 return vkImportFenceWin32HandleKHR_VkResult_return;
3252}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003253static VkResult dynCheck_entry_vkImportFenceWin32HandleKHR(
3254 VkDevice device,
3255 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3256{
3257 auto resources = ResourceTracker::get();
3258 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3259 {
3260 sOnInvalidDynamicallyCheckedCall("vkImportFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3261 }
3262 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
3263 auto vkEnc = HostConnection::get()->vkEncoder();
3264 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3265 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo);
3266 return vkImportFenceWin32HandleKHR_VkResult_return;
3267}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003268static VkResult entry_vkGetFenceWin32HandleKHR(
3269 VkDevice device,
3270 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3271 HANDLE* pHandle)
3272{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003273 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003274 auto vkEnc = HostConnection::get()->vkEncoder();
3275 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3276 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
3277 return vkGetFenceWin32HandleKHR_VkResult_return;
3278}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003279static VkResult dynCheck_entry_vkGetFenceWin32HandleKHR(
3280 VkDevice device,
3281 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3282 HANDLE* pHandle)
3283{
3284 auto resources = ResourceTracker::get();
3285 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3286 {
3287 sOnInvalidDynamicallyCheckedCall("vkGetFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3288 }
3289 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
3290 auto vkEnc = HostConnection::get()->vkEncoder();
3291 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3292 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
3293 return vkGetFenceWin32HandleKHR_VkResult_return;
3294}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003295#endif
3296#ifdef VK_KHR_external_fence_fd
3297static VkResult entry_vkImportFenceFdKHR(
3298 VkDevice device,
3299 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3300{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003301 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003302 auto vkEnc = HostConnection::get()->vkEncoder();
3303 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003304 auto resources = ResourceTracker::get();
3305 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003306 return vkImportFenceFdKHR_VkResult_return;
3307}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003308static VkResult dynCheck_entry_vkImportFenceFdKHR(
3309 VkDevice device,
3310 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3311{
3312 auto resources = ResourceTracker::get();
3313 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3314 {
3315 sOnInvalidDynamicallyCheckedCall("vkImportFenceFdKHR", "VK_KHR_external_fence_fd");
3316 }
3317 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
3318 auto vkEnc = HostConnection::get()->vkEncoder();
3319 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
3320 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
3321 return vkImportFenceFdKHR_VkResult_return;
3322}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003323static VkResult entry_vkGetFenceFdKHR(
3324 VkDevice device,
3325 const VkFenceGetFdInfoKHR* pGetFdInfo,
3326 int* pFd)
3327{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003328 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003329 auto vkEnc = HostConnection::get()->vkEncoder();
3330 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003331 auto resources = ResourceTracker::get();
3332 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003333 return vkGetFenceFdKHR_VkResult_return;
3334}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003335static VkResult dynCheck_entry_vkGetFenceFdKHR(
3336 VkDevice device,
3337 const VkFenceGetFdInfoKHR* pGetFdInfo,
3338 int* pFd)
3339{
3340 auto resources = ResourceTracker::get();
3341 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3342 {
3343 sOnInvalidDynamicallyCheckedCall("vkGetFenceFdKHR", "VK_KHR_external_fence_fd");
3344 }
3345 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
3346 auto vkEnc = HostConnection::get()->vkEncoder();
3347 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
3348 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3349 return vkGetFenceFdKHR_VkResult_return;
3350}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003351#endif
3352#ifdef VK_KHR_maintenance2
3353#endif
3354#ifdef VK_KHR_get_surface_capabilities2
3355static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
3356 VkPhysicalDevice physicalDevice,
3357 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3358 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
3359{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003360 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003361 auto vkEnc = HostConnection::get()->vkEncoder();
3362 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
3363 vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities);
3364 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
3365}
3366static VkResult entry_vkGetPhysicalDeviceSurfaceFormats2KHR(
3367 VkPhysicalDevice physicalDevice,
3368 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3369 uint32_t* pSurfaceFormatCount,
3370 VkSurfaceFormat2KHR* pSurfaceFormats)
3371{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003372 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003373 auto vkEnc = HostConnection::get()->vkEncoder();
3374 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
3375 vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats);
3376 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
3377}
3378#endif
3379#ifdef VK_KHR_variable_pointers
3380#endif
3381#ifdef VK_KHR_get_display_properties2
3382static VkResult entry_vkGetPhysicalDeviceDisplayProperties2KHR(
3383 VkPhysicalDevice physicalDevice,
3384 uint32_t* pPropertyCount,
3385 VkDisplayProperties2KHR* pProperties)
3386{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003387 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003388 auto vkEnc = HostConnection::get()->vkEncoder();
3389 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
3390 vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties);
3391 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
3392}
3393static VkResult entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
3394 VkPhysicalDevice physicalDevice,
3395 uint32_t* pPropertyCount,
3396 VkDisplayPlaneProperties2KHR* pProperties)
3397{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003398 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003399 auto vkEnc = HostConnection::get()->vkEncoder();
3400 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
3401 vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties);
3402 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
3403}
3404static VkResult entry_vkGetDisplayModeProperties2KHR(
3405 VkPhysicalDevice physicalDevice,
3406 VkDisplayKHR display,
3407 uint32_t* pPropertyCount,
3408 VkDisplayModeProperties2KHR* pProperties)
3409{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003410 AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003411 auto vkEnc = HostConnection::get()->vkEncoder();
3412 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
3413 vkGetDisplayModeProperties2KHR_VkResult_return = vkEnc->vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties);
3414 return vkGetDisplayModeProperties2KHR_VkResult_return;
3415}
3416static VkResult entry_vkGetDisplayPlaneCapabilities2KHR(
3417 VkPhysicalDevice physicalDevice,
3418 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
3419 VkDisplayPlaneCapabilities2KHR* pCapabilities)
3420{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003421 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003422 auto vkEnc = HostConnection::get()->vkEncoder();
3423 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
3424 vkGetDisplayPlaneCapabilities2KHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities);
3425 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
3426}
3427#endif
3428#ifdef VK_KHR_dedicated_allocation
3429#endif
3430#ifdef VK_KHR_storage_buffer_storage_class
3431#endif
3432#ifdef VK_KHR_relaxed_block_layout
3433#endif
3434#ifdef VK_KHR_get_memory_requirements2
3435static void entry_vkGetImageMemoryRequirements2KHR(
3436 VkDevice device,
3437 const VkImageMemoryRequirementsInfo2* pInfo,
3438 VkMemoryRequirements2* pMemoryRequirements)
3439{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003440 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003441 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003442 auto resources = ResourceTracker::get();
3443 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003444}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003445static void dynCheck_entry_vkGetImageMemoryRequirements2KHR(
3446 VkDevice device,
3447 const VkImageMemoryRequirementsInfo2* pInfo,
3448 VkMemoryRequirements2* pMemoryRequirements)
3449{
3450 auto resources = ResourceTracker::get();
3451 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3452 {
3453 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3454 }
3455 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
3456 auto vkEnc = HostConnection::get()->vkEncoder();
3457 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3458}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003459static void entry_vkGetBufferMemoryRequirements2KHR(
3460 VkDevice device,
3461 const VkBufferMemoryRequirementsInfo2* pInfo,
3462 VkMemoryRequirements2* pMemoryRequirements)
3463{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003464 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003465 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003466 auto resources = ResourceTracker::get();
3467 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003468}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003469static void dynCheck_entry_vkGetBufferMemoryRequirements2KHR(
3470 VkDevice device,
3471 const VkBufferMemoryRequirementsInfo2* pInfo,
3472 VkMemoryRequirements2* pMemoryRequirements)
3473{
3474 auto resources = ResourceTracker::get();
3475 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3476 {
3477 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3478 }
3479 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
3480 auto vkEnc = HostConnection::get()->vkEncoder();
3481 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3482}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003483static void entry_vkGetImageSparseMemoryRequirements2KHR(
3484 VkDevice device,
3485 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3486 uint32_t* pSparseMemoryRequirementCount,
3487 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3488{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003489 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003490 auto vkEnc = HostConnection::get()->vkEncoder();
3491 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
3492}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003493static void dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR(
3494 VkDevice device,
3495 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3496 uint32_t* pSparseMemoryRequirementCount,
3497 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3498{
3499 auto resources = ResourceTracker::get();
3500 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3501 {
3502 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3503 }
3504 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
3505 auto vkEnc = HostConnection::get()->vkEncoder();
3506 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
3507}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003508#endif
3509#ifdef VK_KHR_image_format_list
3510#endif
3511#ifdef VK_KHR_sampler_ycbcr_conversion
3512static VkResult entry_vkCreateSamplerYcbcrConversionKHR(
3513 VkDevice device,
3514 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3515 const VkAllocationCallbacks* pAllocator,
3516 VkSamplerYcbcrConversion* pYcbcrConversion)
3517{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003518 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003519 auto vkEnc = HostConnection::get()->vkEncoder();
3520 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08003521 auto resources = ResourceTracker::get();
3522 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003523 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3524}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003525static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversionKHR(
3526 VkDevice device,
3527 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3528 const VkAllocationCallbacks* pAllocator,
3529 VkSamplerYcbcrConversion* pYcbcrConversion)
3530{
3531 auto resources = ResourceTracker::get();
3532 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3533 {
3534 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3535 }
3536 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
3537 auto vkEnc = HostConnection::get()->vkEncoder();
3538 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
3539 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
3540 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3541}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003542static void entry_vkDestroySamplerYcbcrConversionKHR(
3543 VkDevice device,
3544 VkSamplerYcbcrConversion ycbcrConversion,
3545 const VkAllocationCallbacks* pAllocator)
3546{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003547 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003548 auto vkEnc = HostConnection::get()->vkEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07003549 auto resources = ResourceTracker::get();
3550 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003551}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003552static void dynCheck_entry_vkDestroySamplerYcbcrConversionKHR(
3553 VkDevice device,
3554 VkSamplerYcbcrConversion ycbcrConversion,
3555 const VkAllocationCallbacks* pAllocator)
3556{
3557 auto resources = ResourceTracker::get();
3558 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3559 {
3560 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3561 }
3562 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
3563 auto vkEnc = HostConnection::get()->vkEncoder();
3564 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
3565}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003566#endif
3567#ifdef VK_KHR_bind_memory2
3568static VkResult entry_vkBindBufferMemory2KHR(
3569 VkDevice device,
3570 uint32_t bindInfoCount,
3571 const VkBindBufferMemoryInfo* pBindInfos)
3572{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003573 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003574 auto vkEnc = HostConnection::get()->vkEncoder();
3575 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003576 auto resources = ResourceTracker::get();
3577 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003578 return vkBindBufferMemory2KHR_VkResult_return;
3579}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003580static VkResult dynCheck_entry_vkBindBufferMemory2KHR(
3581 VkDevice device,
3582 uint32_t bindInfoCount,
3583 const VkBindBufferMemoryInfo* pBindInfos)
3584{
3585 auto resources = ResourceTracker::get();
3586 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3587 {
3588 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2KHR", "VK_KHR_bind_memory2");
3589 }
3590 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
3591 auto vkEnc = HostConnection::get()->vkEncoder();
3592 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
3593 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3594 return vkBindBufferMemory2KHR_VkResult_return;
3595}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003596static VkResult entry_vkBindImageMemory2KHR(
3597 VkDevice device,
3598 uint32_t bindInfoCount,
3599 const VkBindImageMemoryInfo* pBindInfos)
3600{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003601 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003602 auto vkEnc = HostConnection::get()->vkEncoder();
3603 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003604 auto resources = ResourceTracker::get();
3605 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003606 return vkBindImageMemory2KHR_VkResult_return;
3607}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003608static VkResult dynCheck_entry_vkBindImageMemory2KHR(
3609 VkDevice device,
3610 uint32_t bindInfoCount,
3611 const VkBindImageMemoryInfo* pBindInfos)
3612{
3613 auto resources = ResourceTracker::get();
3614 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3615 {
3616 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2KHR", "VK_KHR_bind_memory2");
3617 }
3618 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
3619 auto vkEnc = HostConnection::get()->vkEncoder();
3620 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
3621 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3622 return vkBindImageMemory2KHR_VkResult_return;
3623}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003624#endif
3625#ifdef VK_KHR_maintenance3
3626static void entry_vkGetDescriptorSetLayoutSupportKHR(
3627 VkDevice device,
3628 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3629 VkDescriptorSetLayoutSupport* pSupport)
3630{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003631 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003632 auto vkEnc = HostConnection::get()->vkEncoder();
3633 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport);
3634}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003635static void dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR(
3636 VkDevice device,
3637 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3638 VkDescriptorSetLayoutSupport* pSupport)
3639{
3640 auto resources = ResourceTracker::get();
3641 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance3"))
3642 {
3643 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupportKHR", "VK_KHR_maintenance3");
3644 }
3645 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
3646 auto vkEnc = HostConnection::get()->vkEncoder();
3647 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport);
3648}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003649#endif
3650#ifdef VK_KHR_draw_indirect_count
3651static void entry_vkCmdDrawIndirectCountKHR(
3652 VkCommandBuffer commandBuffer,
3653 VkBuffer buffer,
3654 VkDeviceSize offset,
3655 VkBuffer countBuffer,
3656 VkDeviceSize countBufferOffset,
3657 uint32_t maxDrawCount,
3658 uint32_t stride)
3659{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003660 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003661 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003662 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003663 vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3664}
3665static void entry_vkCmdDrawIndexedIndirectCountKHR(
3666 VkCommandBuffer commandBuffer,
3667 VkBuffer buffer,
3668 VkDeviceSize offset,
3669 VkBuffer countBuffer,
3670 VkDeviceSize countBufferOffset,
3671 uint32_t maxDrawCount,
3672 uint32_t stride)
3673{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003674 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003675 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003676 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003677 vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3678}
3679#endif
3680#ifdef VK_KHR_8bit_storage
3681#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08003682#ifdef VK_ANDROID_native_buffer
3683static VkResult entry_vkGetSwapchainGrallocUsageANDROID(
3684 VkDevice device,
3685 VkFormat format,
3686 VkImageUsageFlags imageUsage,
3687 int* grallocUsage)
3688{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003689 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -08003690 auto vkEnc = HostConnection::get()->vkEncoder();
3691 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
3692 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage);
3693 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
3694}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003695static VkResult dynCheck_entry_vkGetSwapchainGrallocUsageANDROID(
3696 VkDevice device,
3697 VkFormat format,
3698 VkImageUsageFlags imageUsage,
3699 int* grallocUsage)
3700{
3701 auto resources = ResourceTracker::get();
3702 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
3703 {
3704 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainGrallocUsageANDROID", "VK_ANDROID_native_buffer");
3705 }
3706 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
3707 auto vkEnc = HostConnection::get()->vkEncoder();
3708 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
3709 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage);
3710 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
3711}
Lingfeng Yang808a6312018-11-13 21:06:15 -08003712static VkResult entry_vkAcquireImageANDROID(
3713 VkDevice device,
3714 VkImage image,
3715 int nativeFenceFd,
3716 VkSemaphore semaphore,
3717 VkFence fence)
3718{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003719 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -08003720 auto vkEnc = HostConnection::get()->vkEncoder();
3721 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
3722 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence);
3723 return vkAcquireImageANDROID_VkResult_return;
3724}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003725static VkResult dynCheck_entry_vkAcquireImageANDROID(
3726 VkDevice device,
3727 VkImage image,
3728 int nativeFenceFd,
3729 VkSemaphore semaphore,
3730 VkFence fence)
3731{
3732 auto resources = ResourceTracker::get();
3733 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
3734 {
3735 sOnInvalidDynamicallyCheckedCall("vkAcquireImageANDROID", "VK_ANDROID_native_buffer");
3736 }
3737 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
3738 auto vkEnc = HostConnection::get()->vkEncoder();
3739 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
3740 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence);
3741 return vkAcquireImageANDROID_VkResult_return;
3742}
Lingfeng Yang808a6312018-11-13 21:06:15 -08003743static VkResult entry_vkQueueSignalReleaseImageANDROID(
3744 VkQueue queue,
3745 uint32_t waitSemaphoreCount,
3746 const VkSemaphore* pWaitSemaphores,
3747 VkImage image,
3748 int* pNativeFenceFd)
3749{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003750 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -08003751 auto vkEnc = HostConnection::get()->vkEncoder();
3752 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
3753 vkQueueSignalReleaseImageANDROID_VkResult_return = vkEnc->vkQueueSignalReleaseImageANDROID(queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd);
3754 return vkQueueSignalReleaseImageANDROID_VkResult_return;
3755}
3756#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003757#ifdef VK_EXT_debug_report
3758static VkResult entry_vkCreateDebugReportCallbackEXT(
3759 VkInstance instance,
3760 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
3761 const VkAllocationCallbacks* pAllocator,
3762 VkDebugReportCallbackEXT* pCallback)
3763{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003764 AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003765 auto vkEnc = HostConnection::get()->vkEncoder();
3766 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
3767 vkCreateDebugReportCallbackEXT_VkResult_return = vkEnc->vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback);
3768 return vkCreateDebugReportCallbackEXT_VkResult_return;
3769}
3770static void entry_vkDestroyDebugReportCallbackEXT(
3771 VkInstance instance,
3772 VkDebugReportCallbackEXT callback,
3773 const VkAllocationCallbacks* pAllocator)
3774{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003775 AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003776 auto vkEnc = HostConnection::get()->vkEncoder();
3777 vkEnc->vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator);
3778}
3779static void entry_vkDebugReportMessageEXT(
3780 VkInstance instance,
3781 VkDebugReportFlagsEXT flags,
3782 VkDebugReportObjectTypeEXT objectType,
3783 uint64_t object,
3784 size_t location,
3785 int32_t messageCode,
3786 const char* pLayerPrefix,
3787 const char* pMessage)
3788{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003789 AEMU_SCOPED_TRACE("vkDebugReportMessageEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003790 auto vkEnc = HostConnection::get()->vkEncoder();
3791 vkEnc->vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage);
3792}
3793#endif
3794#ifdef VK_NV_glsl_shader
3795#endif
3796#ifdef VK_EXT_depth_range_unrestricted
3797#endif
3798#ifdef VK_IMG_filter_cubic
3799#endif
3800#ifdef VK_AMD_rasterization_order
3801#endif
3802#ifdef VK_AMD_shader_trinary_minmax
3803#endif
3804#ifdef VK_AMD_shader_explicit_vertex_parameter
3805#endif
3806#ifdef VK_EXT_debug_marker
3807static VkResult entry_vkDebugMarkerSetObjectTagEXT(
3808 VkDevice device,
3809 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
3810{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003811 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003812 auto vkEnc = HostConnection::get()->vkEncoder();
3813 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
3814 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo);
3815 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
3816}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003817static VkResult dynCheck_entry_vkDebugMarkerSetObjectTagEXT(
3818 VkDevice device,
3819 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
3820{
3821 auto resources = ResourceTracker::get();
3822 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
3823 {
3824 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectTagEXT", "VK_EXT_debug_marker");
3825 }
3826 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
3827 auto vkEnc = HostConnection::get()->vkEncoder();
3828 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
3829 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo);
3830 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
3831}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003832static VkResult entry_vkDebugMarkerSetObjectNameEXT(
3833 VkDevice device,
3834 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
3835{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003836 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003837 auto vkEnc = HostConnection::get()->vkEncoder();
3838 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
3839 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo);
3840 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
3841}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003842static VkResult dynCheck_entry_vkDebugMarkerSetObjectNameEXT(
3843 VkDevice device,
3844 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
3845{
3846 auto resources = ResourceTracker::get();
3847 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
3848 {
3849 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectNameEXT", "VK_EXT_debug_marker");
3850 }
3851 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
3852 auto vkEnc = HostConnection::get()->vkEncoder();
3853 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
3854 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo);
3855 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
3856}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003857static void entry_vkCmdDebugMarkerBeginEXT(
3858 VkCommandBuffer commandBuffer,
3859 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
3860{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003861 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003862 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003863 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003864 vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo);
3865}
3866static void entry_vkCmdDebugMarkerEndEXT(
3867 VkCommandBuffer commandBuffer)
3868{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003869 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003870 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003871 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003872 vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer);
3873}
3874static void entry_vkCmdDebugMarkerInsertEXT(
3875 VkCommandBuffer commandBuffer,
3876 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
3877{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003878 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003879 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003880 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003881 vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo);
3882}
3883#endif
3884#ifdef VK_AMD_gcn_shader
3885#endif
3886#ifdef VK_NV_dedicated_allocation
3887#endif
3888#ifdef VK_AMD_draw_indirect_count
3889static void entry_vkCmdDrawIndirectCountAMD(
3890 VkCommandBuffer commandBuffer,
3891 VkBuffer buffer,
3892 VkDeviceSize offset,
3893 VkBuffer countBuffer,
3894 VkDeviceSize countBufferOffset,
3895 uint32_t maxDrawCount,
3896 uint32_t stride)
3897{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003898 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003899 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003900 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003901 vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3902}
3903static void entry_vkCmdDrawIndexedIndirectCountAMD(
3904 VkCommandBuffer commandBuffer,
3905 VkBuffer buffer,
3906 VkDeviceSize offset,
3907 VkBuffer countBuffer,
3908 VkDeviceSize countBufferOffset,
3909 uint32_t maxDrawCount,
3910 uint32_t stride)
3911{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003912 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003913 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003914 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003915 vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3916}
3917#endif
3918#ifdef VK_AMD_negative_viewport_height
3919#endif
3920#ifdef VK_AMD_gpu_shader_half_float
3921#endif
3922#ifdef VK_AMD_shader_ballot
3923#endif
3924#ifdef VK_AMD_texture_gather_bias_lod
3925#endif
3926#ifdef VK_AMD_shader_info
3927static VkResult entry_vkGetShaderInfoAMD(
3928 VkDevice device,
3929 VkPipeline pipeline,
3930 VkShaderStageFlagBits shaderStage,
3931 VkShaderInfoTypeAMD infoType,
3932 size_t* pInfoSize,
3933 void* pInfo)
3934{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003935 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003936 auto vkEnc = HostConnection::get()->vkEncoder();
3937 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
3938 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
3939 return vkGetShaderInfoAMD_VkResult_return;
3940}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003941static VkResult dynCheck_entry_vkGetShaderInfoAMD(
3942 VkDevice device,
3943 VkPipeline pipeline,
3944 VkShaderStageFlagBits shaderStage,
3945 VkShaderInfoTypeAMD infoType,
3946 size_t* pInfoSize,
3947 void* pInfo)
3948{
3949 auto resources = ResourceTracker::get();
3950 if (!resources->hasDeviceExtension(device, "VK_AMD_shader_info"))
3951 {
3952 sOnInvalidDynamicallyCheckedCall("vkGetShaderInfoAMD", "VK_AMD_shader_info");
3953 }
3954 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
3955 auto vkEnc = HostConnection::get()->vkEncoder();
3956 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
3957 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
3958 return vkGetShaderInfoAMD_VkResult_return;
3959}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003960#endif
3961#ifdef VK_AMD_shader_image_load_store_lod
3962#endif
3963#ifdef VK_IMG_format_pvrtc
3964#endif
3965#ifdef VK_NV_external_memory_capabilities
3966static VkResult entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
3967 VkPhysicalDevice physicalDevice,
3968 VkFormat format,
3969 VkImageType type,
3970 VkImageTiling tiling,
3971 VkImageUsageFlags usage,
3972 VkImageCreateFlags flags,
3973 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
3974 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
3975{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003976 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003977 auto vkEnc = HostConnection::get()->vkEncoder();
3978 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
3979 vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties);
3980 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
3981}
3982#endif
3983#ifdef VK_NV_external_memory
3984#endif
3985#ifdef VK_NV_external_memory_win32
3986static VkResult entry_vkGetMemoryWin32HandleNV(
3987 VkDevice device,
3988 VkDeviceMemory memory,
3989 VkExternalMemoryHandleTypeFlagsNV handleType,
3990 HANDLE* pHandle)
3991{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003992 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003993 auto vkEnc = HostConnection::get()->vkEncoder();
3994 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
3995 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle);
3996 return vkGetMemoryWin32HandleNV_VkResult_return;
3997}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003998static VkResult dynCheck_entry_vkGetMemoryWin32HandleNV(
3999 VkDevice device,
4000 VkDeviceMemory memory,
4001 VkExternalMemoryHandleTypeFlagsNV handleType,
4002 HANDLE* pHandle)
4003{
4004 auto resources = ResourceTracker::get();
4005 if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_win32"))
4006 {
4007 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleNV", "VK_NV_external_memory_win32");
4008 }
4009 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
4010 auto vkEnc = HostConnection::get()->vkEncoder();
4011 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
4012 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle);
4013 return vkGetMemoryWin32HandleNV_VkResult_return;
4014}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004015#endif
4016#ifdef VK_NV_win32_keyed_mutex
4017#endif
4018#ifdef VK_EXT_validation_flags
4019#endif
4020#ifdef VK_NN_vi_surface
4021static VkResult entry_vkCreateViSurfaceNN(
4022 VkInstance instance,
4023 const VkViSurfaceCreateInfoNN* pCreateInfo,
4024 const VkAllocationCallbacks* pAllocator,
4025 VkSurfaceKHR* pSurface)
4026{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004027 AEMU_SCOPED_TRACE("vkCreateViSurfaceNN");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004028 auto vkEnc = HostConnection::get()->vkEncoder();
4029 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
4030 vkCreateViSurfaceNN_VkResult_return = vkEnc->vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface);
4031 return vkCreateViSurfaceNN_VkResult_return;
4032}
4033#endif
4034#ifdef VK_EXT_shader_subgroup_ballot
4035#endif
4036#ifdef VK_EXT_shader_subgroup_vote
4037#endif
4038#ifdef VK_EXT_conditional_rendering
4039static void entry_vkCmdBeginConditionalRenderingEXT(
4040 VkCommandBuffer commandBuffer,
4041 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
4042{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004043 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004044 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004045 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004046 vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin);
4047}
4048static void entry_vkCmdEndConditionalRenderingEXT(
4049 VkCommandBuffer commandBuffer)
4050{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004051 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004052 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004053 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004054 vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer);
4055}
4056#endif
4057#ifdef VK_NVX_device_generated_commands
4058static void entry_vkCmdProcessCommandsNVX(
4059 VkCommandBuffer commandBuffer,
4060 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
4061{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004062 AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004063 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004064 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004065 vkEnc->vkCmdProcessCommandsNVX(commandBuffer, pProcessCommandsInfo);
4066}
4067static void entry_vkCmdReserveSpaceForCommandsNVX(
4068 VkCommandBuffer commandBuffer,
4069 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
4070{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004071 AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004072 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004073 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004074 vkEnc->vkCmdReserveSpaceForCommandsNVX(commandBuffer, pReserveSpaceInfo);
4075}
4076static VkResult entry_vkCreateIndirectCommandsLayoutNVX(
4077 VkDevice device,
4078 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
4079 const VkAllocationCallbacks* pAllocator,
4080 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
4081{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004082 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004083 auto vkEnc = HostConnection::get()->vkEncoder();
4084 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
4085 vkCreateIndirectCommandsLayoutNVX_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNVX(device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
4086 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
4087}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004088static VkResult dynCheck_entry_vkCreateIndirectCommandsLayoutNVX(
4089 VkDevice device,
4090 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
4091 const VkAllocationCallbacks* pAllocator,
4092 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
4093{
4094 auto resources = ResourceTracker::get();
4095 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4096 {
4097 sOnInvalidDynamicallyCheckedCall("vkCreateIndirectCommandsLayoutNVX", "VK_NVX_device_generated_commands");
4098 }
4099 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX");
4100 auto vkEnc = HostConnection::get()->vkEncoder();
4101 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
4102 vkCreateIndirectCommandsLayoutNVX_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNVX(device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
4103 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
4104}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004105static void entry_vkDestroyIndirectCommandsLayoutNVX(
4106 VkDevice device,
4107 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
4108 const VkAllocationCallbacks* pAllocator)
4109{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004110 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004111 auto vkEnc = HostConnection::get()->vkEncoder();
4112 vkEnc->vkDestroyIndirectCommandsLayoutNVX(device, indirectCommandsLayout, pAllocator);
4113}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004114static void dynCheck_entry_vkDestroyIndirectCommandsLayoutNVX(
4115 VkDevice device,
4116 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
4117 const VkAllocationCallbacks* pAllocator)
4118{
4119 auto resources = ResourceTracker::get();
4120 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4121 {
4122 sOnInvalidDynamicallyCheckedCall("vkDestroyIndirectCommandsLayoutNVX", "VK_NVX_device_generated_commands");
4123 }
4124 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX");
4125 auto vkEnc = HostConnection::get()->vkEncoder();
4126 vkEnc->vkDestroyIndirectCommandsLayoutNVX(device, indirectCommandsLayout, pAllocator);
4127}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004128static VkResult entry_vkCreateObjectTableNVX(
4129 VkDevice device,
4130 const VkObjectTableCreateInfoNVX* pCreateInfo,
4131 const VkAllocationCallbacks* pAllocator,
4132 VkObjectTableNVX* pObjectTable)
4133{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004134 AEMU_SCOPED_TRACE("vkCreateObjectTableNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004135 auto vkEnc = HostConnection::get()->vkEncoder();
4136 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
4137 vkCreateObjectTableNVX_VkResult_return = vkEnc->vkCreateObjectTableNVX(device, pCreateInfo, pAllocator, pObjectTable);
4138 return vkCreateObjectTableNVX_VkResult_return;
4139}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004140static VkResult dynCheck_entry_vkCreateObjectTableNVX(
4141 VkDevice device,
4142 const VkObjectTableCreateInfoNVX* pCreateInfo,
4143 const VkAllocationCallbacks* pAllocator,
4144 VkObjectTableNVX* pObjectTable)
4145{
4146 auto resources = ResourceTracker::get();
4147 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4148 {
4149 sOnInvalidDynamicallyCheckedCall("vkCreateObjectTableNVX", "VK_NVX_device_generated_commands");
4150 }
4151 AEMU_SCOPED_TRACE("vkCreateObjectTableNVX");
4152 auto vkEnc = HostConnection::get()->vkEncoder();
4153 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
4154 vkCreateObjectTableNVX_VkResult_return = vkEnc->vkCreateObjectTableNVX(device, pCreateInfo, pAllocator, pObjectTable);
4155 return vkCreateObjectTableNVX_VkResult_return;
4156}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004157static void entry_vkDestroyObjectTableNVX(
4158 VkDevice device,
4159 VkObjectTableNVX objectTable,
4160 const VkAllocationCallbacks* pAllocator)
4161{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004162 AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004163 auto vkEnc = HostConnection::get()->vkEncoder();
4164 vkEnc->vkDestroyObjectTableNVX(device, objectTable, pAllocator);
4165}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004166static void dynCheck_entry_vkDestroyObjectTableNVX(
4167 VkDevice device,
4168 VkObjectTableNVX objectTable,
4169 const VkAllocationCallbacks* pAllocator)
4170{
4171 auto resources = ResourceTracker::get();
4172 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4173 {
4174 sOnInvalidDynamicallyCheckedCall("vkDestroyObjectTableNVX", "VK_NVX_device_generated_commands");
4175 }
4176 AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX");
4177 auto vkEnc = HostConnection::get()->vkEncoder();
4178 vkEnc->vkDestroyObjectTableNVX(device, objectTable, pAllocator);
4179}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004180static VkResult entry_vkRegisterObjectsNVX(
4181 VkDevice device,
4182 VkObjectTableNVX objectTable,
4183 uint32_t objectCount,
4184 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
4185 const uint32_t* pObjectIndices)
4186{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004187 AEMU_SCOPED_TRACE("vkRegisterObjectsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004188 auto vkEnc = HostConnection::get()->vkEncoder();
4189 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
4190 vkRegisterObjectsNVX_VkResult_return = vkEnc->vkRegisterObjectsNVX(device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices);
4191 return vkRegisterObjectsNVX_VkResult_return;
4192}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004193static VkResult dynCheck_entry_vkRegisterObjectsNVX(
4194 VkDevice device,
4195 VkObjectTableNVX objectTable,
4196 uint32_t objectCount,
4197 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
4198 const uint32_t* pObjectIndices)
4199{
4200 auto resources = ResourceTracker::get();
4201 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4202 {
4203 sOnInvalidDynamicallyCheckedCall("vkRegisterObjectsNVX", "VK_NVX_device_generated_commands");
4204 }
4205 AEMU_SCOPED_TRACE("vkRegisterObjectsNVX");
4206 auto vkEnc = HostConnection::get()->vkEncoder();
4207 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
4208 vkRegisterObjectsNVX_VkResult_return = vkEnc->vkRegisterObjectsNVX(device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices);
4209 return vkRegisterObjectsNVX_VkResult_return;
4210}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004211static VkResult entry_vkUnregisterObjectsNVX(
4212 VkDevice device,
4213 VkObjectTableNVX objectTable,
4214 uint32_t objectCount,
4215 const VkObjectEntryTypeNVX* pObjectEntryTypes,
4216 const uint32_t* pObjectIndices)
4217{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004218 AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004219 auto vkEnc = HostConnection::get()->vkEncoder();
4220 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
4221 vkUnregisterObjectsNVX_VkResult_return = vkEnc->vkUnregisterObjectsNVX(device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices);
4222 return vkUnregisterObjectsNVX_VkResult_return;
4223}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004224static VkResult dynCheck_entry_vkUnregisterObjectsNVX(
4225 VkDevice device,
4226 VkObjectTableNVX objectTable,
4227 uint32_t objectCount,
4228 const VkObjectEntryTypeNVX* pObjectEntryTypes,
4229 const uint32_t* pObjectIndices)
4230{
4231 auto resources = ResourceTracker::get();
4232 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4233 {
4234 sOnInvalidDynamicallyCheckedCall("vkUnregisterObjectsNVX", "VK_NVX_device_generated_commands");
4235 }
4236 AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX");
4237 auto vkEnc = HostConnection::get()->vkEncoder();
4238 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
4239 vkUnregisterObjectsNVX_VkResult_return = vkEnc->vkUnregisterObjectsNVX(device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices);
4240 return vkUnregisterObjectsNVX_VkResult_return;
4241}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004242static void entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
4243 VkPhysicalDevice physicalDevice,
4244 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
4245 VkDeviceGeneratedCommandsLimitsNVX* pLimits)
4246{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004247 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004248 auto vkEnc = HostConnection::get()->vkEncoder();
4249 vkEnc->vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(physicalDevice, pFeatures, pLimits);
4250}
4251#endif
4252#ifdef VK_NV_clip_space_w_scaling
4253static void entry_vkCmdSetViewportWScalingNV(
4254 VkCommandBuffer commandBuffer,
4255 uint32_t firstViewport,
4256 uint32_t viewportCount,
4257 const VkViewportWScalingNV* pViewportWScalings)
4258{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004259 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004260 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004261 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004262 vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings);
4263}
4264#endif
4265#ifdef VK_EXT_direct_mode_display
4266static VkResult entry_vkReleaseDisplayEXT(
4267 VkPhysicalDevice physicalDevice,
4268 VkDisplayKHR display)
4269{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004270 AEMU_SCOPED_TRACE("vkReleaseDisplayEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004271 auto vkEnc = HostConnection::get()->vkEncoder();
4272 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
4273 vkReleaseDisplayEXT_VkResult_return = vkEnc->vkReleaseDisplayEXT(physicalDevice, display);
4274 return vkReleaseDisplayEXT_VkResult_return;
4275}
4276#endif
4277#ifdef VK_EXT_acquire_xlib_display
4278static VkResult entry_vkAcquireXlibDisplayEXT(
4279 VkPhysicalDevice physicalDevice,
4280 Display* dpy,
4281 VkDisplayKHR display)
4282{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004283 AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004284 auto vkEnc = HostConnection::get()->vkEncoder();
4285 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
4286 vkAcquireXlibDisplayEXT_VkResult_return = vkEnc->vkAcquireXlibDisplayEXT(physicalDevice, dpy, display);
4287 return vkAcquireXlibDisplayEXT_VkResult_return;
4288}
4289static VkResult entry_vkGetRandROutputDisplayEXT(
4290 VkPhysicalDevice physicalDevice,
4291 Display* dpy,
4292 RROutput rrOutput,
4293 VkDisplayKHR* pDisplay)
4294{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004295 AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004296 auto vkEnc = HostConnection::get()->vkEncoder();
4297 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
4298 vkGetRandROutputDisplayEXT_VkResult_return = vkEnc->vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay);
4299 return vkGetRandROutputDisplayEXT_VkResult_return;
4300}
4301#endif
4302#ifdef VK_EXT_display_surface_counter
4303static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
4304 VkPhysicalDevice physicalDevice,
4305 VkSurfaceKHR surface,
4306 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
4307{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004308 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004309 auto vkEnc = HostConnection::get()->vkEncoder();
4310 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
4311 vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities);
4312 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
4313}
4314#endif
4315#ifdef VK_EXT_display_control
4316static VkResult entry_vkDisplayPowerControlEXT(
4317 VkDevice device,
4318 VkDisplayKHR display,
4319 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
4320{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004321 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004322 auto vkEnc = HostConnection::get()->vkEncoder();
4323 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
4324 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo);
4325 return vkDisplayPowerControlEXT_VkResult_return;
4326}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004327static VkResult dynCheck_entry_vkDisplayPowerControlEXT(
4328 VkDevice device,
4329 VkDisplayKHR display,
4330 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
4331{
4332 auto resources = ResourceTracker::get();
4333 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4334 {
4335 sOnInvalidDynamicallyCheckedCall("vkDisplayPowerControlEXT", "VK_EXT_display_control");
4336 }
4337 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
4338 auto vkEnc = HostConnection::get()->vkEncoder();
4339 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
4340 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo);
4341 return vkDisplayPowerControlEXT_VkResult_return;
4342}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004343static VkResult entry_vkRegisterDeviceEventEXT(
4344 VkDevice device,
4345 const VkDeviceEventInfoEXT* pDeviceEventInfo,
4346 const VkAllocationCallbacks* pAllocator,
4347 VkFence* pFence)
4348{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004349 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004350 auto vkEnc = HostConnection::get()->vkEncoder();
4351 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
4352 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence);
4353 return vkRegisterDeviceEventEXT_VkResult_return;
4354}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004355static VkResult dynCheck_entry_vkRegisterDeviceEventEXT(
4356 VkDevice device,
4357 const VkDeviceEventInfoEXT* pDeviceEventInfo,
4358 const VkAllocationCallbacks* pAllocator,
4359 VkFence* pFence)
4360{
4361 auto resources = ResourceTracker::get();
4362 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4363 {
4364 sOnInvalidDynamicallyCheckedCall("vkRegisterDeviceEventEXT", "VK_EXT_display_control");
4365 }
4366 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
4367 auto vkEnc = HostConnection::get()->vkEncoder();
4368 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
4369 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence);
4370 return vkRegisterDeviceEventEXT_VkResult_return;
4371}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004372static VkResult entry_vkRegisterDisplayEventEXT(
4373 VkDevice device,
4374 VkDisplayKHR display,
4375 const VkDisplayEventInfoEXT* pDisplayEventInfo,
4376 const VkAllocationCallbacks* pAllocator,
4377 VkFence* pFence)
4378{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004379 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004380 auto vkEnc = HostConnection::get()->vkEncoder();
4381 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
4382 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence);
4383 return vkRegisterDisplayEventEXT_VkResult_return;
4384}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004385static VkResult dynCheck_entry_vkRegisterDisplayEventEXT(
4386 VkDevice device,
4387 VkDisplayKHR display,
4388 const VkDisplayEventInfoEXT* pDisplayEventInfo,
4389 const VkAllocationCallbacks* pAllocator,
4390 VkFence* pFence)
4391{
4392 auto resources = ResourceTracker::get();
4393 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4394 {
4395 sOnInvalidDynamicallyCheckedCall("vkRegisterDisplayEventEXT", "VK_EXT_display_control");
4396 }
4397 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
4398 auto vkEnc = HostConnection::get()->vkEncoder();
4399 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
4400 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence);
4401 return vkRegisterDisplayEventEXT_VkResult_return;
4402}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004403static VkResult entry_vkGetSwapchainCounterEXT(
4404 VkDevice device,
4405 VkSwapchainKHR swapchain,
4406 VkSurfaceCounterFlagBitsEXT counter,
4407 uint64_t* pCounterValue)
4408{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004409 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004410 auto vkEnc = HostConnection::get()->vkEncoder();
4411 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
4412 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue);
4413 return vkGetSwapchainCounterEXT_VkResult_return;
4414}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004415static VkResult dynCheck_entry_vkGetSwapchainCounterEXT(
4416 VkDevice device,
4417 VkSwapchainKHR swapchain,
4418 VkSurfaceCounterFlagBitsEXT counter,
4419 uint64_t* pCounterValue)
4420{
4421 auto resources = ResourceTracker::get();
4422 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4423 {
4424 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainCounterEXT", "VK_EXT_display_control");
4425 }
4426 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
4427 auto vkEnc = HostConnection::get()->vkEncoder();
4428 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
4429 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue);
4430 return vkGetSwapchainCounterEXT_VkResult_return;
4431}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004432#endif
4433#ifdef VK_GOOGLE_display_timing
4434static VkResult entry_vkGetRefreshCycleDurationGOOGLE(
4435 VkDevice device,
4436 VkSwapchainKHR swapchain,
4437 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
4438{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004439 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004440 auto vkEnc = HostConnection::get()->vkEncoder();
4441 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
4442 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties);
4443 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
4444}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004445static VkResult dynCheck_entry_vkGetRefreshCycleDurationGOOGLE(
4446 VkDevice device,
4447 VkSwapchainKHR swapchain,
4448 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
4449{
4450 auto resources = ResourceTracker::get();
4451 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
4452 {
4453 sOnInvalidDynamicallyCheckedCall("vkGetRefreshCycleDurationGOOGLE", "VK_GOOGLE_display_timing");
4454 }
4455 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
4456 auto vkEnc = HostConnection::get()->vkEncoder();
4457 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
4458 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties);
4459 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
4460}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004461static VkResult entry_vkGetPastPresentationTimingGOOGLE(
4462 VkDevice device,
4463 VkSwapchainKHR swapchain,
4464 uint32_t* pPresentationTimingCount,
4465 VkPastPresentationTimingGOOGLE* pPresentationTimings)
4466{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004467 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004468 auto vkEnc = HostConnection::get()->vkEncoder();
4469 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
4470 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings);
4471 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
4472}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004473static VkResult dynCheck_entry_vkGetPastPresentationTimingGOOGLE(
4474 VkDevice device,
4475 VkSwapchainKHR swapchain,
4476 uint32_t* pPresentationTimingCount,
4477 VkPastPresentationTimingGOOGLE* pPresentationTimings)
4478{
4479 auto resources = ResourceTracker::get();
4480 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
4481 {
4482 sOnInvalidDynamicallyCheckedCall("vkGetPastPresentationTimingGOOGLE", "VK_GOOGLE_display_timing");
4483 }
4484 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
4485 auto vkEnc = HostConnection::get()->vkEncoder();
4486 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
4487 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings);
4488 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
4489}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004490#endif
4491#ifdef VK_NV_sample_mask_override_coverage
4492#endif
4493#ifdef VK_NV_geometry_shader_passthrough
4494#endif
4495#ifdef VK_NV_viewport_array2
4496#endif
4497#ifdef VK_NVX_multiview_per_view_attributes
4498#endif
4499#ifdef VK_NV_viewport_swizzle
4500#endif
4501#ifdef VK_EXT_discard_rectangles
4502static void entry_vkCmdSetDiscardRectangleEXT(
4503 VkCommandBuffer commandBuffer,
4504 uint32_t firstDiscardRectangle,
4505 uint32_t discardRectangleCount,
4506 const VkRect2D* pDiscardRectangles)
4507{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004508 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004509 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004510 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004511 vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles);
4512}
4513#endif
4514#ifdef VK_EXT_conservative_rasterization
4515#endif
4516#ifdef VK_EXT_swapchain_colorspace
4517#endif
4518#ifdef VK_EXT_hdr_metadata
4519static void entry_vkSetHdrMetadataEXT(
4520 VkDevice device,
4521 uint32_t swapchainCount,
4522 const VkSwapchainKHR* pSwapchains,
4523 const VkHdrMetadataEXT* pMetadata)
4524{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004525 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004526 auto vkEnc = HostConnection::get()->vkEncoder();
4527 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata);
4528}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004529static void dynCheck_entry_vkSetHdrMetadataEXT(
4530 VkDevice device,
4531 uint32_t swapchainCount,
4532 const VkSwapchainKHR* pSwapchains,
4533 const VkHdrMetadataEXT* pMetadata)
4534{
4535 auto resources = ResourceTracker::get();
4536 if (!resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata"))
4537 {
4538 sOnInvalidDynamicallyCheckedCall("vkSetHdrMetadataEXT", "VK_EXT_hdr_metadata");
4539 }
4540 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
4541 auto vkEnc = HostConnection::get()->vkEncoder();
4542 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata);
4543}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004544#endif
4545#ifdef VK_MVK_ios_surface
4546static VkResult entry_vkCreateIOSSurfaceMVK(
4547 VkInstance instance,
4548 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
4549 const VkAllocationCallbacks* pAllocator,
4550 VkSurfaceKHR* pSurface)
4551{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004552 AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004553 auto vkEnc = HostConnection::get()->vkEncoder();
4554 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
4555 vkCreateIOSSurfaceMVK_VkResult_return = vkEnc->vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
4556 return vkCreateIOSSurfaceMVK_VkResult_return;
4557}
4558#endif
4559#ifdef VK_MVK_macos_surface
4560static VkResult entry_vkCreateMacOSSurfaceMVK(
4561 VkInstance instance,
4562 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
4563 const VkAllocationCallbacks* pAllocator,
4564 VkSurfaceKHR* pSurface)
4565{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004566 AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004567 auto vkEnc = HostConnection::get()->vkEncoder();
4568 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
4569 vkCreateMacOSSurfaceMVK_VkResult_return = vkEnc->vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
4570 return vkCreateMacOSSurfaceMVK_VkResult_return;
4571}
4572#endif
4573#ifdef VK_EXT_external_memory_dma_buf
4574#endif
4575#ifdef VK_EXT_queue_family_foreign
4576#endif
4577#ifdef VK_EXT_debug_utils
4578static VkResult entry_vkSetDebugUtilsObjectNameEXT(
4579 VkDevice device,
4580 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
4581{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004582 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004583 auto vkEnc = HostConnection::get()->vkEncoder();
4584 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
4585 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo);
4586 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
4587}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004588static VkResult dynCheck_entry_vkSetDebugUtilsObjectNameEXT(
4589 VkDevice device,
4590 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
4591{
4592 auto resources = ResourceTracker::get();
4593 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
4594 {
4595 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectNameEXT", "VK_EXT_debug_utils");
4596 }
4597 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
4598 auto vkEnc = HostConnection::get()->vkEncoder();
4599 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
4600 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo);
4601 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
4602}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004603static VkResult entry_vkSetDebugUtilsObjectTagEXT(
4604 VkDevice device,
4605 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
4606{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004607 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004608 auto vkEnc = HostConnection::get()->vkEncoder();
4609 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
4610 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo);
4611 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
4612}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004613static VkResult dynCheck_entry_vkSetDebugUtilsObjectTagEXT(
4614 VkDevice device,
4615 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
4616{
4617 auto resources = ResourceTracker::get();
4618 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
4619 {
4620 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectTagEXT", "VK_EXT_debug_utils");
4621 }
4622 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
4623 auto vkEnc = HostConnection::get()->vkEncoder();
4624 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
4625 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo);
4626 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
4627}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004628static void entry_vkQueueBeginDebugUtilsLabelEXT(
4629 VkQueue queue,
4630 const VkDebugUtilsLabelEXT* pLabelInfo)
4631{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004632 AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004633 auto vkEnc = HostConnection::get()->vkEncoder();
4634 vkEnc->vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo);
4635}
4636static void entry_vkQueueEndDebugUtilsLabelEXT(
4637 VkQueue queue)
4638{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004639 AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004640 auto vkEnc = HostConnection::get()->vkEncoder();
4641 vkEnc->vkQueueEndDebugUtilsLabelEXT(queue);
4642}
4643static void entry_vkQueueInsertDebugUtilsLabelEXT(
4644 VkQueue queue,
4645 const VkDebugUtilsLabelEXT* pLabelInfo)
4646{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004647 AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004648 auto vkEnc = HostConnection::get()->vkEncoder();
4649 vkEnc->vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo);
4650}
4651static void entry_vkCmdBeginDebugUtilsLabelEXT(
4652 VkCommandBuffer commandBuffer,
4653 const VkDebugUtilsLabelEXT* pLabelInfo)
4654{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004655 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004656 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004657 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004658 vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
4659}
4660static void entry_vkCmdEndDebugUtilsLabelEXT(
4661 VkCommandBuffer commandBuffer)
4662{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004663 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004664 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004665 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004666 vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer);
4667}
4668static void entry_vkCmdInsertDebugUtilsLabelEXT(
4669 VkCommandBuffer commandBuffer,
4670 const VkDebugUtilsLabelEXT* pLabelInfo)
4671{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004672 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004673 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004674 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004675 vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
4676}
4677static VkResult entry_vkCreateDebugUtilsMessengerEXT(
4678 VkInstance instance,
4679 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
4680 const VkAllocationCallbacks* pAllocator,
4681 VkDebugUtilsMessengerEXT* pMessenger)
4682{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004683 AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004684 auto vkEnc = HostConnection::get()->vkEncoder();
4685 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
4686 vkCreateDebugUtilsMessengerEXT_VkResult_return = vkEnc->vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger);
4687 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
4688}
4689static void entry_vkDestroyDebugUtilsMessengerEXT(
4690 VkInstance instance,
4691 VkDebugUtilsMessengerEXT messenger,
4692 const VkAllocationCallbacks* pAllocator)
4693{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004694 AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004695 auto vkEnc = HostConnection::get()->vkEncoder();
4696 vkEnc->vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator);
4697}
4698static void entry_vkSubmitDebugUtilsMessageEXT(
4699 VkInstance instance,
4700 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
4701 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
4702 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
4703{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004704 AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004705 auto vkEnc = HostConnection::get()->vkEncoder();
4706 vkEnc->vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData);
4707}
4708#endif
4709#ifdef VK_ANDROID_external_memory_android_hardware_buffer
4710static VkResult entry_vkGetAndroidHardwareBufferPropertiesANDROID(
4711 VkDevice device,
4712 const AHardwareBuffer* buffer,
4713 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
4714{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004715 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004716 auto vkEnc = HostConnection::get()->vkEncoder();
4717 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08004718 auto resources = ResourceTracker::get();
4719 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004720 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
4721}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004722static VkResult dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID(
4723 VkDevice device,
4724 const AHardwareBuffer* buffer,
4725 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
4726{
4727 auto resources = ResourceTracker::get();
4728 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
4729 {
4730 sOnInvalidDynamicallyCheckedCall("vkGetAndroidHardwareBufferPropertiesANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
4731 }
4732 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
4733 auto vkEnc = HostConnection::get()->vkEncoder();
4734 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
4735 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
4736 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
4737}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004738static VkResult entry_vkGetMemoryAndroidHardwareBufferANDROID(
4739 VkDevice device,
4740 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
4741 AHardwareBuffer** pBuffer)
4742{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004743 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004744 auto vkEnc = HostConnection::get()->vkEncoder();
4745 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08004746 auto resources = ResourceTracker::get();
4747 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004748 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
4749}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004750static VkResult dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID(
4751 VkDevice device,
4752 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
4753 AHardwareBuffer** pBuffer)
4754{
4755 auto resources = ResourceTracker::get();
4756 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
4757 {
4758 sOnInvalidDynamicallyCheckedCall("vkGetMemoryAndroidHardwareBufferANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
4759 }
4760 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
4761 auto vkEnc = HostConnection::get()->vkEncoder();
4762 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
4763 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
4764 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
4765}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004766#endif
4767#ifdef VK_EXT_sampler_filter_minmax
4768#endif
4769#ifdef VK_AMD_gpu_shader_int16
4770#endif
4771#ifdef VK_AMD_mixed_attachment_samples
4772#endif
4773#ifdef VK_AMD_shader_fragment_mask
4774#endif
4775#ifdef VK_EXT_shader_stencil_export
4776#endif
4777#ifdef VK_EXT_sample_locations
4778static void entry_vkCmdSetSampleLocationsEXT(
4779 VkCommandBuffer commandBuffer,
4780 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
4781{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004782 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004783 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004784 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004785 vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo);
4786}
4787static void entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(
4788 VkPhysicalDevice physicalDevice,
4789 VkSampleCountFlagBits samples,
4790 VkMultisamplePropertiesEXT* pMultisampleProperties)
4791{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004792 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004793 auto vkEnc = HostConnection::get()->vkEncoder();
4794 vkEnc->vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties);
4795}
4796#endif
4797#ifdef VK_EXT_blend_operation_advanced
4798#endif
4799#ifdef VK_NV_fragment_coverage_to_color
4800#endif
4801#ifdef VK_NV_framebuffer_mixed_samples
4802#endif
4803#ifdef VK_NV_fill_rectangle
4804#endif
4805#ifdef VK_EXT_post_depth_coverage
4806#endif
4807#ifdef VK_EXT_validation_cache
4808static VkResult entry_vkCreateValidationCacheEXT(
4809 VkDevice device,
4810 const VkValidationCacheCreateInfoEXT* pCreateInfo,
4811 const VkAllocationCallbacks* pAllocator,
4812 VkValidationCacheEXT* pValidationCache)
4813{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004814 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004815 auto vkEnc = HostConnection::get()->vkEncoder();
4816 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
4817 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache);
4818 return vkCreateValidationCacheEXT_VkResult_return;
4819}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004820static VkResult dynCheck_entry_vkCreateValidationCacheEXT(
4821 VkDevice device,
4822 const VkValidationCacheCreateInfoEXT* pCreateInfo,
4823 const VkAllocationCallbacks* pAllocator,
4824 VkValidationCacheEXT* pValidationCache)
4825{
4826 auto resources = ResourceTracker::get();
4827 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4828 {
4829 sOnInvalidDynamicallyCheckedCall("vkCreateValidationCacheEXT", "VK_EXT_validation_cache");
4830 }
4831 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
4832 auto vkEnc = HostConnection::get()->vkEncoder();
4833 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
4834 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache);
4835 return vkCreateValidationCacheEXT_VkResult_return;
4836}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004837static void entry_vkDestroyValidationCacheEXT(
4838 VkDevice device,
4839 VkValidationCacheEXT validationCache,
4840 const VkAllocationCallbacks* pAllocator)
4841{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004842 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004843 auto vkEnc = HostConnection::get()->vkEncoder();
4844 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator);
4845}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004846static void dynCheck_entry_vkDestroyValidationCacheEXT(
4847 VkDevice device,
4848 VkValidationCacheEXT validationCache,
4849 const VkAllocationCallbacks* pAllocator)
4850{
4851 auto resources = ResourceTracker::get();
4852 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4853 {
4854 sOnInvalidDynamicallyCheckedCall("vkDestroyValidationCacheEXT", "VK_EXT_validation_cache");
4855 }
4856 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
4857 auto vkEnc = HostConnection::get()->vkEncoder();
4858 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator);
4859}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004860static VkResult entry_vkMergeValidationCachesEXT(
4861 VkDevice device,
4862 VkValidationCacheEXT dstCache,
4863 uint32_t srcCacheCount,
4864 const VkValidationCacheEXT* pSrcCaches)
4865{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004866 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004867 auto vkEnc = HostConnection::get()->vkEncoder();
4868 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
4869 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches);
4870 return vkMergeValidationCachesEXT_VkResult_return;
4871}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004872static VkResult dynCheck_entry_vkMergeValidationCachesEXT(
4873 VkDevice device,
4874 VkValidationCacheEXT dstCache,
4875 uint32_t srcCacheCount,
4876 const VkValidationCacheEXT* pSrcCaches)
4877{
4878 auto resources = ResourceTracker::get();
4879 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4880 {
4881 sOnInvalidDynamicallyCheckedCall("vkMergeValidationCachesEXT", "VK_EXT_validation_cache");
4882 }
4883 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
4884 auto vkEnc = HostConnection::get()->vkEncoder();
4885 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
4886 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches);
4887 return vkMergeValidationCachesEXT_VkResult_return;
4888}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004889static VkResult entry_vkGetValidationCacheDataEXT(
4890 VkDevice device,
4891 VkValidationCacheEXT validationCache,
4892 size_t* pDataSize,
4893 void* pData)
4894{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004895 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004896 auto vkEnc = HostConnection::get()->vkEncoder();
4897 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
4898 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData);
4899 return vkGetValidationCacheDataEXT_VkResult_return;
4900}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004901static VkResult dynCheck_entry_vkGetValidationCacheDataEXT(
4902 VkDevice device,
4903 VkValidationCacheEXT validationCache,
4904 size_t* pDataSize,
4905 void* pData)
4906{
4907 auto resources = ResourceTracker::get();
4908 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4909 {
4910 sOnInvalidDynamicallyCheckedCall("vkGetValidationCacheDataEXT", "VK_EXT_validation_cache");
4911 }
4912 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
4913 auto vkEnc = HostConnection::get()->vkEncoder();
4914 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
4915 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData);
4916 return vkGetValidationCacheDataEXT_VkResult_return;
4917}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004918#endif
4919#ifdef VK_EXT_descriptor_indexing
4920#endif
4921#ifdef VK_EXT_shader_viewport_index_layer
4922#endif
4923#ifdef VK_EXT_global_priority
4924#endif
4925#ifdef VK_EXT_external_memory_host
4926static VkResult entry_vkGetMemoryHostPointerPropertiesEXT(
4927 VkDevice device,
4928 VkExternalMemoryHandleTypeFlagBits handleType,
4929 const void* pHostPointer,
4930 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
4931{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004932 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004933 auto vkEnc = HostConnection::get()->vkEncoder();
4934 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
4935 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties);
4936 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
4937}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004938static VkResult dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT(
4939 VkDevice device,
4940 VkExternalMemoryHandleTypeFlagBits handleType,
4941 const void* pHostPointer,
4942 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
4943{
4944 auto resources = ResourceTracker::get();
4945 if (!resources->hasDeviceExtension(device, "VK_EXT_external_memory_host"))
4946 {
4947 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostPointerPropertiesEXT", "VK_EXT_external_memory_host");
4948 }
4949 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
4950 auto vkEnc = HostConnection::get()->vkEncoder();
4951 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
4952 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties);
4953 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
4954}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004955#endif
4956#ifdef VK_AMD_buffer_marker
4957static void entry_vkCmdWriteBufferMarkerAMD(
4958 VkCommandBuffer commandBuffer,
4959 VkPipelineStageFlagBits pipelineStage,
4960 VkBuffer dstBuffer,
4961 VkDeviceSize dstOffset,
4962 uint32_t marker)
4963{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004964 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004965 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004966 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004967 vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker);
4968}
4969#endif
4970#ifdef VK_AMD_shader_core_properties
4971#endif
4972#ifdef VK_EXT_vertex_attribute_divisor
4973#endif
4974#ifdef VK_NV_shader_subgroup_partitioned
4975#endif
4976#ifdef VK_NV_device_diagnostic_checkpoints
4977static void entry_vkCmdSetCheckpointNV(
4978 VkCommandBuffer commandBuffer,
4979 const void* pCheckpointMarker)
4980{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004981 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004982 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004983 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004984 vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker);
4985}
4986static void entry_vkGetQueueCheckpointDataNV(
4987 VkQueue queue,
4988 uint32_t* pCheckpointDataCount,
4989 VkCheckpointDataNV* pCheckpointData)
4990{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004991 AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004992 auto vkEnc = HostConnection::get()->vkEncoder();
4993 vkEnc->vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData);
4994}
4995#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08004996#ifdef VK_GOOGLE_address_space
4997static VkResult entry_vkMapMemoryIntoAddressSpaceGOOGLE(
4998 VkDevice device,
4999 VkDeviceMemory memory,
5000 uint64_t* pAddress)
5001{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005002 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08005003 auto vkEnc = HostConnection::get()->vkEncoder();
5004 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
5005 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress);
5006 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
5007}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005008static VkResult dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE(
5009 VkDevice device,
5010 VkDeviceMemory memory,
5011 uint64_t* pAddress)
5012{
5013 auto resources = ResourceTracker::get();
5014 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_address_space"))
5015 {
5016 sOnInvalidDynamicallyCheckedCall("vkMapMemoryIntoAddressSpaceGOOGLE", "VK_GOOGLE_address_space");
5017 }
5018 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
5019 auto vkEnc = HostConnection::get()->vkEncoder();
5020 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
5021 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress);
5022 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
5023}
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08005024#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005025#ifdef VK_GOOGLE_color_buffer
5026static VkResult entry_vkRegisterImageColorBufferGOOGLE(
5027 VkDevice device,
5028 VkImage image,
5029 uint32_t colorBuffer)
5030{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005031 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005032 auto vkEnc = HostConnection::get()->vkEncoder();
5033 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
5034 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer);
5035 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
5036}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005037static VkResult dynCheck_entry_vkRegisterImageColorBufferGOOGLE(
5038 VkDevice device,
5039 VkImage image,
5040 uint32_t colorBuffer)
5041{
5042 auto resources = ResourceTracker::get();
5043 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer"))
5044 {
5045 sOnInvalidDynamicallyCheckedCall("vkRegisterImageColorBufferGOOGLE", "VK_GOOGLE_color_buffer");
5046 }
5047 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
5048 auto vkEnc = HostConnection::get()->vkEncoder();
5049 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
5050 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer);
5051 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
5052}
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005053static VkResult entry_vkRegisterBufferColorBufferGOOGLE(
5054 VkDevice device,
5055 VkBuffer buffer,
5056 uint32_t colorBuffer)
5057{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005058 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005059 auto vkEnc = HostConnection::get()->vkEncoder();
5060 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
5061 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer);
5062 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
5063}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005064static VkResult dynCheck_entry_vkRegisterBufferColorBufferGOOGLE(
5065 VkDevice device,
5066 VkBuffer buffer,
5067 uint32_t colorBuffer)
5068{
5069 auto resources = ResourceTracker::get();
5070 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer"))
5071 {
5072 sOnInvalidDynamicallyCheckedCall("vkRegisterBufferColorBufferGOOGLE", "VK_GOOGLE_color_buffer");
5073 }
5074 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
5075 auto vkEnc = HostConnection::get()->vkEncoder();
5076 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
5077 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer);
5078 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
5079}
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005080#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07005081#ifdef VK_GOOGLE_sized_descriptor_update_template
5082static void entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
5083 VkDevice device,
5084 VkDescriptorSet descriptorSet,
5085 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
5086 uint32_t imageInfoCount,
5087 uint32_t bufferInfoCount,
5088 uint32_t bufferViewCount,
5089 const uint32_t* pImageInfoEntryIndices,
5090 const uint32_t* pBufferInfoEntryIndices,
5091 const uint32_t* pBufferViewEntryIndices,
5092 const VkDescriptorImageInfo* pImageInfos,
5093 const VkDescriptorBufferInfo* pBufferInfos,
5094 const VkBufferView* pBufferViews)
5095{
5096 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
5097 auto vkEnc = HostConnection::get()->vkEncoder();
5098 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews);
5099}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005100static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
5101 VkDevice device,
5102 VkDescriptorSet descriptorSet,
5103 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
5104 uint32_t imageInfoCount,
5105 uint32_t bufferInfoCount,
5106 uint32_t bufferViewCount,
5107 const uint32_t* pImageInfoEntryIndices,
5108 const uint32_t* pBufferInfoEntryIndices,
5109 const uint32_t* pBufferViewEntryIndices,
5110 const VkDescriptorImageInfo* pImageInfos,
5111 const VkDescriptorBufferInfo* pBufferInfos,
5112 const VkBufferView* pBufferViews)
5113{
5114 auto resources = ResourceTracker::get();
5115 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template"))
5116 {
5117 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateSizedGOOGLE", "VK_GOOGLE_sized_descriptor_update_template");
5118 }
5119 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
5120 auto vkEnc = HostConnection::get()->vkEncoder();
5121 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews);
5122}
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07005123#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005124#ifdef VK_GOOGLE_async_command_buffers
5125static void entry_vkBeginCommandBufferAsyncGOOGLE(
5126 VkCommandBuffer commandBuffer,
5127 const VkCommandBufferBeginInfo* pBeginInfo)
5128{
5129 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
5130 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005131 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005132 vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo);
5133}
5134static void entry_vkEndCommandBufferAsyncGOOGLE(
5135 VkCommandBuffer commandBuffer)
5136{
5137 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
5138 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005139 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005140 vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer);
5141}
5142static void entry_vkResetCommandBufferAsyncGOOGLE(
5143 VkCommandBuffer commandBuffer,
5144 VkCommandBufferResetFlags flags)
5145{
5146 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
5147 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005148 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005149 vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags);
5150}
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005151static void entry_vkCommandBufferHostSyncGOOGLE(
5152 VkCommandBuffer commandBuffer,
5153 uint32_t needHostSync,
5154 uint32_t sequenceNumber)
5155{
5156 AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
5157 auto vkEnc = HostConnection::get()->vkEncoder();
5158 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
5159 vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber);
5160}
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005161#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00005162#ifdef VK_GOOGLE_create_resources_with_requirements
5163static VkResult entry_vkCreateImageWithRequirementsGOOGLE(
5164 VkDevice device,
5165 const VkImageCreateInfo* pCreateInfo,
5166 const VkAllocationCallbacks* pAllocator,
5167 VkImage* pImage,
5168 VkMemoryRequirements* pMemoryRequirements)
5169{
5170 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
5171 auto vkEnc = HostConnection::get()->vkEncoder();
5172 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5173 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements);
5174 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
5175}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005176static VkResult dynCheck_entry_vkCreateImageWithRequirementsGOOGLE(
5177 VkDevice device,
5178 const VkImageCreateInfo* pCreateInfo,
5179 const VkAllocationCallbacks* pAllocator,
5180 VkImage* pImage,
5181 VkMemoryRequirements* pMemoryRequirements)
5182{
5183 auto resources = ResourceTracker::get();
5184 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements"))
5185 {
5186 sOnInvalidDynamicallyCheckedCall("vkCreateImageWithRequirementsGOOGLE", "VK_GOOGLE_create_resources_with_requirements");
5187 }
5188 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
5189 auto vkEnc = HostConnection::get()->vkEncoder();
5190 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5191 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements);
5192 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
5193}
Lingfeng Yang87f11962019-06-27 16:28:53 +00005194static VkResult entry_vkCreateBufferWithRequirementsGOOGLE(
5195 VkDevice device,
5196 const VkBufferCreateInfo* pCreateInfo,
5197 const VkAllocationCallbacks* pAllocator,
5198 VkBuffer* pBuffer,
5199 VkMemoryRequirements* pMemoryRequirements)
5200{
5201 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
5202 auto vkEnc = HostConnection::get()->vkEncoder();
5203 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5204 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements);
5205 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
5206}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005207static VkResult dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE(
5208 VkDevice device,
5209 const VkBufferCreateInfo* pCreateInfo,
5210 const VkAllocationCallbacks* pAllocator,
5211 VkBuffer* pBuffer,
5212 VkMemoryRequirements* pMemoryRequirements)
5213{
5214 auto resources = ResourceTracker::get();
5215 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements"))
5216 {
5217 sOnInvalidDynamicallyCheckedCall("vkCreateBufferWithRequirementsGOOGLE", "VK_GOOGLE_create_resources_with_requirements");
5218 }
5219 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
5220 auto vkEnc = HostConnection::get()->vkEncoder();
5221 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5222 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements);
5223 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
5224}
Lingfeng Yang87f11962019-06-27 16:28:53 +00005225#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08005226#ifdef VK_GOOGLE_address_space_info
5227static VkResult entry_vkGetMemoryHostAddressInfoGOOGLE(
5228 VkDevice device,
5229 VkDeviceMemory memory,
5230 uint64_t* pAddress,
5231 uint64_t* pSize,
5232 uint64_t* pHostmemId)
5233{
5234 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
5235 auto vkEnc = HostConnection::get()->vkEncoder();
5236 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
5237 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId);
5238 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
5239}
5240static VkResult dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE(
5241 VkDevice device,
5242 VkDeviceMemory memory,
5243 uint64_t* pAddress,
5244 uint64_t* pSize,
5245 uint64_t* pHostmemId)
5246{
5247 auto resources = ResourceTracker::get();
5248 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_address_space_info"))
5249 {
5250 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostAddressInfoGOOGLE", "VK_GOOGLE_address_space_info");
5251 }
5252 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
5253 auto vkEnc = HostConnection::get()->vkEncoder();
5254 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
5255 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId);
5256 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
5257}
5258#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07005259#ifdef VK_GOOGLE_free_memory_sync
5260static VkResult entry_vkFreeMemorySyncGOOGLE(
5261 VkDevice device,
5262 VkDeviceMemory memory,
5263 const VkAllocationCallbacks* pAllocator)
5264{
5265 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
5266 auto vkEnc = HostConnection::get()->vkEncoder();
5267 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
5268 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator);
5269 return vkFreeMemorySyncGOOGLE_VkResult_return;
5270}
5271static VkResult dynCheck_entry_vkFreeMemorySyncGOOGLE(
5272 VkDevice device,
5273 VkDeviceMemory memory,
5274 const VkAllocationCallbacks* pAllocator)
5275{
5276 auto resources = ResourceTracker::get();
5277 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_free_memory_sync"))
5278 {
5279 sOnInvalidDynamicallyCheckedCall("vkFreeMemorySyncGOOGLE", "VK_GOOGLE_free_memory_sync");
5280 }
5281 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
5282 auto vkEnc = HostConnection::get()->vkEncoder();
5283 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
5284 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator);
5285 return vkFreeMemorySyncGOOGLE_VkResult_return;
5286}
5287#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005288void* goldfish_vulkan_get_proc_address(const char* name){
5289#ifdef VK_VERSION_1_0
5290 if (!strcmp(name, "vkCreateInstance"))
5291 {
5292 return (void*)entry_vkCreateInstance;
5293 }
5294 if (!strcmp(name, "vkDestroyInstance"))
5295 {
5296 return (void*)entry_vkDestroyInstance;
5297 }
5298 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
5299 {
5300 return (void*)entry_vkEnumeratePhysicalDevices;
5301 }
5302 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
5303 {
5304 return (void*)entry_vkGetPhysicalDeviceFeatures;
5305 }
5306 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
5307 {
5308 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
5309 }
5310 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
5311 {
5312 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
5313 }
5314 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
5315 {
5316 return (void*)entry_vkGetPhysicalDeviceProperties;
5317 }
5318 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
5319 {
5320 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
5321 }
5322 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
5323 {
5324 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
5325 }
5326 if (!strcmp(name, "vkGetInstanceProcAddr"))
5327 {
5328 return (void*)entry_vkGetInstanceProcAddr;
5329 }
5330 if (!strcmp(name, "vkGetDeviceProcAddr"))
5331 {
5332 return (void*)entry_vkGetDeviceProcAddr;
5333 }
5334 if (!strcmp(name, "vkCreateDevice"))
5335 {
5336 return (void*)entry_vkCreateDevice;
5337 }
5338 if (!strcmp(name, "vkDestroyDevice"))
5339 {
5340 return (void*)entry_vkDestroyDevice;
5341 }
5342 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
5343 {
5344 return (void*)entry_vkEnumerateInstanceExtensionProperties;
5345 }
5346 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
5347 {
5348 return (void*)entry_vkEnumerateDeviceExtensionProperties;
5349 }
5350 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
5351 {
5352 return (void*)entry_vkEnumerateInstanceLayerProperties;
5353 }
5354 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
5355 {
5356 return (void*)entry_vkEnumerateDeviceLayerProperties;
5357 }
5358 if (!strcmp(name, "vkGetDeviceQueue"))
5359 {
5360 return (void*)entry_vkGetDeviceQueue;
5361 }
5362 if (!strcmp(name, "vkQueueSubmit"))
5363 {
5364 return (void*)entry_vkQueueSubmit;
5365 }
5366 if (!strcmp(name, "vkQueueWaitIdle"))
5367 {
5368 return (void*)entry_vkQueueWaitIdle;
5369 }
5370 if (!strcmp(name, "vkDeviceWaitIdle"))
5371 {
5372 return (void*)entry_vkDeviceWaitIdle;
5373 }
5374 if (!strcmp(name, "vkAllocateMemory"))
5375 {
5376 return (void*)entry_vkAllocateMemory;
5377 }
5378 if (!strcmp(name, "vkFreeMemory"))
5379 {
5380 return (void*)entry_vkFreeMemory;
5381 }
5382 if (!strcmp(name, "vkMapMemory"))
5383 {
5384 return (void*)entry_vkMapMemory;
5385 }
5386 if (!strcmp(name, "vkUnmapMemory"))
5387 {
5388 return (void*)entry_vkUnmapMemory;
5389 }
5390 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
5391 {
5392 return (void*)entry_vkFlushMappedMemoryRanges;
5393 }
5394 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
5395 {
5396 return (void*)entry_vkInvalidateMappedMemoryRanges;
5397 }
5398 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
5399 {
5400 return (void*)entry_vkGetDeviceMemoryCommitment;
5401 }
5402 if (!strcmp(name, "vkBindBufferMemory"))
5403 {
5404 return (void*)entry_vkBindBufferMemory;
5405 }
5406 if (!strcmp(name, "vkBindImageMemory"))
5407 {
5408 return (void*)entry_vkBindImageMemory;
5409 }
5410 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
5411 {
5412 return (void*)entry_vkGetBufferMemoryRequirements;
5413 }
5414 if (!strcmp(name, "vkGetImageMemoryRequirements"))
5415 {
5416 return (void*)entry_vkGetImageMemoryRequirements;
5417 }
5418 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
5419 {
5420 return (void*)entry_vkGetImageSparseMemoryRequirements;
5421 }
5422 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
5423 {
5424 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
5425 }
5426 if (!strcmp(name, "vkQueueBindSparse"))
5427 {
5428 return (void*)entry_vkQueueBindSparse;
5429 }
5430 if (!strcmp(name, "vkCreateFence"))
5431 {
5432 return (void*)entry_vkCreateFence;
5433 }
5434 if (!strcmp(name, "vkDestroyFence"))
5435 {
5436 return (void*)entry_vkDestroyFence;
5437 }
5438 if (!strcmp(name, "vkResetFences"))
5439 {
5440 return (void*)entry_vkResetFences;
5441 }
5442 if (!strcmp(name, "vkGetFenceStatus"))
5443 {
5444 return (void*)entry_vkGetFenceStatus;
5445 }
5446 if (!strcmp(name, "vkWaitForFences"))
5447 {
5448 return (void*)entry_vkWaitForFences;
5449 }
5450 if (!strcmp(name, "vkCreateSemaphore"))
5451 {
5452 return (void*)entry_vkCreateSemaphore;
5453 }
5454 if (!strcmp(name, "vkDestroySemaphore"))
5455 {
5456 return (void*)entry_vkDestroySemaphore;
5457 }
5458 if (!strcmp(name, "vkCreateEvent"))
5459 {
5460 return (void*)entry_vkCreateEvent;
5461 }
5462 if (!strcmp(name, "vkDestroyEvent"))
5463 {
5464 return (void*)entry_vkDestroyEvent;
5465 }
5466 if (!strcmp(name, "vkGetEventStatus"))
5467 {
5468 return (void*)entry_vkGetEventStatus;
5469 }
5470 if (!strcmp(name, "vkSetEvent"))
5471 {
5472 return (void*)entry_vkSetEvent;
5473 }
5474 if (!strcmp(name, "vkResetEvent"))
5475 {
5476 return (void*)entry_vkResetEvent;
5477 }
5478 if (!strcmp(name, "vkCreateQueryPool"))
5479 {
5480 return (void*)entry_vkCreateQueryPool;
5481 }
5482 if (!strcmp(name, "vkDestroyQueryPool"))
5483 {
5484 return (void*)entry_vkDestroyQueryPool;
5485 }
5486 if (!strcmp(name, "vkGetQueryPoolResults"))
5487 {
5488 return (void*)entry_vkGetQueryPoolResults;
5489 }
5490 if (!strcmp(name, "vkCreateBuffer"))
5491 {
5492 return (void*)entry_vkCreateBuffer;
5493 }
5494 if (!strcmp(name, "vkDestroyBuffer"))
5495 {
5496 return (void*)entry_vkDestroyBuffer;
5497 }
5498 if (!strcmp(name, "vkCreateBufferView"))
5499 {
5500 return (void*)entry_vkCreateBufferView;
5501 }
5502 if (!strcmp(name, "vkDestroyBufferView"))
5503 {
5504 return (void*)entry_vkDestroyBufferView;
5505 }
5506 if (!strcmp(name, "vkCreateImage"))
5507 {
5508 return (void*)entry_vkCreateImage;
5509 }
5510 if (!strcmp(name, "vkDestroyImage"))
5511 {
5512 return (void*)entry_vkDestroyImage;
5513 }
5514 if (!strcmp(name, "vkGetImageSubresourceLayout"))
5515 {
5516 return (void*)entry_vkGetImageSubresourceLayout;
5517 }
5518 if (!strcmp(name, "vkCreateImageView"))
5519 {
5520 return (void*)entry_vkCreateImageView;
5521 }
5522 if (!strcmp(name, "vkDestroyImageView"))
5523 {
5524 return (void*)entry_vkDestroyImageView;
5525 }
5526 if (!strcmp(name, "vkCreateShaderModule"))
5527 {
5528 return (void*)entry_vkCreateShaderModule;
5529 }
5530 if (!strcmp(name, "vkDestroyShaderModule"))
5531 {
5532 return (void*)entry_vkDestroyShaderModule;
5533 }
5534 if (!strcmp(name, "vkCreatePipelineCache"))
5535 {
5536 return (void*)entry_vkCreatePipelineCache;
5537 }
5538 if (!strcmp(name, "vkDestroyPipelineCache"))
5539 {
5540 return (void*)entry_vkDestroyPipelineCache;
5541 }
5542 if (!strcmp(name, "vkGetPipelineCacheData"))
5543 {
5544 return (void*)entry_vkGetPipelineCacheData;
5545 }
5546 if (!strcmp(name, "vkMergePipelineCaches"))
5547 {
5548 return (void*)entry_vkMergePipelineCaches;
5549 }
5550 if (!strcmp(name, "vkCreateGraphicsPipelines"))
5551 {
5552 return (void*)entry_vkCreateGraphicsPipelines;
5553 }
5554 if (!strcmp(name, "vkCreateComputePipelines"))
5555 {
5556 return (void*)entry_vkCreateComputePipelines;
5557 }
5558 if (!strcmp(name, "vkDestroyPipeline"))
5559 {
5560 return (void*)entry_vkDestroyPipeline;
5561 }
5562 if (!strcmp(name, "vkCreatePipelineLayout"))
5563 {
5564 return (void*)entry_vkCreatePipelineLayout;
5565 }
5566 if (!strcmp(name, "vkDestroyPipelineLayout"))
5567 {
5568 return (void*)entry_vkDestroyPipelineLayout;
5569 }
5570 if (!strcmp(name, "vkCreateSampler"))
5571 {
5572 return (void*)entry_vkCreateSampler;
5573 }
5574 if (!strcmp(name, "vkDestroySampler"))
5575 {
5576 return (void*)entry_vkDestroySampler;
5577 }
5578 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
5579 {
5580 return (void*)entry_vkCreateDescriptorSetLayout;
5581 }
5582 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
5583 {
5584 return (void*)entry_vkDestroyDescriptorSetLayout;
5585 }
5586 if (!strcmp(name, "vkCreateDescriptorPool"))
5587 {
5588 return (void*)entry_vkCreateDescriptorPool;
5589 }
5590 if (!strcmp(name, "vkDestroyDescriptorPool"))
5591 {
5592 return (void*)entry_vkDestroyDescriptorPool;
5593 }
5594 if (!strcmp(name, "vkResetDescriptorPool"))
5595 {
5596 return (void*)entry_vkResetDescriptorPool;
5597 }
5598 if (!strcmp(name, "vkAllocateDescriptorSets"))
5599 {
5600 return (void*)entry_vkAllocateDescriptorSets;
5601 }
5602 if (!strcmp(name, "vkFreeDescriptorSets"))
5603 {
5604 return (void*)entry_vkFreeDescriptorSets;
5605 }
5606 if (!strcmp(name, "vkUpdateDescriptorSets"))
5607 {
5608 return (void*)entry_vkUpdateDescriptorSets;
5609 }
5610 if (!strcmp(name, "vkCreateFramebuffer"))
5611 {
5612 return (void*)entry_vkCreateFramebuffer;
5613 }
5614 if (!strcmp(name, "vkDestroyFramebuffer"))
5615 {
5616 return (void*)entry_vkDestroyFramebuffer;
5617 }
5618 if (!strcmp(name, "vkCreateRenderPass"))
5619 {
5620 return (void*)entry_vkCreateRenderPass;
5621 }
5622 if (!strcmp(name, "vkDestroyRenderPass"))
5623 {
5624 return (void*)entry_vkDestroyRenderPass;
5625 }
5626 if (!strcmp(name, "vkGetRenderAreaGranularity"))
5627 {
5628 return (void*)entry_vkGetRenderAreaGranularity;
5629 }
5630 if (!strcmp(name, "vkCreateCommandPool"))
5631 {
5632 return (void*)entry_vkCreateCommandPool;
5633 }
5634 if (!strcmp(name, "vkDestroyCommandPool"))
5635 {
5636 return (void*)entry_vkDestroyCommandPool;
5637 }
5638 if (!strcmp(name, "vkResetCommandPool"))
5639 {
5640 return (void*)entry_vkResetCommandPool;
5641 }
5642 if (!strcmp(name, "vkAllocateCommandBuffers"))
5643 {
5644 return (void*)entry_vkAllocateCommandBuffers;
5645 }
5646 if (!strcmp(name, "vkFreeCommandBuffers"))
5647 {
5648 return (void*)entry_vkFreeCommandBuffers;
5649 }
5650 if (!strcmp(name, "vkBeginCommandBuffer"))
5651 {
5652 return (void*)entry_vkBeginCommandBuffer;
5653 }
5654 if (!strcmp(name, "vkEndCommandBuffer"))
5655 {
5656 return (void*)entry_vkEndCommandBuffer;
5657 }
5658 if (!strcmp(name, "vkResetCommandBuffer"))
5659 {
5660 return (void*)entry_vkResetCommandBuffer;
5661 }
5662 if (!strcmp(name, "vkCmdBindPipeline"))
5663 {
5664 return (void*)entry_vkCmdBindPipeline;
5665 }
5666 if (!strcmp(name, "vkCmdSetViewport"))
5667 {
5668 return (void*)entry_vkCmdSetViewport;
5669 }
5670 if (!strcmp(name, "vkCmdSetScissor"))
5671 {
5672 return (void*)entry_vkCmdSetScissor;
5673 }
5674 if (!strcmp(name, "vkCmdSetLineWidth"))
5675 {
5676 return (void*)entry_vkCmdSetLineWidth;
5677 }
5678 if (!strcmp(name, "vkCmdSetDepthBias"))
5679 {
5680 return (void*)entry_vkCmdSetDepthBias;
5681 }
5682 if (!strcmp(name, "vkCmdSetBlendConstants"))
5683 {
5684 return (void*)entry_vkCmdSetBlendConstants;
5685 }
5686 if (!strcmp(name, "vkCmdSetDepthBounds"))
5687 {
5688 return (void*)entry_vkCmdSetDepthBounds;
5689 }
5690 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
5691 {
5692 return (void*)entry_vkCmdSetStencilCompareMask;
5693 }
5694 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
5695 {
5696 return (void*)entry_vkCmdSetStencilWriteMask;
5697 }
5698 if (!strcmp(name, "vkCmdSetStencilReference"))
5699 {
5700 return (void*)entry_vkCmdSetStencilReference;
5701 }
5702 if (!strcmp(name, "vkCmdBindDescriptorSets"))
5703 {
5704 return (void*)entry_vkCmdBindDescriptorSets;
5705 }
5706 if (!strcmp(name, "vkCmdBindIndexBuffer"))
5707 {
5708 return (void*)entry_vkCmdBindIndexBuffer;
5709 }
5710 if (!strcmp(name, "vkCmdBindVertexBuffers"))
5711 {
5712 return (void*)entry_vkCmdBindVertexBuffers;
5713 }
5714 if (!strcmp(name, "vkCmdDraw"))
5715 {
5716 return (void*)entry_vkCmdDraw;
5717 }
5718 if (!strcmp(name, "vkCmdDrawIndexed"))
5719 {
5720 return (void*)entry_vkCmdDrawIndexed;
5721 }
5722 if (!strcmp(name, "vkCmdDrawIndirect"))
5723 {
5724 return (void*)entry_vkCmdDrawIndirect;
5725 }
5726 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
5727 {
5728 return (void*)entry_vkCmdDrawIndexedIndirect;
5729 }
5730 if (!strcmp(name, "vkCmdDispatch"))
5731 {
5732 return (void*)entry_vkCmdDispatch;
5733 }
5734 if (!strcmp(name, "vkCmdDispatchIndirect"))
5735 {
5736 return (void*)entry_vkCmdDispatchIndirect;
5737 }
5738 if (!strcmp(name, "vkCmdCopyBuffer"))
5739 {
5740 return (void*)entry_vkCmdCopyBuffer;
5741 }
5742 if (!strcmp(name, "vkCmdCopyImage"))
5743 {
5744 return (void*)entry_vkCmdCopyImage;
5745 }
5746 if (!strcmp(name, "vkCmdBlitImage"))
5747 {
5748 return (void*)entry_vkCmdBlitImage;
5749 }
5750 if (!strcmp(name, "vkCmdCopyBufferToImage"))
5751 {
5752 return (void*)entry_vkCmdCopyBufferToImage;
5753 }
5754 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
5755 {
5756 return (void*)entry_vkCmdCopyImageToBuffer;
5757 }
5758 if (!strcmp(name, "vkCmdUpdateBuffer"))
5759 {
5760 return (void*)entry_vkCmdUpdateBuffer;
5761 }
5762 if (!strcmp(name, "vkCmdFillBuffer"))
5763 {
5764 return (void*)entry_vkCmdFillBuffer;
5765 }
5766 if (!strcmp(name, "vkCmdClearColorImage"))
5767 {
5768 return (void*)entry_vkCmdClearColorImage;
5769 }
5770 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
5771 {
5772 return (void*)entry_vkCmdClearDepthStencilImage;
5773 }
5774 if (!strcmp(name, "vkCmdClearAttachments"))
5775 {
5776 return (void*)entry_vkCmdClearAttachments;
5777 }
5778 if (!strcmp(name, "vkCmdResolveImage"))
5779 {
5780 return (void*)entry_vkCmdResolveImage;
5781 }
5782 if (!strcmp(name, "vkCmdSetEvent"))
5783 {
5784 return (void*)entry_vkCmdSetEvent;
5785 }
5786 if (!strcmp(name, "vkCmdResetEvent"))
5787 {
5788 return (void*)entry_vkCmdResetEvent;
5789 }
5790 if (!strcmp(name, "vkCmdWaitEvents"))
5791 {
5792 return (void*)entry_vkCmdWaitEvents;
5793 }
5794 if (!strcmp(name, "vkCmdPipelineBarrier"))
5795 {
5796 return (void*)entry_vkCmdPipelineBarrier;
5797 }
5798 if (!strcmp(name, "vkCmdBeginQuery"))
5799 {
5800 return (void*)entry_vkCmdBeginQuery;
5801 }
5802 if (!strcmp(name, "vkCmdEndQuery"))
5803 {
5804 return (void*)entry_vkCmdEndQuery;
5805 }
5806 if (!strcmp(name, "vkCmdResetQueryPool"))
5807 {
5808 return (void*)entry_vkCmdResetQueryPool;
5809 }
5810 if (!strcmp(name, "vkCmdWriteTimestamp"))
5811 {
5812 return (void*)entry_vkCmdWriteTimestamp;
5813 }
5814 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
5815 {
5816 return (void*)entry_vkCmdCopyQueryPoolResults;
5817 }
5818 if (!strcmp(name, "vkCmdPushConstants"))
5819 {
5820 return (void*)entry_vkCmdPushConstants;
5821 }
5822 if (!strcmp(name, "vkCmdBeginRenderPass"))
5823 {
5824 return (void*)entry_vkCmdBeginRenderPass;
5825 }
5826 if (!strcmp(name, "vkCmdNextSubpass"))
5827 {
5828 return (void*)entry_vkCmdNextSubpass;
5829 }
5830 if (!strcmp(name, "vkCmdEndRenderPass"))
5831 {
5832 return (void*)entry_vkCmdEndRenderPass;
5833 }
5834 if (!strcmp(name, "vkCmdExecuteCommands"))
5835 {
5836 return (void*)entry_vkCmdExecuteCommands;
5837 }
5838#endif
5839#ifdef VK_VERSION_1_1
5840 if (!strcmp(name, "vkEnumerateInstanceVersion"))
5841 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005842 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005843 }
5844 if (!strcmp(name, "vkBindBufferMemory2"))
5845 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005846 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005847 }
5848 if (!strcmp(name, "vkBindImageMemory2"))
5849 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005850 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005851 }
5852 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
5853 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005854 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005855 }
5856 if (!strcmp(name, "vkCmdSetDeviceMask"))
5857 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005858 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005859 }
5860 if (!strcmp(name, "vkCmdDispatchBase"))
5861 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005862 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005863 }
5864 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
5865 {
Lingfeng Yang113689e2018-11-11 16:48:50 -08005866 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005867 }
5868 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
5869 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005870 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005871 }
5872 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
5873 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005874 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005875 }
5876 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
5877 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005878 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005879 }
5880 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
5881 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005882 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005883 }
5884 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
5885 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005886 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005887 }
5888 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
5889 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005890 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005891 }
5892 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
5893 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005894 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005895 }
5896 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
5897 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005898 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005899 }
5900 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
5901 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005902 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005903 }
5904 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
5905 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005906 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005907 }
5908 if (!strcmp(name, "vkTrimCommandPool"))
5909 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005910 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005911 }
5912 if (!strcmp(name, "vkGetDeviceQueue2"))
5913 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005914 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005915 }
5916 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
5917 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005918 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005919 }
5920 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
5921 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005922 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005923 }
5924 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
5925 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005926 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005927 }
5928 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
5929 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005930 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005931 }
5932 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
5933 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005934 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005935 }
5936 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
5937 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005938 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005939 }
5940 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
5941 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005942 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005943 }
5944 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
5945 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005946 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005947 }
5948 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
5949 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005950 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005951 }
5952#endif
5953#ifdef VK_KHR_surface
5954 if (!strcmp(name, "vkDestroySurfaceKHR"))
5955 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005956 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005957 }
5958 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
5959 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005960 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005961 }
5962 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
5963 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005964 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005965 }
5966 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
5967 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005968 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005969 }
5970 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
5971 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005972 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005973 }
5974#endif
5975#ifdef VK_KHR_swapchain
5976 if (!strcmp(name, "vkCreateSwapchainKHR"))
5977 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005978 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005979 }
5980 if (!strcmp(name, "vkDestroySwapchainKHR"))
5981 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005982 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005983 }
5984 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
5985 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005986 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005987 }
5988 if (!strcmp(name, "vkAcquireNextImageKHR"))
5989 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005990 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005991 }
5992 if (!strcmp(name, "vkQueuePresentKHR"))
5993 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005994 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005995 }
5996 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
5997 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005998 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005999 }
6000 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
6001 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006002 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006003 }
6004 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
6005 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006006 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006007 }
6008 if (!strcmp(name, "vkAcquireNextImage2KHR"))
6009 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006010 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006011 }
6012#endif
6013#ifdef VK_KHR_display
6014 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
6015 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006016 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006017 }
6018 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
6019 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006020 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006021 }
6022 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
6023 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006024 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006025 }
6026 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
6027 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006028 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006029 }
6030 if (!strcmp(name, "vkCreateDisplayModeKHR"))
6031 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006032 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006033 }
6034 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
6035 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006036 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006037 }
6038 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
6039 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006040 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006041 }
6042#endif
6043#ifdef VK_KHR_display_swapchain
6044 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
6045 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006046 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006047 }
6048#endif
6049#ifdef VK_KHR_xlib_surface
6050 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
6051 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006052 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006053 }
6054 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
6055 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006056 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006057 }
6058#endif
6059#ifdef VK_KHR_xcb_surface
6060 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
6061 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006062 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006063 }
6064 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
6065 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006066 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006067 }
6068#endif
6069#ifdef VK_KHR_wayland_surface
6070 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
6071 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006072 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006073 }
6074 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
6075 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006076 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006077 }
6078#endif
6079#ifdef VK_KHR_mir_surface
6080 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
6081 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006082 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006083 }
6084 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
6085 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006086 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006087 }
6088#endif
6089#ifdef VK_KHR_android_surface
6090 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
6091 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006092 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006093 }
6094#endif
6095#ifdef VK_KHR_win32_surface
6096 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
6097 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006098 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006099 }
6100 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
6101 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006102 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006103 }
6104#endif
6105#ifdef VK_KHR_get_physical_device_properties2
6106 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
6107 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006108 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006109 }
6110 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
6111 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006112 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006113 }
6114 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
6115 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006116 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006117 }
6118 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
6119 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006120 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006121 }
6122 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
6123 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006124 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006125 }
6126 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
6127 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006128 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006129 }
6130 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
6131 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006132 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006133 }
6134#endif
6135#ifdef VK_KHR_device_group
6136 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
6137 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006138 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006139 }
6140 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
6141 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006142 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006143 }
6144 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
6145 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006146 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006147 }
6148#endif
6149#ifdef VK_KHR_maintenance1
6150 if (!strcmp(name, "vkTrimCommandPoolKHR"))
6151 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006152 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006153 }
6154#endif
6155#ifdef VK_KHR_device_group_creation
6156 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
6157 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006158 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006159 }
6160#endif
6161#ifdef VK_KHR_external_memory_capabilities
6162 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
6163 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006164 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006165 }
6166#endif
6167#ifdef VK_KHR_external_memory_win32
6168 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
6169 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006170 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006171 }
6172 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
6173 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006174 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006175 }
6176#endif
6177#ifdef VK_KHR_external_memory_fd
6178 if (!strcmp(name, "vkGetMemoryFdKHR"))
6179 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006180 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006181 }
6182 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
6183 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006184 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006185 }
6186#endif
6187#ifdef VK_KHR_external_semaphore_capabilities
6188 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
6189 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006190 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006191 }
6192#endif
6193#ifdef VK_KHR_external_semaphore_win32
6194 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
6195 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006196 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006197 }
6198 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
6199 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006200 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006201 }
6202#endif
6203#ifdef VK_KHR_external_semaphore_fd
6204 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
6205 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006206 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006207 }
6208 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
6209 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006210 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006211 }
6212#endif
6213#ifdef VK_KHR_push_descriptor
6214 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
6215 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006216 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006217 }
6218 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
6219 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006220 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006221 }
6222#endif
6223#ifdef VK_KHR_descriptor_update_template
6224 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
6225 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006226 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006227 }
6228 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
6229 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006230 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006231 }
6232 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
6233 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006234 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006235 }
6236#endif
6237#ifdef VK_KHR_create_renderpass2
6238 if (!strcmp(name, "vkCreateRenderPass2KHR"))
6239 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006240 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006241 }
6242 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
6243 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006244 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006245 }
6246 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
6247 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006248 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006249 }
6250 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
6251 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006252 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006253 }
6254#endif
6255#ifdef VK_KHR_shared_presentable_image
6256 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
6257 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006258 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006259 }
6260#endif
6261#ifdef VK_KHR_external_fence_capabilities
6262 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
6263 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006264 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006265 }
6266#endif
6267#ifdef VK_KHR_external_fence_win32
6268 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
6269 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006270 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006271 }
6272 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
6273 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006274 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006275 }
6276#endif
6277#ifdef VK_KHR_external_fence_fd
6278 if (!strcmp(name, "vkImportFenceFdKHR"))
6279 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006280 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006281 }
6282 if (!strcmp(name, "vkGetFenceFdKHR"))
6283 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006284 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006285 }
6286#endif
6287#ifdef VK_KHR_get_surface_capabilities2
6288 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
6289 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006290 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006291 }
6292 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
6293 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006294 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006295 }
6296#endif
6297#ifdef VK_KHR_get_display_properties2
6298 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
6299 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006300 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006301 }
6302 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
6303 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006304 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006305 }
6306 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
6307 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006308 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006309 }
6310 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
6311 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006312 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006313 }
6314#endif
6315#ifdef VK_KHR_get_memory_requirements2
6316 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
6317 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006318 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006319 }
6320 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
6321 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006322 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006323 }
6324 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
6325 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006326 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006327 }
6328#endif
6329#ifdef VK_KHR_sampler_ycbcr_conversion
6330 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
6331 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006332 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006333 }
6334 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
6335 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006336 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006337 }
6338#endif
6339#ifdef VK_KHR_bind_memory2
6340 if (!strcmp(name, "vkBindBufferMemory2KHR"))
6341 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006342 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006343 }
6344 if (!strcmp(name, "vkBindImageMemory2KHR"))
6345 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006346 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006347 }
6348#endif
6349#ifdef VK_KHR_maintenance3
6350 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
6351 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006352 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006353 }
6354#endif
6355#ifdef VK_KHR_draw_indirect_count
6356 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
6357 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006358 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006359 }
6360 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
6361 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006362 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006363 }
6364#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08006365#ifdef VK_ANDROID_native_buffer
6366 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
6367 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006368 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006369 }
6370 if (!strcmp(name, "vkAcquireImageANDROID"))
6371 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006372 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006373 }
6374 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
6375 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006376 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006377 }
6378#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006379#ifdef VK_EXT_debug_report
6380 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
6381 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006382 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006383 }
6384 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
6385 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006386 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006387 }
6388 if (!strcmp(name, "vkDebugReportMessageEXT"))
6389 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006390 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006391 }
6392#endif
6393#ifdef VK_EXT_debug_marker
6394 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
6395 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006396 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006397 }
6398 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
6399 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006400 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006401 }
6402 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
6403 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006404 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006405 }
6406 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
6407 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006408 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006409 }
6410 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
6411 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006412 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006413 }
6414#endif
6415#ifdef VK_AMD_draw_indirect_count
6416 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
6417 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006418 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006419 }
6420 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
6421 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006422 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006423 }
6424#endif
6425#ifdef VK_AMD_shader_info
6426 if (!strcmp(name, "vkGetShaderInfoAMD"))
6427 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006428 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006429 }
6430#endif
6431#ifdef VK_NV_external_memory_capabilities
6432 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
6433 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006434 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006435 }
6436#endif
6437#ifdef VK_NV_external_memory_win32
6438 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
6439 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006440 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006441 }
6442#endif
6443#ifdef VK_NN_vi_surface
6444 if (!strcmp(name, "vkCreateViSurfaceNN"))
6445 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006446 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006447 }
6448#endif
6449#ifdef VK_EXT_conditional_rendering
6450 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
6451 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006452 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006453 }
6454 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
6455 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006456 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006457 }
6458#endif
6459#ifdef VK_NVX_device_generated_commands
6460 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
6461 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006462 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006463 }
6464 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
6465 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006466 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006467 }
6468 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
6469 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006470 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006471 }
6472 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
6473 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006474 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006475 }
6476 if (!strcmp(name, "vkCreateObjectTableNVX"))
6477 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006478 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006479 }
6480 if (!strcmp(name, "vkDestroyObjectTableNVX"))
6481 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006482 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006483 }
6484 if (!strcmp(name, "vkRegisterObjectsNVX"))
6485 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006486 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006487 }
6488 if (!strcmp(name, "vkUnregisterObjectsNVX"))
6489 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006490 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006491 }
6492 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
6493 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006494 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006495 }
6496#endif
6497#ifdef VK_NV_clip_space_w_scaling
6498 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
6499 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006500 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006501 }
6502#endif
6503#ifdef VK_EXT_direct_mode_display
6504 if (!strcmp(name, "vkReleaseDisplayEXT"))
6505 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006506 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006507 }
6508#endif
6509#ifdef VK_EXT_acquire_xlib_display
6510 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
6511 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006512 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006513 }
6514 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
6515 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006516 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006517 }
6518#endif
6519#ifdef VK_EXT_display_surface_counter
6520 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
6521 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006522 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006523 }
6524#endif
6525#ifdef VK_EXT_display_control
6526 if (!strcmp(name, "vkDisplayPowerControlEXT"))
6527 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006528 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006529 }
6530 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
6531 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006532 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006533 }
6534 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
6535 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006536 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006537 }
6538 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
6539 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006540 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006541 }
6542#endif
6543#ifdef VK_GOOGLE_display_timing
6544 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
6545 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006546 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006547 }
6548 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
6549 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006550 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006551 }
6552#endif
6553#ifdef VK_EXT_discard_rectangles
6554 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
6555 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006556 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006557 }
6558#endif
6559#ifdef VK_EXT_hdr_metadata
6560 if (!strcmp(name, "vkSetHdrMetadataEXT"))
6561 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006562 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006563 }
6564#endif
6565#ifdef VK_MVK_ios_surface
6566 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
6567 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006568 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006569 }
6570#endif
6571#ifdef VK_MVK_macos_surface
6572 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
6573 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006574 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006575 }
6576#endif
6577#ifdef VK_EXT_debug_utils
6578 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
6579 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006580 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006581 }
6582 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
6583 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006584 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006585 }
6586 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
6587 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006588 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006589 }
6590 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
6591 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006592 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006593 }
6594 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
6595 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006596 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006597 }
6598 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
6599 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006600 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006601 }
6602 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
6603 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006604 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006605 }
6606 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
6607 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006608 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006609 }
6610 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
6611 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006612 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006613 }
6614 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
6615 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006616 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006617 }
6618 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
6619 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006620 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006621 }
6622#endif
6623#ifdef VK_ANDROID_external_memory_android_hardware_buffer
6624 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
6625 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006626 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006627 }
6628 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
6629 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006630 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006631 }
6632#endif
6633#ifdef VK_EXT_sample_locations
6634 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
6635 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006636 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006637 }
6638 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
6639 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006640 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006641 }
6642#endif
6643#ifdef VK_EXT_validation_cache
6644 if (!strcmp(name, "vkCreateValidationCacheEXT"))
6645 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006646 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006647 }
6648 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
6649 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006650 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006651 }
6652 if (!strcmp(name, "vkMergeValidationCachesEXT"))
6653 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006654 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006655 }
6656 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
6657 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006658 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006659 }
6660#endif
6661#ifdef VK_EXT_external_memory_host
6662 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
6663 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006664 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006665 }
6666#endif
6667#ifdef VK_AMD_buffer_marker
6668 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
6669 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006670 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006671 }
6672#endif
6673#ifdef VK_NV_device_diagnostic_checkpoints
6674 if (!strcmp(name, "vkCmdSetCheckpointNV"))
6675 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006676 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006677 }
6678 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
6679 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006680 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006681 }
6682#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006683#ifdef VK_GOOGLE_address_space
6684 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
6685 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006686 return nullptr;
6687 }
6688#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006689#ifdef VK_GOOGLE_color_buffer
6690 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
6691 {
6692 return nullptr;
6693 }
6694 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
6695 {
6696 return nullptr;
6697 }
6698#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07006699#ifdef VK_GOOGLE_sized_descriptor_update_template
6700 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
6701 {
6702 return nullptr;
6703 }
6704#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006705#ifdef VK_GOOGLE_async_command_buffers
6706 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
6707 {
6708 return nullptr;
6709 }
6710 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
6711 {
6712 return nullptr;
6713 }
6714 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
6715 {
6716 return nullptr;
6717 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07006718 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
6719 {
6720 return nullptr;
6721 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006722#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00006723#ifdef VK_GOOGLE_create_resources_with_requirements
6724 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
6725 {
6726 return nullptr;
6727 }
6728 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
6729 {
6730 return nullptr;
6731 }
6732#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08006733#ifdef VK_GOOGLE_address_space_info
6734 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
6735 {
6736 return nullptr;
6737 }
6738#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07006739#ifdef VK_GOOGLE_free_memory_sync
6740 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
6741 {
6742 return nullptr;
6743 }
6744#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006745 return nullptr;
6746}
6747void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
6748 auto resources = ResourceTracker::get();
6749 bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
6750#ifdef VK_VERSION_1_0
6751 if (!strcmp(name, "vkCreateInstance"))
6752 {
6753 return (void*)entry_vkCreateInstance;
6754 }
6755 if (!strcmp(name, "vkDestroyInstance"))
6756 {
6757 return (void*)entry_vkDestroyInstance;
6758 }
6759 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
6760 {
6761 return (void*)entry_vkEnumeratePhysicalDevices;
6762 }
6763 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
6764 {
6765 return (void*)entry_vkGetPhysicalDeviceFeatures;
6766 }
6767 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
6768 {
6769 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
6770 }
6771 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
6772 {
6773 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
6774 }
6775 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
6776 {
6777 return (void*)entry_vkGetPhysicalDeviceProperties;
6778 }
6779 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
6780 {
6781 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
6782 }
6783 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
6784 {
6785 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
6786 }
6787 if (!strcmp(name, "vkGetInstanceProcAddr"))
6788 {
6789 return (void*)entry_vkGetInstanceProcAddr;
6790 }
6791 if (!strcmp(name, "vkGetDeviceProcAddr"))
6792 {
6793 return (void*)entry_vkGetDeviceProcAddr;
6794 }
6795 if (!strcmp(name, "vkCreateDevice"))
6796 {
6797 return (void*)entry_vkCreateDevice;
6798 }
6799 if (!strcmp(name, "vkDestroyDevice"))
6800 {
6801 return (void*)entry_vkDestroyDevice;
6802 }
6803 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
6804 {
6805 return (void*)entry_vkEnumerateInstanceExtensionProperties;
6806 }
6807 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
6808 {
6809 return (void*)entry_vkEnumerateDeviceExtensionProperties;
6810 }
6811 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
6812 {
6813 return (void*)entry_vkEnumerateInstanceLayerProperties;
6814 }
6815 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
6816 {
6817 return (void*)entry_vkEnumerateDeviceLayerProperties;
6818 }
6819 if (!strcmp(name, "vkGetDeviceQueue"))
6820 {
6821 return (void*)entry_vkGetDeviceQueue;
6822 }
6823 if (!strcmp(name, "vkQueueSubmit"))
6824 {
6825 return (void*)entry_vkQueueSubmit;
6826 }
6827 if (!strcmp(name, "vkQueueWaitIdle"))
6828 {
6829 return (void*)entry_vkQueueWaitIdle;
6830 }
6831 if (!strcmp(name, "vkDeviceWaitIdle"))
6832 {
6833 return (void*)entry_vkDeviceWaitIdle;
6834 }
6835 if (!strcmp(name, "vkAllocateMemory"))
6836 {
6837 return (void*)entry_vkAllocateMemory;
6838 }
6839 if (!strcmp(name, "vkFreeMemory"))
6840 {
6841 return (void*)entry_vkFreeMemory;
6842 }
6843 if (!strcmp(name, "vkMapMemory"))
6844 {
6845 return (void*)entry_vkMapMemory;
6846 }
6847 if (!strcmp(name, "vkUnmapMemory"))
6848 {
6849 return (void*)entry_vkUnmapMemory;
6850 }
6851 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
6852 {
6853 return (void*)entry_vkFlushMappedMemoryRanges;
6854 }
6855 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
6856 {
6857 return (void*)entry_vkInvalidateMappedMemoryRanges;
6858 }
6859 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
6860 {
6861 return (void*)entry_vkGetDeviceMemoryCommitment;
6862 }
6863 if (!strcmp(name, "vkBindBufferMemory"))
6864 {
6865 return (void*)entry_vkBindBufferMemory;
6866 }
6867 if (!strcmp(name, "vkBindImageMemory"))
6868 {
6869 return (void*)entry_vkBindImageMemory;
6870 }
6871 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
6872 {
6873 return (void*)entry_vkGetBufferMemoryRequirements;
6874 }
6875 if (!strcmp(name, "vkGetImageMemoryRequirements"))
6876 {
6877 return (void*)entry_vkGetImageMemoryRequirements;
6878 }
6879 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
6880 {
6881 return (void*)entry_vkGetImageSparseMemoryRequirements;
6882 }
6883 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
6884 {
6885 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
6886 }
6887 if (!strcmp(name, "vkQueueBindSparse"))
6888 {
6889 return (void*)entry_vkQueueBindSparse;
6890 }
6891 if (!strcmp(name, "vkCreateFence"))
6892 {
6893 return (void*)entry_vkCreateFence;
6894 }
6895 if (!strcmp(name, "vkDestroyFence"))
6896 {
6897 return (void*)entry_vkDestroyFence;
6898 }
6899 if (!strcmp(name, "vkResetFences"))
6900 {
6901 return (void*)entry_vkResetFences;
6902 }
6903 if (!strcmp(name, "vkGetFenceStatus"))
6904 {
6905 return (void*)entry_vkGetFenceStatus;
6906 }
6907 if (!strcmp(name, "vkWaitForFences"))
6908 {
6909 return (void*)entry_vkWaitForFences;
6910 }
6911 if (!strcmp(name, "vkCreateSemaphore"))
6912 {
6913 return (void*)entry_vkCreateSemaphore;
6914 }
6915 if (!strcmp(name, "vkDestroySemaphore"))
6916 {
6917 return (void*)entry_vkDestroySemaphore;
6918 }
6919 if (!strcmp(name, "vkCreateEvent"))
6920 {
6921 return (void*)entry_vkCreateEvent;
6922 }
6923 if (!strcmp(name, "vkDestroyEvent"))
6924 {
6925 return (void*)entry_vkDestroyEvent;
6926 }
6927 if (!strcmp(name, "vkGetEventStatus"))
6928 {
6929 return (void*)entry_vkGetEventStatus;
6930 }
6931 if (!strcmp(name, "vkSetEvent"))
6932 {
6933 return (void*)entry_vkSetEvent;
6934 }
6935 if (!strcmp(name, "vkResetEvent"))
6936 {
6937 return (void*)entry_vkResetEvent;
6938 }
6939 if (!strcmp(name, "vkCreateQueryPool"))
6940 {
6941 return (void*)entry_vkCreateQueryPool;
6942 }
6943 if (!strcmp(name, "vkDestroyQueryPool"))
6944 {
6945 return (void*)entry_vkDestroyQueryPool;
6946 }
6947 if (!strcmp(name, "vkGetQueryPoolResults"))
6948 {
6949 return (void*)entry_vkGetQueryPoolResults;
6950 }
6951 if (!strcmp(name, "vkCreateBuffer"))
6952 {
6953 return (void*)entry_vkCreateBuffer;
6954 }
6955 if (!strcmp(name, "vkDestroyBuffer"))
6956 {
6957 return (void*)entry_vkDestroyBuffer;
6958 }
6959 if (!strcmp(name, "vkCreateBufferView"))
6960 {
6961 return (void*)entry_vkCreateBufferView;
6962 }
6963 if (!strcmp(name, "vkDestroyBufferView"))
6964 {
6965 return (void*)entry_vkDestroyBufferView;
6966 }
6967 if (!strcmp(name, "vkCreateImage"))
6968 {
6969 return (void*)entry_vkCreateImage;
6970 }
6971 if (!strcmp(name, "vkDestroyImage"))
6972 {
6973 return (void*)entry_vkDestroyImage;
6974 }
6975 if (!strcmp(name, "vkGetImageSubresourceLayout"))
6976 {
6977 return (void*)entry_vkGetImageSubresourceLayout;
6978 }
6979 if (!strcmp(name, "vkCreateImageView"))
6980 {
6981 return (void*)entry_vkCreateImageView;
6982 }
6983 if (!strcmp(name, "vkDestroyImageView"))
6984 {
6985 return (void*)entry_vkDestroyImageView;
6986 }
6987 if (!strcmp(name, "vkCreateShaderModule"))
6988 {
6989 return (void*)entry_vkCreateShaderModule;
6990 }
6991 if (!strcmp(name, "vkDestroyShaderModule"))
6992 {
6993 return (void*)entry_vkDestroyShaderModule;
6994 }
6995 if (!strcmp(name, "vkCreatePipelineCache"))
6996 {
6997 return (void*)entry_vkCreatePipelineCache;
6998 }
6999 if (!strcmp(name, "vkDestroyPipelineCache"))
7000 {
7001 return (void*)entry_vkDestroyPipelineCache;
7002 }
7003 if (!strcmp(name, "vkGetPipelineCacheData"))
7004 {
7005 return (void*)entry_vkGetPipelineCacheData;
7006 }
7007 if (!strcmp(name, "vkMergePipelineCaches"))
7008 {
7009 return (void*)entry_vkMergePipelineCaches;
7010 }
7011 if (!strcmp(name, "vkCreateGraphicsPipelines"))
7012 {
7013 return (void*)entry_vkCreateGraphicsPipelines;
7014 }
7015 if (!strcmp(name, "vkCreateComputePipelines"))
7016 {
7017 return (void*)entry_vkCreateComputePipelines;
7018 }
7019 if (!strcmp(name, "vkDestroyPipeline"))
7020 {
7021 return (void*)entry_vkDestroyPipeline;
7022 }
7023 if (!strcmp(name, "vkCreatePipelineLayout"))
7024 {
7025 return (void*)entry_vkCreatePipelineLayout;
7026 }
7027 if (!strcmp(name, "vkDestroyPipelineLayout"))
7028 {
7029 return (void*)entry_vkDestroyPipelineLayout;
7030 }
7031 if (!strcmp(name, "vkCreateSampler"))
7032 {
7033 return (void*)entry_vkCreateSampler;
7034 }
7035 if (!strcmp(name, "vkDestroySampler"))
7036 {
7037 return (void*)entry_vkDestroySampler;
7038 }
7039 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
7040 {
7041 return (void*)entry_vkCreateDescriptorSetLayout;
7042 }
7043 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
7044 {
7045 return (void*)entry_vkDestroyDescriptorSetLayout;
7046 }
7047 if (!strcmp(name, "vkCreateDescriptorPool"))
7048 {
7049 return (void*)entry_vkCreateDescriptorPool;
7050 }
7051 if (!strcmp(name, "vkDestroyDescriptorPool"))
7052 {
7053 return (void*)entry_vkDestroyDescriptorPool;
7054 }
7055 if (!strcmp(name, "vkResetDescriptorPool"))
7056 {
7057 return (void*)entry_vkResetDescriptorPool;
7058 }
7059 if (!strcmp(name, "vkAllocateDescriptorSets"))
7060 {
7061 return (void*)entry_vkAllocateDescriptorSets;
7062 }
7063 if (!strcmp(name, "vkFreeDescriptorSets"))
7064 {
7065 return (void*)entry_vkFreeDescriptorSets;
7066 }
7067 if (!strcmp(name, "vkUpdateDescriptorSets"))
7068 {
7069 return (void*)entry_vkUpdateDescriptorSets;
7070 }
7071 if (!strcmp(name, "vkCreateFramebuffer"))
7072 {
7073 return (void*)entry_vkCreateFramebuffer;
7074 }
7075 if (!strcmp(name, "vkDestroyFramebuffer"))
7076 {
7077 return (void*)entry_vkDestroyFramebuffer;
7078 }
7079 if (!strcmp(name, "vkCreateRenderPass"))
7080 {
7081 return (void*)entry_vkCreateRenderPass;
7082 }
7083 if (!strcmp(name, "vkDestroyRenderPass"))
7084 {
7085 return (void*)entry_vkDestroyRenderPass;
7086 }
7087 if (!strcmp(name, "vkGetRenderAreaGranularity"))
7088 {
7089 return (void*)entry_vkGetRenderAreaGranularity;
7090 }
7091 if (!strcmp(name, "vkCreateCommandPool"))
7092 {
7093 return (void*)entry_vkCreateCommandPool;
7094 }
7095 if (!strcmp(name, "vkDestroyCommandPool"))
7096 {
7097 return (void*)entry_vkDestroyCommandPool;
7098 }
7099 if (!strcmp(name, "vkResetCommandPool"))
7100 {
7101 return (void*)entry_vkResetCommandPool;
7102 }
7103 if (!strcmp(name, "vkAllocateCommandBuffers"))
7104 {
7105 return (void*)entry_vkAllocateCommandBuffers;
7106 }
7107 if (!strcmp(name, "vkFreeCommandBuffers"))
7108 {
7109 return (void*)entry_vkFreeCommandBuffers;
7110 }
7111 if (!strcmp(name, "vkBeginCommandBuffer"))
7112 {
7113 return (void*)entry_vkBeginCommandBuffer;
7114 }
7115 if (!strcmp(name, "vkEndCommandBuffer"))
7116 {
7117 return (void*)entry_vkEndCommandBuffer;
7118 }
7119 if (!strcmp(name, "vkResetCommandBuffer"))
7120 {
7121 return (void*)entry_vkResetCommandBuffer;
7122 }
7123 if (!strcmp(name, "vkCmdBindPipeline"))
7124 {
7125 return (void*)entry_vkCmdBindPipeline;
7126 }
7127 if (!strcmp(name, "vkCmdSetViewport"))
7128 {
7129 return (void*)entry_vkCmdSetViewport;
7130 }
7131 if (!strcmp(name, "vkCmdSetScissor"))
7132 {
7133 return (void*)entry_vkCmdSetScissor;
7134 }
7135 if (!strcmp(name, "vkCmdSetLineWidth"))
7136 {
7137 return (void*)entry_vkCmdSetLineWidth;
7138 }
7139 if (!strcmp(name, "vkCmdSetDepthBias"))
7140 {
7141 return (void*)entry_vkCmdSetDepthBias;
7142 }
7143 if (!strcmp(name, "vkCmdSetBlendConstants"))
7144 {
7145 return (void*)entry_vkCmdSetBlendConstants;
7146 }
7147 if (!strcmp(name, "vkCmdSetDepthBounds"))
7148 {
7149 return (void*)entry_vkCmdSetDepthBounds;
7150 }
7151 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
7152 {
7153 return (void*)entry_vkCmdSetStencilCompareMask;
7154 }
7155 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
7156 {
7157 return (void*)entry_vkCmdSetStencilWriteMask;
7158 }
7159 if (!strcmp(name, "vkCmdSetStencilReference"))
7160 {
7161 return (void*)entry_vkCmdSetStencilReference;
7162 }
7163 if (!strcmp(name, "vkCmdBindDescriptorSets"))
7164 {
7165 return (void*)entry_vkCmdBindDescriptorSets;
7166 }
7167 if (!strcmp(name, "vkCmdBindIndexBuffer"))
7168 {
7169 return (void*)entry_vkCmdBindIndexBuffer;
7170 }
7171 if (!strcmp(name, "vkCmdBindVertexBuffers"))
7172 {
7173 return (void*)entry_vkCmdBindVertexBuffers;
7174 }
7175 if (!strcmp(name, "vkCmdDraw"))
7176 {
7177 return (void*)entry_vkCmdDraw;
7178 }
7179 if (!strcmp(name, "vkCmdDrawIndexed"))
7180 {
7181 return (void*)entry_vkCmdDrawIndexed;
7182 }
7183 if (!strcmp(name, "vkCmdDrawIndirect"))
7184 {
7185 return (void*)entry_vkCmdDrawIndirect;
7186 }
7187 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
7188 {
7189 return (void*)entry_vkCmdDrawIndexedIndirect;
7190 }
7191 if (!strcmp(name, "vkCmdDispatch"))
7192 {
7193 return (void*)entry_vkCmdDispatch;
7194 }
7195 if (!strcmp(name, "vkCmdDispatchIndirect"))
7196 {
7197 return (void*)entry_vkCmdDispatchIndirect;
7198 }
7199 if (!strcmp(name, "vkCmdCopyBuffer"))
7200 {
7201 return (void*)entry_vkCmdCopyBuffer;
7202 }
7203 if (!strcmp(name, "vkCmdCopyImage"))
7204 {
7205 return (void*)entry_vkCmdCopyImage;
7206 }
7207 if (!strcmp(name, "vkCmdBlitImage"))
7208 {
7209 return (void*)entry_vkCmdBlitImage;
7210 }
7211 if (!strcmp(name, "vkCmdCopyBufferToImage"))
7212 {
7213 return (void*)entry_vkCmdCopyBufferToImage;
7214 }
7215 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
7216 {
7217 return (void*)entry_vkCmdCopyImageToBuffer;
7218 }
7219 if (!strcmp(name, "vkCmdUpdateBuffer"))
7220 {
7221 return (void*)entry_vkCmdUpdateBuffer;
7222 }
7223 if (!strcmp(name, "vkCmdFillBuffer"))
7224 {
7225 return (void*)entry_vkCmdFillBuffer;
7226 }
7227 if (!strcmp(name, "vkCmdClearColorImage"))
7228 {
7229 return (void*)entry_vkCmdClearColorImage;
7230 }
7231 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
7232 {
7233 return (void*)entry_vkCmdClearDepthStencilImage;
7234 }
7235 if (!strcmp(name, "vkCmdClearAttachments"))
7236 {
7237 return (void*)entry_vkCmdClearAttachments;
7238 }
7239 if (!strcmp(name, "vkCmdResolveImage"))
7240 {
7241 return (void*)entry_vkCmdResolveImage;
7242 }
7243 if (!strcmp(name, "vkCmdSetEvent"))
7244 {
7245 return (void*)entry_vkCmdSetEvent;
7246 }
7247 if (!strcmp(name, "vkCmdResetEvent"))
7248 {
7249 return (void*)entry_vkCmdResetEvent;
7250 }
7251 if (!strcmp(name, "vkCmdWaitEvents"))
7252 {
7253 return (void*)entry_vkCmdWaitEvents;
7254 }
7255 if (!strcmp(name, "vkCmdPipelineBarrier"))
7256 {
7257 return (void*)entry_vkCmdPipelineBarrier;
7258 }
7259 if (!strcmp(name, "vkCmdBeginQuery"))
7260 {
7261 return (void*)entry_vkCmdBeginQuery;
7262 }
7263 if (!strcmp(name, "vkCmdEndQuery"))
7264 {
7265 return (void*)entry_vkCmdEndQuery;
7266 }
7267 if (!strcmp(name, "vkCmdResetQueryPool"))
7268 {
7269 return (void*)entry_vkCmdResetQueryPool;
7270 }
7271 if (!strcmp(name, "vkCmdWriteTimestamp"))
7272 {
7273 return (void*)entry_vkCmdWriteTimestamp;
7274 }
7275 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
7276 {
7277 return (void*)entry_vkCmdCopyQueryPoolResults;
7278 }
7279 if (!strcmp(name, "vkCmdPushConstants"))
7280 {
7281 return (void*)entry_vkCmdPushConstants;
7282 }
7283 if (!strcmp(name, "vkCmdBeginRenderPass"))
7284 {
7285 return (void*)entry_vkCmdBeginRenderPass;
7286 }
7287 if (!strcmp(name, "vkCmdNextSubpass"))
7288 {
7289 return (void*)entry_vkCmdNextSubpass;
7290 }
7291 if (!strcmp(name, "vkCmdEndRenderPass"))
7292 {
7293 return (void*)entry_vkCmdEndRenderPass;
7294 }
7295 if (!strcmp(name, "vkCmdExecuteCommands"))
7296 {
7297 return (void*)entry_vkCmdExecuteCommands;
7298 }
7299#endif
7300#ifdef VK_VERSION_1_1
7301 if (!strcmp(name, "vkEnumerateInstanceVersion"))
7302 {
7303 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
7304 }
7305 if (!strcmp(name, "vkBindBufferMemory2"))
7306 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007307 return (void*)dynCheck_entry_vkBindBufferMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007308 }
7309 if (!strcmp(name, "vkBindImageMemory2"))
7310 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007311 return (void*)dynCheck_entry_vkBindImageMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007312 }
7313 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
7314 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007315 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007316 }
7317 if (!strcmp(name, "vkCmdSetDeviceMask"))
7318 {
7319 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
7320 }
7321 if (!strcmp(name, "vkCmdDispatchBase"))
7322 {
7323 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
7324 }
7325 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
7326 {
7327 return nullptr;
7328 }
7329 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
7330 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007331 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007332 }
7333 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
7334 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007335 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007336 }
7337 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
7338 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007339 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007340 }
7341 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
7342 {
7343 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
7344 }
7345 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
7346 {
7347 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
7348 }
7349 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
7350 {
7351 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
7352 }
7353 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
7354 {
7355 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
7356 }
7357 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
7358 {
7359 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
7360 }
7361 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
7362 {
7363 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
7364 }
7365 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
7366 {
7367 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
7368 }
7369 if (!strcmp(name, "vkTrimCommandPool"))
7370 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007371 return (void*)dynCheck_entry_vkTrimCommandPool;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007372 }
7373 if (!strcmp(name, "vkGetDeviceQueue2"))
7374 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007375 return (void*)dynCheck_entry_vkGetDeviceQueue2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007376 }
7377 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
7378 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007379 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007380 }
7381 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
7382 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007383 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007384 }
7385 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
7386 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007387 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007388 }
7389 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
7390 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007391 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007392 }
7393 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
7394 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007395 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007396 }
7397 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
7398 {
7399 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
7400 }
7401 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
7402 {
7403 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
7404 }
7405 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
7406 {
7407 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
7408 }
7409 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
7410 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007411 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007412 }
7413#endif
7414#ifdef VK_KHR_surface
7415 if (!strcmp(name, "vkDestroySurfaceKHR"))
7416 {
7417 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7418 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
7419 }
7420 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
7421 {
7422 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7423 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
7424 }
7425 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
7426 {
7427 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7428 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
7429 }
7430 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
7431 {
7432 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7433 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
7434 }
7435 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
7436 {
7437 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7438 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
7439 }
7440#endif
7441#ifdef VK_KHR_swapchain
7442 if (!strcmp(name, "vkCreateSwapchainKHR"))
7443 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007444 return (void*)dynCheck_entry_vkCreateSwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007445 }
7446 if (!strcmp(name, "vkDestroySwapchainKHR"))
7447 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007448 return (void*)dynCheck_entry_vkDestroySwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007449 }
7450 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
7451 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007452 return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007453 }
7454 if (!strcmp(name, "vkAcquireNextImageKHR"))
7455 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007456 return (void*)dynCheck_entry_vkAcquireNextImageKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007457 }
7458 if (!strcmp(name, "vkQueuePresentKHR"))
7459 {
7460 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7461 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
7462 }
7463 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
7464 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007465 return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007466 }
7467 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
7468 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007469 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007470 }
7471 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
7472 {
7473 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7474 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
7475 }
7476 if (!strcmp(name, "vkAcquireNextImage2KHR"))
7477 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007478 return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007479 }
7480#endif
7481#ifdef VK_KHR_display
7482 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
7483 {
7484 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7485 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
7486 }
7487 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
7488 {
7489 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7490 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
7491 }
7492 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
7493 {
7494 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7495 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
7496 }
7497 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
7498 {
7499 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7500 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
7501 }
7502 if (!strcmp(name, "vkCreateDisplayModeKHR"))
7503 {
7504 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7505 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
7506 }
7507 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
7508 {
7509 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7510 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
7511 }
7512 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
7513 {
7514 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7515 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
7516 }
7517#endif
7518#ifdef VK_KHR_display_swapchain
7519 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
7520 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007521 return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007522 }
7523#endif
7524#ifdef VK_KHR_xlib_surface
7525 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
7526 {
7527 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7528 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
7529 }
7530 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
7531 {
7532 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7533 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
7534 }
7535#endif
7536#ifdef VK_KHR_xcb_surface
7537 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
7538 {
7539 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7540 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
7541 }
7542 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
7543 {
7544 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7545 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
7546 }
7547#endif
7548#ifdef VK_KHR_wayland_surface
7549 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
7550 {
7551 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7552 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
7553 }
7554 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
7555 {
7556 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7557 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
7558 }
7559#endif
7560#ifdef VK_KHR_mir_surface
7561 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
7562 {
7563 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7564 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
7565 }
7566 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
7567 {
7568 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7569 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
7570 }
7571#endif
7572#ifdef VK_KHR_android_surface
7573 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
7574 {
7575 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
7576 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
7577 }
7578#endif
7579#ifdef VK_KHR_win32_surface
7580 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
7581 {
7582 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7583 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
7584 }
7585 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
7586 {
7587 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7588 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
7589 }
7590#endif
7591#ifdef VK_KHR_get_physical_device_properties2
7592 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
7593 {
7594 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7595 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
7596 }
7597 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
7598 {
7599 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7600 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
7601 }
7602 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
7603 {
7604 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7605 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
7606 }
7607 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
7608 {
7609 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7610 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
7611 }
7612 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
7613 {
7614 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7615 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
7616 }
7617 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
7618 {
7619 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7620 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
7621 }
7622 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
7623 {
7624 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7625 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
7626 }
7627#endif
7628#ifdef VK_KHR_device_group
7629 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
7630 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007631 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007632 }
7633 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
7634 {
7635 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7636 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
7637 }
7638 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
7639 {
7640 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7641 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
7642 }
7643#endif
7644#ifdef VK_KHR_maintenance1
7645 if (!strcmp(name, "vkTrimCommandPoolKHR"))
7646 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007647 return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007648 }
7649#endif
7650#ifdef VK_KHR_device_group_creation
7651 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
7652 {
7653 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
7654 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
7655 }
7656#endif
7657#ifdef VK_KHR_external_memory_capabilities
7658 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
7659 {
7660 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
7661 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
7662 }
7663#endif
7664#ifdef VK_KHR_external_memory_win32
7665 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
7666 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007667 return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007668 }
7669 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
7670 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007671 return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007672 }
7673#endif
7674#ifdef VK_KHR_external_memory_fd
7675 if (!strcmp(name, "vkGetMemoryFdKHR"))
7676 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007677 return (void*)dynCheck_entry_vkGetMemoryFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007678 }
7679 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
7680 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007681 return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007682 }
7683#endif
7684#ifdef VK_KHR_external_semaphore_capabilities
7685 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
7686 {
7687 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
7688 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
7689 }
7690#endif
7691#ifdef VK_KHR_external_semaphore_win32
7692 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
7693 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007694 return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007695 }
7696 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
7697 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007698 return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007699 }
7700#endif
7701#ifdef VK_KHR_external_semaphore_fd
7702 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
7703 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007704 return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007705 }
7706 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
7707 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007708 return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007709 }
7710#endif
7711#ifdef VK_KHR_push_descriptor
7712 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
7713 {
7714 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7715 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
7716 }
7717 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
7718 {
7719 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7720 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
7721 }
7722#endif
7723#ifdef VK_KHR_descriptor_update_template
7724 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
7725 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007726 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007727 }
7728 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
7729 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007730 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007731 }
7732 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
7733 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007734 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007735 }
7736#endif
7737#ifdef VK_KHR_create_renderpass2
7738 if (!strcmp(name, "vkCreateRenderPass2KHR"))
7739 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007740 return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007741 }
7742 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
7743 {
7744 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7745 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
7746 }
7747 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
7748 {
7749 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7750 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
7751 }
7752 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
7753 {
7754 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7755 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
7756 }
7757#endif
7758#ifdef VK_KHR_shared_presentable_image
7759 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
7760 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007761 return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007762 }
7763#endif
7764#ifdef VK_KHR_external_fence_capabilities
7765 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
7766 {
7767 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
7768 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
7769 }
7770#endif
7771#ifdef VK_KHR_external_fence_win32
7772 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
7773 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007774 return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007775 }
7776 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
7777 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007778 return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007779 }
7780#endif
7781#ifdef VK_KHR_external_fence_fd
7782 if (!strcmp(name, "vkImportFenceFdKHR"))
7783 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007784 return (void*)dynCheck_entry_vkImportFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007785 }
7786 if (!strcmp(name, "vkGetFenceFdKHR"))
7787 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007788 return (void*)dynCheck_entry_vkGetFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007789 }
7790#endif
7791#ifdef VK_KHR_get_surface_capabilities2
7792 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
7793 {
7794 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7795 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
7796 }
7797 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
7798 {
7799 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7800 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
7801 }
7802#endif
7803#ifdef VK_KHR_get_display_properties2
7804 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
7805 {
7806 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7807 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
7808 }
7809 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
7810 {
7811 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7812 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
7813 }
7814 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
7815 {
7816 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7817 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
7818 }
7819 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
7820 {
7821 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7822 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
7823 }
7824#endif
7825#ifdef VK_KHR_get_memory_requirements2
7826 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
7827 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007828 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007829 }
7830 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
7831 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007832 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007833 }
7834 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
7835 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007836 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007837 }
7838#endif
7839#ifdef VK_KHR_sampler_ycbcr_conversion
7840 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
7841 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007842 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007843 }
7844 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
7845 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007846 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007847 }
7848#endif
7849#ifdef VK_KHR_bind_memory2
7850 if (!strcmp(name, "vkBindBufferMemory2KHR"))
7851 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007852 return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007853 }
7854 if (!strcmp(name, "vkBindImageMemory2KHR"))
7855 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007856 return (void*)dynCheck_entry_vkBindImageMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007857 }
7858#endif
7859#ifdef VK_KHR_maintenance3
7860 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
7861 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007862 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007863 }
7864#endif
7865#ifdef VK_KHR_draw_indirect_count
7866 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
7867 {
7868 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
7869 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
7870 }
7871 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
7872 {
7873 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
7874 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
7875 }
7876#endif
7877#ifdef VK_ANDROID_native_buffer
7878 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
7879 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007880 return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007881 }
7882 if (!strcmp(name, "vkAcquireImageANDROID"))
7883 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007884 return (void*)dynCheck_entry_vkAcquireImageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007885 }
7886 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
7887 {
7888 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
7889 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
7890 }
7891#endif
7892#ifdef VK_EXT_debug_report
7893 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
7894 {
7895 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7896 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
7897 }
7898 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
7899 {
7900 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7901 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
7902 }
7903 if (!strcmp(name, "vkDebugReportMessageEXT"))
7904 {
7905 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7906 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
7907 }
7908#endif
7909#ifdef VK_EXT_debug_marker
7910 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
7911 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007912 return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007913 }
7914 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
7915 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007916 return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007917 }
7918 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
7919 {
7920 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
7921 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
7922 }
7923 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
7924 {
7925 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
7926 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
7927 }
7928 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
7929 {
7930 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
7931 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
7932 }
7933#endif
7934#ifdef VK_AMD_draw_indirect_count
7935 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
7936 {
7937 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
7938 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
7939 }
7940 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
7941 {
7942 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
7943 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
7944 }
7945#endif
7946#ifdef VK_AMD_shader_info
7947 if (!strcmp(name, "vkGetShaderInfoAMD"))
7948 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007949 return (void*)dynCheck_entry_vkGetShaderInfoAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007950 }
7951#endif
7952#ifdef VK_NV_external_memory_capabilities
7953 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
7954 {
7955 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
7956 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
7957 }
7958#endif
7959#ifdef VK_NV_external_memory_win32
7960 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
7961 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007962 return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007963 }
7964#endif
7965#ifdef VK_NN_vi_surface
7966 if (!strcmp(name, "vkCreateViSurfaceNN"))
7967 {
7968 bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
7969 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
7970 }
7971#endif
7972#ifdef VK_EXT_conditional_rendering
7973 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
7974 {
7975 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
7976 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
7977 }
7978 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
7979 {
7980 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
7981 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
7982 }
7983#endif
7984#ifdef VK_NVX_device_generated_commands
7985 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
7986 {
7987 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
7988 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
7989 }
7990 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
7991 {
7992 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
7993 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
7994 }
7995 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
7996 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007997 return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007998 }
7999 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
8000 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008001 return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008002 }
8003 if (!strcmp(name, "vkCreateObjectTableNVX"))
8004 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008005 return (void*)dynCheck_entry_vkCreateObjectTableNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008006 }
8007 if (!strcmp(name, "vkDestroyObjectTableNVX"))
8008 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008009 return (void*)dynCheck_entry_vkDestroyObjectTableNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008010 }
8011 if (!strcmp(name, "vkRegisterObjectsNVX"))
8012 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008013 return (void*)dynCheck_entry_vkRegisterObjectsNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008014 }
8015 if (!strcmp(name, "vkUnregisterObjectsNVX"))
8016 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008017 return (void*)dynCheck_entry_vkUnregisterObjectsNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008018 }
8019 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
8020 {
8021 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
8022 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
8023 }
8024#endif
8025#ifdef VK_NV_clip_space_w_scaling
8026 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
8027 {
8028 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling");
8029 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
8030 }
8031#endif
8032#ifdef VK_EXT_direct_mode_display
8033 if (!strcmp(name, "vkReleaseDisplayEXT"))
8034 {
8035 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
8036 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
8037 }
8038#endif
8039#ifdef VK_EXT_acquire_xlib_display
8040 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
8041 {
8042 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
8043 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
8044 }
8045 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
8046 {
8047 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
8048 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
8049 }
8050#endif
8051#ifdef VK_EXT_display_surface_counter
8052 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
8053 {
8054 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
8055 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
8056 }
8057#endif
8058#ifdef VK_EXT_display_control
8059 if (!strcmp(name, "vkDisplayPowerControlEXT"))
8060 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008061 return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008062 }
8063 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
8064 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008065 return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008066 }
8067 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
8068 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008069 return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008070 }
8071 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
8072 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008073 return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008074 }
8075#endif
8076#ifdef VK_GOOGLE_display_timing
8077 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
8078 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008079 return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008080 }
8081 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
8082 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008083 return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008084 }
8085#endif
8086#ifdef VK_EXT_discard_rectangles
8087 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
8088 {
8089 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles");
8090 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
8091 }
8092#endif
8093#ifdef VK_EXT_hdr_metadata
8094 if (!strcmp(name, "vkSetHdrMetadataEXT"))
8095 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008096 return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008097 }
8098#endif
8099#ifdef VK_MVK_ios_surface
8100 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
8101 {
8102 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
8103 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
8104 }
8105#endif
8106#ifdef VK_MVK_macos_surface
8107 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
8108 {
8109 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
8110 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
8111 }
8112#endif
8113#ifdef VK_EXT_debug_utils
8114 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
8115 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008116 return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008117 }
8118 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
8119 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008120 return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008121 }
8122 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
8123 {
8124 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8125 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
8126 }
8127 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
8128 {
8129 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8130 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
8131 }
8132 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
8133 {
8134 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8135 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
8136 }
8137 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
8138 {
8139 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8140 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
8141 }
8142 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
8143 {
8144 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8145 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
8146 }
8147 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
8148 {
8149 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8150 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
8151 }
8152 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
8153 {
8154 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8155 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
8156 }
8157 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
8158 {
8159 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8160 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
8161 }
8162 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
8163 {
8164 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8165 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
8166 }
8167#endif
8168#ifdef VK_ANDROID_external_memory_android_hardware_buffer
8169 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
8170 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008171 return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008172 }
8173 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
8174 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008175 return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008176 }
8177#endif
8178#ifdef VK_EXT_sample_locations
8179 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
8180 {
8181 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8182 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
8183 }
8184 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
8185 {
8186 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8187 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
8188 }
8189#endif
8190#ifdef VK_EXT_validation_cache
8191 if (!strcmp(name, "vkCreateValidationCacheEXT"))
8192 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008193 return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008194 }
8195 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
8196 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008197 return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008198 }
8199 if (!strcmp(name, "vkMergeValidationCachesEXT"))
8200 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008201 return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008202 }
8203 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
8204 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008205 return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008206 }
8207#endif
8208#ifdef VK_EXT_external_memory_host
8209 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
8210 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008211 return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008212 }
8213#endif
8214#ifdef VK_AMD_buffer_marker
8215 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
8216 {
8217 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker");
8218 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
8219 }
8220#endif
8221#ifdef VK_NV_device_diagnostic_checkpoints
8222 if (!strcmp(name, "vkCmdSetCheckpointNV"))
8223 {
8224 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8225 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
8226 }
8227 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
8228 {
8229 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8230 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
8231 }
8232#endif
8233#ifdef VK_GOOGLE_address_space
8234 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
8235 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008236 return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008237 }
8238#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008239#ifdef VK_GOOGLE_color_buffer
8240 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
8241 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008242 return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008243 }
8244 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
8245 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008246 return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008247 }
8248#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008249#ifdef VK_GOOGLE_sized_descriptor_update_template
8250 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
8251 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008252 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008253 }
8254#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008255#ifdef VK_GOOGLE_async_command_buffers
8256 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
8257 {
8258 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8259 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
8260 }
8261 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
8262 {
8263 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8264 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
8265 }
8266 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
8267 {
8268 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8269 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
8270 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07008271 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
8272 {
8273 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8274 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
8275 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008276#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00008277#ifdef VK_GOOGLE_create_resources_with_requirements
8278 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
8279 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008280 return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +00008281 }
8282 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
8283 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008284 return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +00008285 }
8286#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08008287#ifdef VK_GOOGLE_address_space_info
8288 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
8289 {
8290 return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE;
8291 }
8292#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07008293#ifdef VK_GOOGLE_free_memory_sync
8294 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
8295 {
8296 return (void*)dynCheck_entry_vkFreeMemorySyncGOOGLE;
8297 }
8298#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008299 return nullptr;
8300}
8301void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
8302 auto resources = ResourceTracker::get();
8303 bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
8304#ifdef VK_VERSION_1_0
8305 if (!strcmp(name, "vkCreateInstance"))
8306 {
8307 return (void*)entry_vkCreateInstance;
8308 }
8309 if (!strcmp(name, "vkDestroyInstance"))
8310 {
8311 return (void*)entry_vkDestroyInstance;
8312 }
8313 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
8314 {
8315 return (void*)entry_vkEnumeratePhysicalDevices;
8316 }
8317 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
8318 {
8319 return (void*)entry_vkGetPhysicalDeviceFeatures;
8320 }
8321 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
8322 {
8323 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
8324 }
8325 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
8326 {
8327 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
8328 }
8329 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
8330 {
8331 return (void*)entry_vkGetPhysicalDeviceProperties;
8332 }
8333 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
8334 {
8335 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
8336 }
8337 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
8338 {
8339 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
8340 }
8341 if (!strcmp(name, "vkGetInstanceProcAddr"))
8342 {
8343 return (void*)entry_vkGetInstanceProcAddr;
8344 }
8345 if (!strcmp(name, "vkGetDeviceProcAddr"))
8346 {
8347 return (void*)entry_vkGetDeviceProcAddr;
8348 }
8349 if (!strcmp(name, "vkCreateDevice"))
8350 {
8351 return (void*)entry_vkCreateDevice;
8352 }
8353 if (!strcmp(name, "vkDestroyDevice"))
8354 {
8355 return (void*)entry_vkDestroyDevice;
8356 }
8357 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
8358 {
8359 return (void*)entry_vkEnumerateInstanceExtensionProperties;
8360 }
8361 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
8362 {
8363 return (void*)entry_vkEnumerateDeviceExtensionProperties;
8364 }
8365 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
8366 {
8367 return (void*)entry_vkEnumerateInstanceLayerProperties;
8368 }
8369 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
8370 {
8371 return (void*)entry_vkEnumerateDeviceLayerProperties;
8372 }
8373 if (!strcmp(name, "vkGetDeviceQueue"))
8374 {
8375 return (void*)entry_vkGetDeviceQueue;
8376 }
8377 if (!strcmp(name, "vkQueueSubmit"))
8378 {
8379 return (void*)entry_vkQueueSubmit;
8380 }
8381 if (!strcmp(name, "vkQueueWaitIdle"))
8382 {
8383 return (void*)entry_vkQueueWaitIdle;
8384 }
8385 if (!strcmp(name, "vkDeviceWaitIdle"))
8386 {
8387 return (void*)entry_vkDeviceWaitIdle;
8388 }
8389 if (!strcmp(name, "vkAllocateMemory"))
8390 {
8391 return (void*)entry_vkAllocateMemory;
8392 }
8393 if (!strcmp(name, "vkFreeMemory"))
8394 {
8395 return (void*)entry_vkFreeMemory;
8396 }
8397 if (!strcmp(name, "vkMapMemory"))
8398 {
8399 return (void*)entry_vkMapMemory;
8400 }
8401 if (!strcmp(name, "vkUnmapMemory"))
8402 {
8403 return (void*)entry_vkUnmapMemory;
8404 }
8405 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
8406 {
8407 return (void*)entry_vkFlushMappedMemoryRanges;
8408 }
8409 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
8410 {
8411 return (void*)entry_vkInvalidateMappedMemoryRanges;
8412 }
8413 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
8414 {
8415 return (void*)entry_vkGetDeviceMemoryCommitment;
8416 }
8417 if (!strcmp(name, "vkBindBufferMemory"))
8418 {
8419 return (void*)entry_vkBindBufferMemory;
8420 }
8421 if (!strcmp(name, "vkBindImageMemory"))
8422 {
8423 return (void*)entry_vkBindImageMemory;
8424 }
8425 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
8426 {
8427 return (void*)entry_vkGetBufferMemoryRequirements;
8428 }
8429 if (!strcmp(name, "vkGetImageMemoryRequirements"))
8430 {
8431 return (void*)entry_vkGetImageMemoryRequirements;
8432 }
8433 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
8434 {
8435 return (void*)entry_vkGetImageSparseMemoryRequirements;
8436 }
8437 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
8438 {
8439 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
8440 }
8441 if (!strcmp(name, "vkQueueBindSparse"))
8442 {
8443 return (void*)entry_vkQueueBindSparse;
8444 }
8445 if (!strcmp(name, "vkCreateFence"))
8446 {
8447 return (void*)entry_vkCreateFence;
8448 }
8449 if (!strcmp(name, "vkDestroyFence"))
8450 {
8451 return (void*)entry_vkDestroyFence;
8452 }
8453 if (!strcmp(name, "vkResetFences"))
8454 {
8455 return (void*)entry_vkResetFences;
8456 }
8457 if (!strcmp(name, "vkGetFenceStatus"))
8458 {
8459 return (void*)entry_vkGetFenceStatus;
8460 }
8461 if (!strcmp(name, "vkWaitForFences"))
8462 {
8463 return (void*)entry_vkWaitForFences;
8464 }
8465 if (!strcmp(name, "vkCreateSemaphore"))
8466 {
8467 return (void*)entry_vkCreateSemaphore;
8468 }
8469 if (!strcmp(name, "vkDestroySemaphore"))
8470 {
8471 return (void*)entry_vkDestroySemaphore;
8472 }
8473 if (!strcmp(name, "vkCreateEvent"))
8474 {
8475 return (void*)entry_vkCreateEvent;
8476 }
8477 if (!strcmp(name, "vkDestroyEvent"))
8478 {
8479 return (void*)entry_vkDestroyEvent;
8480 }
8481 if (!strcmp(name, "vkGetEventStatus"))
8482 {
8483 return (void*)entry_vkGetEventStatus;
8484 }
8485 if (!strcmp(name, "vkSetEvent"))
8486 {
8487 return (void*)entry_vkSetEvent;
8488 }
8489 if (!strcmp(name, "vkResetEvent"))
8490 {
8491 return (void*)entry_vkResetEvent;
8492 }
8493 if (!strcmp(name, "vkCreateQueryPool"))
8494 {
8495 return (void*)entry_vkCreateQueryPool;
8496 }
8497 if (!strcmp(name, "vkDestroyQueryPool"))
8498 {
8499 return (void*)entry_vkDestroyQueryPool;
8500 }
8501 if (!strcmp(name, "vkGetQueryPoolResults"))
8502 {
8503 return (void*)entry_vkGetQueryPoolResults;
8504 }
8505 if (!strcmp(name, "vkCreateBuffer"))
8506 {
8507 return (void*)entry_vkCreateBuffer;
8508 }
8509 if (!strcmp(name, "vkDestroyBuffer"))
8510 {
8511 return (void*)entry_vkDestroyBuffer;
8512 }
8513 if (!strcmp(name, "vkCreateBufferView"))
8514 {
8515 return (void*)entry_vkCreateBufferView;
8516 }
8517 if (!strcmp(name, "vkDestroyBufferView"))
8518 {
8519 return (void*)entry_vkDestroyBufferView;
8520 }
8521 if (!strcmp(name, "vkCreateImage"))
8522 {
8523 return (void*)entry_vkCreateImage;
8524 }
8525 if (!strcmp(name, "vkDestroyImage"))
8526 {
8527 return (void*)entry_vkDestroyImage;
8528 }
8529 if (!strcmp(name, "vkGetImageSubresourceLayout"))
8530 {
8531 return (void*)entry_vkGetImageSubresourceLayout;
8532 }
8533 if (!strcmp(name, "vkCreateImageView"))
8534 {
8535 return (void*)entry_vkCreateImageView;
8536 }
8537 if (!strcmp(name, "vkDestroyImageView"))
8538 {
8539 return (void*)entry_vkDestroyImageView;
8540 }
8541 if (!strcmp(name, "vkCreateShaderModule"))
8542 {
8543 return (void*)entry_vkCreateShaderModule;
8544 }
8545 if (!strcmp(name, "vkDestroyShaderModule"))
8546 {
8547 return (void*)entry_vkDestroyShaderModule;
8548 }
8549 if (!strcmp(name, "vkCreatePipelineCache"))
8550 {
8551 return (void*)entry_vkCreatePipelineCache;
8552 }
8553 if (!strcmp(name, "vkDestroyPipelineCache"))
8554 {
8555 return (void*)entry_vkDestroyPipelineCache;
8556 }
8557 if (!strcmp(name, "vkGetPipelineCacheData"))
8558 {
8559 return (void*)entry_vkGetPipelineCacheData;
8560 }
8561 if (!strcmp(name, "vkMergePipelineCaches"))
8562 {
8563 return (void*)entry_vkMergePipelineCaches;
8564 }
8565 if (!strcmp(name, "vkCreateGraphicsPipelines"))
8566 {
8567 return (void*)entry_vkCreateGraphicsPipelines;
8568 }
8569 if (!strcmp(name, "vkCreateComputePipelines"))
8570 {
8571 return (void*)entry_vkCreateComputePipelines;
8572 }
8573 if (!strcmp(name, "vkDestroyPipeline"))
8574 {
8575 return (void*)entry_vkDestroyPipeline;
8576 }
8577 if (!strcmp(name, "vkCreatePipelineLayout"))
8578 {
8579 return (void*)entry_vkCreatePipelineLayout;
8580 }
8581 if (!strcmp(name, "vkDestroyPipelineLayout"))
8582 {
8583 return (void*)entry_vkDestroyPipelineLayout;
8584 }
8585 if (!strcmp(name, "vkCreateSampler"))
8586 {
8587 return (void*)entry_vkCreateSampler;
8588 }
8589 if (!strcmp(name, "vkDestroySampler"))
8590 {
8591 return (void*)entry_vkDestroySampler;
8592 }
8593 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
8594 {
8595 return (void*)entry_vkCreateDescriptorSetLayout;
8596 }
8597 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
8598 {
8599 return (void*)entry_vkDestroyDescriptorSetLayout;
8600 }
8601 if (!strcmp(name, "vkCreateDescriptorPool"))
8602 {
8603 return (void*)entry_vkCreateDescriptorPool;
8604 }
8605 if (!strcmp(name, "vkDestroyDescriptorPool"))
8606 {
8607 return (void*)entry_vkDestroyDescriptorPool;
8608 }
8609 if (!strcmp(name, "vkResetDescriptorPool"))
8610 {
8611 return (void*)entry_vkResetDescriptorPool;
8612 }
8613 if (!strcmp(name, "vkAllocateDescriptorSets"))
8614 {
8615 return (void*)entry_vkAllocateDescriptorSets;
8616 }
8617 if (!strcmp(name, "vkFreeDescriptorSets"))
8618 {
8619 return (void*)entry_vkFreeDescriptorSets;
8620 }
8621 if (!strcmp(name, "vkUpdateDescriptorSets"))
8622 {
8623 return (void*)entry_vkUpdateDescriptorSets;
8624 }
8625 if (!strcmp(name, "vkCreateFramebuffer"))
8626 {
8627 return (void*)entry_vkCreateFramebuffer;
8628 }
8629 if (!strcmp(name, "vkDestroyFramebuffer"))
8630 {
8631 return (void*)entry_vkDestroyFramebuffer;
8632 }
8633 if (!strcmp(name, "vkCreateRenderPass"))
8634 {
8635 return (void*)entry_vkCreateRenderPass;
8636 }
8637 if (!strcmp(name, "vkDestroyRenderPass"))
8638 {
8639 return (void*)entry_vkDestroyRenderPass;
8640 }
8641 if (!strcmp(name, "vkGetRenderAreaGranularity"))
8642 {
8643 return (void*)entry_vkGetRenderAreaGranularity;
8644 }
8645 if (!strcmp(name, "vkCreateCommandPool"))
8646 {
8647 return (void*)entry_vkCreateCommandPool;
8648 }
8649 if (!strcmp(name, "vkDestroyCommandPool"))
8650 {
8651 return (void*)entry_vkDestroyCommandPool;
8652 }
8653 if (!strcmp(name, "vkResetCommandPool"))
8654 {
8655 return (void*)entry_vkResetCommandPool;
8656 }
8657 if (!strcmp(name, "vkAllocateCommandBuffers"))
8658 {
8659 return (void*)entry_vkAllocateCommandBuffers;
8660 }
8661 if (!strcmp(name, "vkFreeCommandBuffers"))
8662 {
8663 return (void*)entry_vkFreeCommandBuffers;
8664 }
8665 if (!strcmp(name, "vkBeginCommandBuffer"))
8666 {
8667 return (void*)entry_vkBeginCommandBuffer;
8668 }
8669 if (!strcmp(name, "vkEndCommandBuffer"))
8670 {
8671 return (void*)entry_vkEndCommandBuffer;
8672 }
8673 if (!strcmp(name, "vkResetCommandBuffer"))
8674 {
8675 return (void*)entry_vkResetCommandBuffer;
8676 }
8677 if (!strcmp(name, "vkCmdBindPipeline"))
8678 {
8679 return (void*)entry_vkCmdBindPipeline;
8680 }
8681 if (!strcmp(name, "vkCmdSetViewport"))
8682 {
8683 return (void*)entry_vkCmdSetViewport;
8684 }
8685 if (!strcmp(name, "vkCmdSetScissor"))
8686 {
8687 return (void*)entry_vkCmdSetScissor;
8688 }
8689 if (!strcmp(name, "vkCmdSetLineWidth"))
8690 {
8691 return (void*)entry_vkCmdSetLineWidth;
8692 }
8693 if (!strcmp(name, "vkCmdSetDepthBias"))
8694 {
8695 return (void*)entry_vkCmdSetDepthBias;
8696 }
8697 if (!strcmp(name, "vkCmdSetBlendConstants"))
8698 {
8699 return (void*)entry_vkCmdSetBlendConstants;
8700 }
8701 if (!strcmp(name, "vkCmdSetDepthBounds"))
8702 {
8703 return (void*)entry_vkCmdSetDepthBounds;
8704 }
8705 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
8706 {
8707 return (void*)entry_vkCmdSetStencilCompareMask;
8708 }
8709 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
8710 {
8711 return (void*)entry_vkCmdSetStencilWriteMask;
8712 }
8713 if (!strcmp(name, "vkCmdSetStencilReference"))
8714 {
8715 return (void*)entry_vkCmdSetStencilReference;
8716 }
8717 if (!strcmp(name, "vkCmdBindDescriptorSets"))
8718 {
8719 return (void*)entry_vkCmdBindDescriptorSets;
8720 }
8721 if (!strcmp(name, "vkCmdBindIndexBuffer"))
8722 {
8723 return (void*)entry_vkCmdBindIndexBuffer;
8724 }
8725 if (!strcmp(name, "vkCmdBindVertexBuffers"))
8726 {
8727 return (void*)entry_vkCmdBindVertexBuffers;
8728 }
8729 if (!strcmp(name, "vkCmdDraw"))
8730 {
8731 return (void*)entry_vkCmdDraw;
8732 }
8733 if (!strcmp(name, "vkCmdDrawIndexed"))
8734 {
8735 return (void*)entry_vkCmdDrawIndexed;
8736 }
8737 if (!strcmp(name, "vkCmdDrawIndirect"))
8738 {
8739 return (void*)entry_vkCmdDrawIndirect;
8740 }
8741 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
8742 {
8743 return (void*)entry_vkCmdDrawIndexedIndirect;
8744 }
8745 if (!strcmp(name, "vkCmdDispatch"))
8746 {
8747 return (void*)entry_vkCmdDispatch;
8748 }
8749 if (!strcmp(name, "vkCmdDispatchIndirect"))
8750 {
8751 return (void*)entry_vkCmdDispatchIndirect;
8752 }
8753 if (!strcmp(name, "vkCmdCopyBuffer"))
8754 {
8755 return (void*)entry_vkCmdCopyBuffer;
8756 }
8757 if (!strcmp(name, "vkCmdCopyImage"))
8758 {
8759 return (void*)entry_vkCmdCopyImage;
8760 }
8761 if (!strcmp(name, "vkCmdBlitImage"))
8762 {
8763 return (void*)entry_vkCmdBlitImage;
8764 }
8765 if (!strcmp(name, "vkCmdCopyBufferToImage"))
8766 {
8767 return (void*)entry_vkCmdCopyBufferToImage;
8768 }
8769 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
8770 {
8771 return (void*)entry_vkCmdCopyImageToBuffer;
8772 }
8773 if (!strcmp(name, "vkCmdUpdateBuffer"))
8774 {
8775 return (void*)entry_vkCmdUpdateBuffer;
8776 }
8777 if (!strcmp(name, "vkCmdFillBuffer"))
8778 {
8779 return (void*)entry_vkCmdFillBuffer;
8780 }
8781 if (!strcmp(name, "vkCmdClearColorImage"))
8782 {
8783 return (void*)entry_vkCmdClearColorImage;
8784 }
8785 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
8786 {
8787 return (void*)entry_vkCmdClearDepthStencilImage;
8788 }
8789 if (!strcmp(name, "vkCmdClearAttachments"))
8790 {
8791 return (void*)entry_vkCmdClearAttachments;
8792 }
8793 if (!strcmp(name, "vkCmdResolveImage"))
8794 {
8795 return (void*)entry_vkCmdResolveImage;
8796 }
8797 if (!strcmp(name, "vkCmdSetEvent"))
8798 {
8799 return (void*)entry_vkCmdSetEvent;
8800 }
8801 if (!strcmp(name, "vkCmdResetEvent"))
8802 {
8803 return (void*)entry_vkCmdResetEvent;
8804 }
8805 if (!strcmp(name, "vkCmdWaitEvents"))
8806 {
8807 return (void*)entry_vkCmdWaitEvents;
8808 }
8809 if (!strcmp(name, "vkCmdPipelineBarrier"))
8810 {
8811 return (void*)entry_vkCmdPipelineBarrier;
8812 }
8813 if (!strcmp(name, "vkCmdBeginQuery"))
8814 {
8815 return (void*)entry_vkCmdBeginQuery;
8816 }
8817 if (!strcmp(name, "vkCmdEndQuery"))
8818 {
8819 return (void*)entry_vkCmdEndQuery;
8820 }
8821 if (!strcmp(name, "vkCmdResetQueryPool"))
8822 {
8823 return (void*)entry_vkCmdResetQueryPool;
8824 }
8825 if (!strcmp(name, "vkCmdWriteTimestamp"))
8826 {
8827 return (void*)entry_vkCmdWriteTimestamp;
8828 }
8829 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
8830 {
8831 return (void*)entry_vkCmdCopyQueryPoolResults;
8832 }
8833 if (!strcmp(name, "vkCmdPushConstants"))
8834 {
8835 return (void*)entry_vkCmdPushConstants;
8836 }
8837 if (!strcmp(name, "vkCmdBeginRenderPass"))
8838 {
8839 return (void*)entry_vkCmdBeginRenderPass;
8840 }
8841 if (!strcmp(name, "vkCmdNextSubpass"))
8842 {
8843 return (void*)entry_vkCmdNextSubpass;
8844 }
8845 if (!strcmp(name, "vkCmdEndRenderPass"))
8846 {
8847 return (void*)entry_vkCmdEndRenderPass;
8848 }
8849 if (!strcmp(name, "vkCmdExecuteCommands"))
8850 {
8851 return (void*)entry_vkCmdExecuteCommands;
8852 }
8853#endif
8854#ifdef VK_VERSION_1_1
8855 if (!strcmp(name, "vkEnumerateInstanceVersion"))
8856 {
8857 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
8858 }
8859 if (!strcmp(name, "vkBindBufferMemory2"))
8860 {
8861 return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
8862 }
8863 if (!strcmp(name, "vkBindImageMemory2"))
8864 {
8865 return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
8866 }
8867 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
8868 {
8869 return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
8870 }
8871 if (!strcmp(name, "vkCmdSetDeviceMask"))
8872 {
8873 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
8874 }
8875 if (!strcmp(name, "vkCmdDispatchBase"))
8876 {
8877 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
8878 }
8879 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
8880 {
8881 return nullptr;
8882 }
8883 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
8884 {
8885 return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
8886 }
8887 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
8888 {
8889 return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
8890 }
8891 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
8892 {
8893 return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
8894 }
8895 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
8896 {
8897 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
8898 }
8899 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
8900 {
8901 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
8902 }
8903 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
8904 {
8905 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
8906 }
8907 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
8908 {
8909 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
8910 }
8911 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
8912 {
8913 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
8914 }
8915 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
8916 {
8917 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
8918 }
8919 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
8920 {
8921 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
8922 }
8923 if (!strcmp(name, "vkTrimCommandPool"))
8924 {
8925 return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
8926 }
8927 if (!strcmp(name, "vkGetDeviceQueue2"))
8928 {
8929 return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
8930 }
8931 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
8932 {
8933 return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
8934 }
8935 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
8936 {
8937 return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
8938 }
8939 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
8940 {
8941 return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
8942 }
8943 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
8944 {
8945 return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
8946 }
8947 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
8948 {
8949 return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
8950 }
8951 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
8952 {
8953 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
8954 }
8955 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
8956 {
8957 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
8958 }
8959 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
8960 {
8961 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
8962 }
8963 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
8964 {
8965 return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
8966 }
8967#endif
8968#ifdef VK_KHR_surface
8969 if (!strcmp(name, "vkDestroySurfaceKHR"))
8970 {
8971 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8972 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
8973 }
8974 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
8975 {
8976 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8977 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
8978 }
8979 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
8980 {
8981 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8982 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
8983 }
8984 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
8985 {
8986 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8987 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
8988 }
8989 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
8990 {
8991 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8992 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
8993 }
8994#endif
8995#ifdef VK_KHR_swapchain
8996 if (!strcmp(name, "vkCreateSwapchainKHR"))
8997 {
8998 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8999 return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
9000 }
9001 if (!strcmp(name, "vkDestroySwapchainKHR"))
9002 {
9003 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9004 return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
9005 }
9006 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
9007 {
9008 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9009 return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
9010 }
9011 if (!strcmp(name, "vkAcquireNextImageKHR"))
9012 {
9013 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9014 return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
9015 }
9016 if (!strcmp(name, "vkQueuePresentKHR"))
9017 {
9018 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9019 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
9020 }
9021 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
9022 {
9023 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9024 return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
9025 }
9026 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
9027 {
9028 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9029 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
9030 }
9031 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
9032 {
9033 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9034 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
9035 }
9036 if (!strcmp(name, "vkAcquireNextImage2KHR"))
9037 {
9038 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9039 return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
9040 }
9041#endif
9042#ifdef VK_KHR_display
9043 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
9044 {
9045 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9046 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
9047 }
9048 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
9049 {
9050 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9051 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
9052 }
9053 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
9054 {
9055 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9056 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
9057 }
9058 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
9059 {
9060 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9061 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
9062 }
9063 if (!strcmp(name, "vkCreateDisplayModeKHR"))
9064 {
9065 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9066 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
9067 }
9068 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
9069 {
9070 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9071 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
9072 }
9073 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
9074 {
9075 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9076 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
9077 }
9078#endif
9079#ifdef VK_KHR_display_swapchain
9080 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
9081 {
9082 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
9083 return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
9084 }
9085#endif
9086#ifdef VK_KHR_xlib_surface
9087 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
9088 {
9089 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
9090 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
9091 }
9092 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
9093 {
9094 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
9095 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
9096 }
9097#endif
9098#ifdef VK_KHR_xcb_surface
9099 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
9100 {
9101 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9102 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
9103 }
9104 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
9105 {
9106 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9107 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
9108 }
9109#endif
9110#ifdef VK_KHR_wayland_surface
9111 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
9112 {
9113 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9114 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
9115 }
9116 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
9117 {
9118 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9119 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
9120 }
9121#endif
9122#ifdef VK_KHR_mir_surface
9123 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
9124 {
9125 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9126 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
9127 }
9128 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
9129 {
9130 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9131 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
9132 }
9133#endif
9134#ifdef VK_KHR_android_surface
9135 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
9136 {
9137 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
9138 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
9139 }
9140#endif
9141#ifdef VK_KHR_win32_surface
9142 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
9143 {
9144 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9145 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
9146 }
9147 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
9148 {
9149 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9150 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
9151 }
9152#endif
9153#ifdef VK_KHR_get_physical_device_properties2
9154 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
9155 {
9156 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9157 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
9158 }
9159 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
9160 {
9161 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9162 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
9163 }
9164 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
9165 {
9166 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9167 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
9168 }
9169 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
9170 {
9171 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9172 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
9173 }
9174 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
9175 {
9176 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9177 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
9178 }
9179 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
9180 {
9181 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9182 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
9183 }
9184 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
9185 {
9186 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9187 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
9188 }
9189#endif
9190#ifdef VK_KHR_device_group
9191 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
9192 {
9193 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9194 return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
9195 }
9196 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
9197 {
9198 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9199 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
9200 }
9201 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
9202 {
9203 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9204 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
9205 }
9206#endif
9207#ifdef VK_KHR_maintenance1
9208 if (!strcmp(name, "vkTrimCommandPoolKHR"))
9209 {
9210 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
9211 return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
9212 }
9213#endif
9214#ifdef VK_KHR_device_group_creation
9215 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
9216 {
9217 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
9218 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
9219 }
9220#endif
9221#ifdef VK_KHR_external_memory_capabilities
9222 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
9223 {
9224 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
9225 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
9226 }
9227#endif
9228#ifdef VK_KHR_external_memory_win32
9229 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
9230 {
9231 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9232 return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
9233 }
9234 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
9235 {
9236 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9237 return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
9238 }
9239#endif
9240#ifdef VK_KHR_external_memory_fd
9241 if (!strcmp(name, "vkGetMemoryFdKHR"))
9242 {
9243 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9244 return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
9245 }
9246 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
9247 {
9248 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9249 return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
9250 }
9251#endif
9252#ifdef VK_KHR_external_semaphore_capabilities
9253 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
9254 {
9255 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
9256 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
9257 }
9258#endif
9259#ifdef VK_KHR_external_semaphore_win32
9260 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
9261 {
9262 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9263 return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
9264 }
9265 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
9266 {
9267 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9268 return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
9269 }
9270#endif
9271#ifdef VK_KHR_external_semaphore_fd
9272 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
9273 {
9274 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9275 return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
9276 }
9277 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
9278 {
9279 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9280 return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
9281 }
9282#endif
9283#ifdef VK_KHR_push_descriptor
9284 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
9285 {
9286 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9287 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
9288 }
9289 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
9290 {
9291 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9292 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
9293 }
9294#endif
9295#ifdef VK_KHR_descriptor_update_template
9296 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
9297 {
9298 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9299 return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
9300 }
9301 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
9302 {
9303 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9304 return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
9305 }
9306 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
9307 {
9308 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9309 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
9310 }
9311#endif
9312#ifdef VK_KHR_create_renderpass2
9313 if (!strcmp(name, "vkCreateRenderPass2KHR"))
9314 {
9315 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9316 return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
9317 }
9318 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
9319 {
9320 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9321 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
9322 }
9323 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
9324 {
9325 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9326 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
9327 }
9328 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
9329 {
9330 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9331 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
9332 }
9333#endif
9334#ifdef VK_KHR_shared_presentable_image
9335 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
9336 {
9337 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
9338 return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
9339 }
9340#endif
9341#ifdef VK_KHR_external_fence_capabilities
9342 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
9343 {
9344 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
9345 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
9346 }
9347#endif
9348#ifdef VK_KHR_external_fence_win32
9349 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
9350 {
9351 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9352 return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
9353 }
9354 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
9355 {
9356 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9357 return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
9358 }
9359#endif
9360#ifdef VK_KHR_external_fence_fd
9361 if (!strcmp(name, "vkImportFenceFdKHR"))
9362 {
9363 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9364 return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
9365 }
9366 if (!strcmp(name, "vkGetFenceFdKHR"))
9367 {
9368 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9369 return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
9370 }
9371#endif
9372#ifdef VK_KHR_get_surface_capabilities2
9373 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
9374 {
9375 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9376 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
9377 }
9378 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
9379 {
9380 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9381 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
9382 }
9383#endif
9384#ifdef VK_KHR_get_display_properties2
9385 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
9386 {
9387 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9388 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
9389 }
9390 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
9391 {
9392 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9393 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
9394 }
9395 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
9396 {
9397 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9398 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
9399 }
9400 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
9401 {
9402 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9403 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
9404 }
9405#endif
9406#ifdef VK_KHR_get_memory_requirements2
9407 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
9408 {
9409 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9410 return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
9411 }
9412 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
9413 {
9414 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9415 return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
9416 }
9417 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
9418 {
9419 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9420 return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
9421 }
9422#endif
9423#ifdef VK_KHR_sampler_ycbcr_conversion
9424 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
9425 {
9426 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9427 return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
9428 }
9429 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
9430 {
9431 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9432 return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
9433 }
9434#endif
9435#ifdef VK_KHR_bind_memory2
9436 if (!strcmp(name, "vkBindBufferMemory2KHR"))
9437 {
9438 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9439 return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
9440 }
9441 if (!strcmp(name, "vkBindImageMemory2KHR"))
9442 {
9443 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9444 return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
9445 }
9446#endif
9447#ifdef VK_KHR_maintenance3
9448 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
9449 {
9450 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
9451 return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
9452 }
9453#endif
9454#ifdef VK_KHR_draw_indirect_count
9455 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
9456 {
9457 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9458 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
9459 }
9460 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
9461 {
9462 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9463 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
9464 }
9465#endif
9466#ifdef VK_ANDROID_native_buffer
9467 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
9468 {
9469 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9470 return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
9471 }
9472 if (!strcmp(name, "vkAcquireImageANDROID"))
9473 {
9474 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9475 return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
9476 }
9477 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
9478 {
9479 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9480 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
9481 }
9482#endif
9483#ifdef VK_EXT_debug_report
9484 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
9485 {
9486 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9487 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
9488 }
9489 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
9490 {
9491 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9492 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
9493 }
9494 if (!strcmp(name, "vkDebugReportMessageEXT"))
9495 {
9496 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9497 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
9498 }
9499#endif
9500#ifdef VK_EXT_debug_marker
9501 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
9502 {
9503 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9504 return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
9505 }
9506 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
9507 {
9508 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9509 return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
9510 }
9511 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
9512 {
9513 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9514 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
9515 }
9516 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
9517 {
9518 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9519 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
9520 }
9521 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
9522 {
9523 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9524 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
9525 }
9526#endif
9527#ifdef VK_AMD_draw_indirect_count
9528 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
9529 {
9530 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9531 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
9532 }
9533 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
9534 {
9535 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9536 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
9537 }
9538#endif
9539#ifdef VK_AMD_shader_info
9540 if (!strcmp(name, "vkGetShaderInfoAMD"))
9541 {
9542 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
9543 return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
9544 }
9545#endif
9546#ifdef VK_NV_external_memory_capabilities
9547 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
9548 {
9549 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
9550 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
9551 }
9552#endif
9553#ifdef VK_NV_external_memory_win32
9554 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
9555 {
9556 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
9557 return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
9558 }
9559#endif
9560#ifdef VK_NN_vi_surface
9561 if (!strcmp(name, "vkCreateViSurfaceNN"))
9562 {
9563 bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
9564 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
9565 }
9566#endif
9567#ifdef VK_EXT_conditional_rendering
9568 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
9569 {
9570 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9571 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
9572 }
9573 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
9574 {
9575 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9576 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
9577 }
9578#endif
9579#ifdef VK_NVX_device_generated_commands
9580 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
9581 {
9582 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9583 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
9584 }
9585 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
9586 {
9587 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9588 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
9589 }
9590 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
9591 {
9592 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9593 return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNVX : nullptr;
9594 }
9595 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
9596 {
9597 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9598 return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNVX : nullptr;
9599 }
9600 if (!strcmp(name, "vkCreateObjectTableNVX"))
9601 {
9602 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9603 return hasExt ? (void*)entry_vkCreateObjectTableNVX : nullptr;
9604 }
9605 if (!strcmp(name, "vkDestroyObjectTableNVX"))
9606 {
9607 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9608 return hasExt ? (void*)entry_vkDestroyObjectTableNVX : nullptr;
9609 }
9610 if (!strcmp(name, "vkRegisterObjectsNVX"))
9611 {
9612 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9613 return hasExt ? (void*)entry_vkRegisterObjectsNVX : nullptr;
9614 }
9615 if (!strcmp(name, "vkUnregisterObjectsNVX"))
9616 {
9617 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9618 return hasExt ? (void*)entry_vkUnregisterObjectsNVX : nullptr;
9619 }
9620 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
9621 {
9622 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9623 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
9624 }
9625#endif
9626#ifdef VK_NV_clip_space_w_scaling
9627 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
9628 {
9629 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
9630 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
9631 }
9632#endif
9633#ifdef VK_EXT_direct_mode_display
9634 if (!strcmp(name, "vkReleaseDisplayEXT"))
9635 {
9636 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
9637 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
9638 }
9639#endif
9640#ifdef VK_EXT_acquire_xlib_display
9641 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
9642 {
9643 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9644 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
9645 }
9646 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
9647 {
9648 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9649 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
9650 }
9651#endif
9652#ifdef VK_EXT_display_surface_counter
9653 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
9654 {
9655 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
9656 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
9657 }
9658#endif
9659#ifdef VK_EXT_display_control
9660 if (!strcmp(name, "vkDisplayPowerControlEXT"))
9661 {
9662 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9663 return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
9664 }
9665 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
9666 {
9667 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9668 return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
9669 }
9670 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
9671 {
9672 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9673 return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
9674 }
9675 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
9676 {
9677 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9678 return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
9679 }
9680#endif
9681#ifdef VK_GOOGLE_display_timing
9682 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
9683 {
9684 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9685 return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
9686 }
9687 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
9688 {
9689 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9690 return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
9691 }
9692#endif
9693#ifdef VK_EXT_discard_rectangles
9694 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
9695 {
9696 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
9697 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
9698 }
9699#endif
9700#ifdef VK_EXT_hdr_metadata
9701 if (!strcmp(name, "vkSetHdrMetadataEXT"))
9702 {
9703 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
9704 return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
9705 }
9706#endif
9707#ifdef VK_MVK_ios_surface
9708 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
9709 {
9710 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
9711 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
9712 }
9713#endif
9714#ifdef VK_MVK_macos_surface
9715 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
9716 {
9717 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
9718 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
9719 }
9720#endif
9721#ifdef VK_EXT_debug_utils
9722 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
9723 {
9724 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9725 return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
9726 }
9727 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
9728 {
9729 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9730 return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
9731 }
9732 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
9733 {
9734 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9735 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
9736 }
9737 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
9738 {
9739 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9740 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
9741 }
9742 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
9743 {
9744 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9745 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
9746 }
9747 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
9748 {
9749 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9750 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
9751 }
9752 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
9753 {
9754 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9755 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
9756 }
9757 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
9758 {
9759 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9760 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
9761 }
9762 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
9763 {
9764 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9765 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
9766 }
9767 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
9768 {
9769 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9770 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
9771 }
9772 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
9773 {
9774 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9775 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
9776 }
9777#endif
9778#ifdef VK_ANDROID_external_memory_android_hardware_buffer
9779 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
9780 {
9781 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
9782 return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
9783 }
9784 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
9785 {
9786 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
9787 return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
9788 }
9789#endif
9790#ifdef VK_EXT_sample_locations
9791 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
9792 {
9793 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
9794 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
9795 }
9796 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
9797 {
9798 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
9799 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
9800 }
9801#endif
9802#ifdef VK_EXT_validation_cache
9803 if (!strcmp(name, "vkCreateValidationCacheEXT"))
9804 {
9805 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9806 return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
9807 }
9808 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
9809 {
9810 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9811 return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
9812 }
9813 if (!strcmp(name, "vkMergeValidationCachesEXT"))
9814 {
9815 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9816 return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
9817 }
9818 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
9819 {
9820 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9821 return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
9822 }
9823#endif
9824#ifdef VK_EXT_external_memory_host
9825 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
9826 {
9827 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
9828 return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
9829 }
9830#endif
9831#ifdef VK_AMD_buffer_marker
9832 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
9833 {
9834 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
9835 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
9836 }
9837#endif
9838#ifdef VK_NV_device_diagnostic_checkpoints
9839 if (!strcmp(name, "vkCmdSetCheckpointNV"))
9840 {
9841 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
9842 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
9843 }
9844 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
9845 {
9846 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
9847 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
9848 }
9849#endif
9850#ifdef VK_GOOGLE_address_space
9851 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
9852 {
9853 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space");
9854 return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08009855 }
9856#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08009857#ifdef VK_GOOGLE_color_buffer
9858 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
9859 {
9860 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
9861 return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
9862 }
9863 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
9864 {
9865 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
9866 return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
9867 }
9868#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07009869#ifdef VK_GOOGLE_sized_descriptor_update_template
9870 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
9871 {
9872 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template");
9873 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
9874 }
9875#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009876#ifdef VK_GOOGLE_async_command_buffers
9877 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
9878 {
9879 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9880 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
9881 }
9882 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
9883 {
9884 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9885 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
9886 }
9887 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
9888 {
9889 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9890 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
9891 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07009892 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
9893 {
9894 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9895 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
9896 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009897#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00009898#ifdef VK_GOOGLE_create_resources_with_requirements
9899 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
9900 {
9901 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
9902 return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
9903 }
9904 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
9905 {
9906 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
9907 return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
9908 }
9909#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08009910#ifdef VK_GOOGLE_address_space_info
9911 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
9912 {
9913 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space_info");
9914 return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
9915 }
9916#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07009917#ifdef VK_GOOGLE_free_memory_sync
9918 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
9919 {
9920 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_free_memory_sync");
9921 return hasExt ? (void*)entry_vkFreeMemorySyncGOOGLE : nullptr;
9922 }
9923#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009924 return nullptr;
9925}
9926
9927} // namespace goldfish_vk