blob: 50e8a62b10786ee4e327a1f3fca791ffd367d57b [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 Yang4c056b22020-07-02 11:43:57 -07003682#ifdef VK_KHR_shader_float16_int8
3683#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08003684#ifdef VK_ANDROID_native_buffer
3685static VkResult entry_vkGetSwapchainGrallocUsageANDROID(
3686 VkDevice device,
3687 VkFormat format,
3688 VkImageUsageFlags imageUsage,
3689 int* grallocUsage)
3690{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003691 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -08003692 auto vkEnc = HostConnection::get()->vkEncoder();
3693 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
3694 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage);
3695 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
3696}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003697static VkResult dynCheck_entry_vkGetSwapchainGrallocUsageANDROID(
3698 VkDevice device,
3699 VkFormat format,
3700 VkImageUsageFlags imageUsage,
3701 int* grallocUsage)
3702{
3703 auto resources = ResourceTracker::get();
3704 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
3705 {
3706 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainGrallocUsageANDROID", "VK_ANDROID_native_buffer");
3707 }
3708 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
3709 auto vkEnc = HostConnection::get()->vkEncoder();
3710 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
3711 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage);
3712 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
3713}
Lingfeng Yang808a6312018-11-13 21:06:15 -08003714static VkResult entry_vkAcquireImageANDROID(
3715 VkDevice device,
3716 VkImage image,
3717 int nativeFenceFd,
3718 VkSemaphore semaphore,
3719 VkFence fence)
3720{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003721 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -08003722 auto vkEnc = HostConnection::get()->vkEncoder();
3723 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
3724 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence);
3725 return vkAcquireImageANDROID_VkResult_return;
3726}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003727static VkResult dynCheck_entry_vkAcquireImageANDROID(
3728 VkDevice device,
3729 VkImage image,
3730 int nativeFenceFd,
3731 VkSemaphore semaphore,
3732 VkFence fence)
3733{
3734 auto resources = ResourceTracker::get();
3735 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
3736 {
3737 sOnInvalidDynamicallyCheckedCall("vkAcquireImageANDROID", "VK_ANDROID_native_buffer");
3738 }
3739 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
3740 auto vkEnc = HostConnection::get()->vkEncoder();
3741 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
3742 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence);
3743 return vkAcquireImageANDROID_VkResult_return;
3744}
Lingfeng Yang808a6312018-11-13 21:06:15 -08003745static VkResult entry_vkQueueSignalReleaseImageANDROID(
3746 VkQueue queue,
3747 uint32_t waitSemaphoreCount,
3748 const VkSemaphore* pWaitSemaphores,
3749 VkImage image,
3750 int* pNativeFenceFd)
3751{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003752 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -08003753 auto vkEnc = HostConnection::get()->vkEncoder();
3754 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
3755 vkQueueSignalReleaseImageANDROID_VkResult_return = vkEnc->vkQueueSignalReleaseImageANDROID(queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd);
3756 return vkQueueSignalReleaseImageANDROID_VkResult_return;
3757}
3758#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003759#ifdef VK_EXT_debug_report
3760static VkResult entry_vkCreateDebugReportCallbackEXT(
3761 VkInstance instance,
3762 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
3763 const VkAllocationCallbacks* pAllocator,
3764 VkDebugReportCallbackEXT* pCallback)
3765{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003766 AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003767 auto vkEnc = HostConnection::get()->vkEncoder();
3768 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
3769 vkCreateDebugReportCallbackEXT_VkResult_return = vkEnc->vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback);
3770 return vkCreateDebugReportCallbackEXT_VkResult_return;
3771}
3772static void entry_vkDestroyDebugReportCallbackEXT(
3773 VkInstance instance,
3774 VkDebugReportCallbackEXT callback,
3775 const VkAllocationCallbacks* pAllocator)
3776{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003777 AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003778 auto vkEnc = HostConnection::get()->vkEncoder();
3779 vkEnc->vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator);
3780}
3781static void entry_vkDebugReportMessageEXT(
3782 VkInstance instance,
3783 VkDebugReportFlagsEXT flags,
3784 VkDebugReportObjectTypeEXT objectType,
3785 uint64_t object,
3786 size_t location,
3787 int32_t messageCode,
3788 const char* pLayerPrefix,
3789 const char* pMessage)
3790{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003791 AEMU_SCOPED_TRACE("vkDebugReportMessageEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003792 auto vkEnc = HostConnection::get()->vkEncoder();
3793 vkEnc->vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage);
3794}
3795#endif
3796#ifdef VK_NV_glsl_shader
3797#endif
3798#ifdef VK_EXT_depth_range_unrestricted
3799#endif
3800#ifdef VK_IMG_filter_cubic
3801#endif
3802#ifdef VK_AMD_rasterization_order
3803#endif
3804#ifdef VK_AMD_shader_trinary_minmax
3805#endif
3806#ifdef VK_AMD_shader_explicit_vertex_parameter
3807#endif
3808#ifdef VK_EXT_debug_marker
3809static VkResult entry_vkDebugMarkerSetObjectTagEXT(
3810 VkDevice device,
3811 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
3812{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003813 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003814 auto vkEnc = HostConnection::get()->vkEncoder();
3815 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
3816 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo);
3817 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
3818}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003819static VkResult dynCheck_entry_vkDebugMarkerSetObjectTagEXT(
3820 VkDevice device,
3821 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
3822{
3823 auto resources = ResourceTracker::get();
3824 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
3825 {
3826 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectTagEXT", "VK_EXT_debug_marker");
3827 }
3828 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
3829 auto vkEnc = HostConnection::get()->vkEncoder();
3830 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
3831 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo);
3832 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
3833}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003834static VkResult entry_vkDebugMarkerSetObjectNameEXT(
3835 VkDevice device,
3836 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
3837{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003838 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003839 auto vkEnc = HostConnection::get()->vkEncoder();
3840 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
3841 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo);
3842 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
3843}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003844static VkResult dynCheck_entry_vkDebugMarkerSetObjectNameEXT(
3845 VkDevice device,
3846 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
3847{
3848 auto resources = ResourceTracker::get();
3849 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
3850 {
3851 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectNameEXT", "VK_EXT_debug_marker");
3852 }
3853 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
3854 auto vkEnc = HostConnection::get()->vkEncoder();
3855 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
3856 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo);
3857 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
3858}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003859static void entry_vkCmdDebugMarkerBeginEXT(
3860 VkCommandBuffer commandBuffer,
3861 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
3862{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003863 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003864 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003865 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003866 vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo);
3867}
3868static void entry_vkCmdDebugMarkerEndEXT(
3869 VkCommandBuffer commandBuffer)
3870{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003871 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003872 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003873 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003874 vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer);
3875}
3876static void entry_vkCmdDebugMarkerInsertEXT(
3877 VkCommandBuffer commandBuffer,
3878 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
3879{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003880 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003881 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003882 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003883 vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo);
3884}
3885#endif
3886#ifdef VK_AMD_gcn_shader
3887#endif
3888#ifdef VK_NV_dedicated_allocation
3889#endif
3890#ifdef VK_AMD_draw_indirect_count
3891static void entry_vkCmdDrawIndirectCountAMD(
3892 VkCommandBuffer commandBuffer,
3893 VkBuffer buffer,
3894 VkDeviceSize offset,
3895 VkBuffer countBuffer,
3896 VkDeviceSize countBufferOffset,
3897 uint32_t maxDrawCount,
3898 uint32_t stride)
3899{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003900 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003901 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003902 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003903 vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3904}
3905static void entry_vkCmdDrawIndexedIndirectCountAMD(
3906 VkCommandBuffer commandBuffer,
3907 VkBuffer buffer,
3908 VkDeviceSize offset,
3909 VkBuffer countBuffer,
3910 VkDeviceSize countBufferOffset,
3911 uint32_t maxDrawCount,
3912 uint32_t stride)
3913{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003914 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003915 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003916 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003917 vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3918}
3919#endif
3920#ifdef VK_AMD_negative_viewport_height
3921#endif
3922#ifdef VK_AMD_gpu_shader_half_float
3923#endif
3924#ifdef VK_AMD_shader_ballot
3925#endif
3926#ifdef VK_AMD_texture_gather_bias_lod
3927#endif
3928#ifdef VK_AMD_shader_info
3929static VkResult entry_vkGetShaderInfoAMD(
3930 VkDevice device,
3931 VkPipeline pipeline,
3932 VkShaderStageFlagBits shaderStage,
3933 VkShaderInfoTypeAMD infoType,
3934 size_t* pInfoSize,
3935 void* pInfo)
3936{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003937 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003938 auto vkEnc = HostConnection::get()->vkEncoder();
3939 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
3940 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
3941 return vkGetShaderInfoAMD_VkResult_return;
3942}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003943static VkResult dynCheck_entry_vkGetShaderInfoAMD(
3944 VkDevice device,
3945 VkPipeline pipeline,
3946 VkShaderStageFlagBits shaderStage,
3947 VkShaderInfoTypeAMD infoType,
3948 size_t* pInfoSize,
3949 void* pInfo)
3950{
3951 auto resources = ResourceTracker::get();
3952 if (!resources->hasDeviceExtension(device, "VK_AMD_shader_info"))
3953 {
3954 sOnInvalidDynamicallyCheckedCall("vkGetShaderInfoAMD", "VK_AMD_shader_info");
3955 }
3956 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
3957 auto vkEnc = HostConnection::get()->vkEncoder();
3958 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
3959 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
3960 return vkGetShaderInfoAMD_VkResult_return;
3961}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003962#endif
3963#ifdef VK_AMD_shader_image_load_store_lod
3964#endif
3965#ifdef VK_IMG_format_pvrtc
3966#endif
3967#ifdef VK_NV_external_memory_capabilities
3968static VkResult entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
3969 VkPhysicalDevice physicalDevice,
3970 VkFormat format,
3971 VkImageType type,
3972 VkImageTiling tiling,
3973 VkImageUsageFlags usage,
3974 VkImageCreateFlags flags,
3975 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
3976 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
3977{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003978 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003979 auto vkEnc = HostConnection::get()->vkEncoder();
3980 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
3981 vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties);
3982 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
3983}
3984#endif
3985#ifdef VK_NV_external_memory
3986#endif
3987#ifdef VK_NV_external_memory_win32
3988static VkResult entry_vkGetMemoryWin32HandleNV(
3989 VkDevice device,
3990 VkDeviceMemory memory,
3991 VkExternalMemoryHandleTypeFlagsNV handleType,
3992 HANDLE* pHandle)
3993{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003994 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003995 auto vkEnc = HostConnection::get()->vkEncoder();
3996 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
3997 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle);
3998 return vkGetMemoryWin32HandleNV_VkResult_return;
3999}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004000static VkResult dynCheck_entry_vkGetMemoryWin32HandleNV(
4001 VkDevice device,
4002 VkDeviceMemory memory,
4003 VkExternalMemoryHandleTypeFlagsNV handleType,
4004 HANDLE* pHandle)
4005{
4006 auto resources = ResourceTracker::get();
4007 if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_win32"))
4008 {
4009 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleNV", "VK_NV_external_memory_win32");
4010 }
4011 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
4012 auto vkEnc = HostConnection::get()->vkEncoder();
4013 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
4014 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle);
4015 return vkGetMemoryWin32HandleNV_VkResult_return;
4016}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004017#endif
4018#ifdef VK_NV_win32_keyed_mutex
4019#endif
4020#ifdef VK_EXT_validation_flags
4021#endif
4022#ifdef VK_NN_vi_surface
4023static VkResult entry_vkCreateViSurfaceNN(
4024 VkInstance instance,
4025 const VkViSurfaceCreateInfoNN* pCreateInfo,
4026 const VkAllocationCallbacks* pAllocator,
4027 VkSurfaceKHR* pSurface)
4028{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004029 AEMU_SCOPED_TRACE("vkCreateViSurfaceNN");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004030 auto vkEnc = HostConnection::get()->vkEncoder();
4031 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
4032 vkCreateViSurfaceNN_VkResult_return = vkEnc->vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface);
4033 return vkCreateViSurfaceNN_VkResult_return;
4034}
4035#endif
4036#ifdef VK_EXT_shader_subgroup_ballot
4037#endif
4038#ifdef VK_EXT_shader_subgroup_vote
4039#endif
4040#ifdef VK_EXT_conditional_rendering
4041static void entry_vkCmdBeginConditionalRenderingEXT(
4042 VkCommandBuffer commandBuffer,
4043 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
4044{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004045 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004046 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004047 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004048 vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin);
4049}
4050static void entry_vkCmdEndConditionalRenderingEXT(
4051 VkCommandBuffer commandBuffer)
4052{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004053 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004054 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004055 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004056 vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer);
4057}
4058#endif
4059#ifdef VK_NVX_device_generated_commands
4060static void entry_vkCmdProcessCommandsNVX(
4061 VkCommandBuffer commandBuffer,
4062 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
4063{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004064 AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004065 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004066 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004067 vkEnc->vkCmdProcessCommandsNVX(commandBuffer, pProcessCommandsInfo);
4068}
4069static void entry_vkCmdReserveSpaceForCommandsNVX(
4070 VkCommandBuffer commandBuffer,
4071 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
4072{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004073 AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004074 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004075 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004076 vkEnc->vkCmdReserveSpaceForCommandsNVX(commandBuffer, pReserveSpaceInfo);
4077}
4078static VkResult entry_vkCreateIndirectCommandsLayoutNVX(
4079 VkDevice device,
4080 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
4081 const VkAllocationCallbacks* pAllocator,
4082 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
4083{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004084 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004085 auto vkEnc = HostConnection::get()->vkEncoder();
4086 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
4087 vkCreateIndirectCommandsLayoutNVX_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNVX(device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
4088 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
4089}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004090static VkResult dynCheck_entry_vkCreateIndirectCommandsLayoutNVX(
4091 VkDevice device,
4092 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
4093 const VkAllocationCallbacks* pAllocator,
4094 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
4095{
4096 auto resources = ResourceTracker::get();
4097 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4098 {
4099 sOnInvalidDynamicallyCheckedCall("vkCreateIndirectCommandsLayoutNVX", "VK_NVX_device_generated_commands");
4100 }
4101 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX");
4102 auto vkEnc = HostConnection::get()->vkEncoder();
4103 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
4104 vkCreateIndirectCommandsLayoutNVX_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNVX(device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
4105 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
4106}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004107static void entry_vkDestroyIndirectCommandsLayoutNVX(
4108 VkDevice device,
4109 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
4110 const VkAllocationCallbacks* pAllocator)
4111{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004112 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004113 auto vkEnc = HostConnection::get()->vkEncoder();
4114 vkEnc->vkDestroyIndirectCommandsLayoutNVX(device, indirectCommandsLayout, pAllocator);
4115}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004116static void dynCheck_entry_vkDestroyIndirectCommandsLayoutNVX(
4117 VkDevice device,
4118 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
4119 const VkAllocationCallbacks* pAllocator)
4120{
4121 auto resources = ResourceTracker::get();
4122 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4123 {
4124 sOnInvalidDynamicallyCheckedCall("vkDestroyIndirectCommandsLayoutNVX", "VK_NVX_device_generated_commands");
4125 }
4126 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX");
4127 auto vkEnc = HostConnection::get()->vkEncoder();
4128 vkEnc->vkDestroyIndirectCommandsLayoutNVX(device, indirectCommandsLayout, pAllocator);
4129}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004130static VkResult entry_vkCreateObjectTableNVX(
4131 VkDevice device,
4132 const VkObjectTableCreateInfoNVX* pCreateInfo,
4133 const VkAllocationCallbacks* pAllocator,
4134 VkObjectTableNVX* pObjectTable)
4135{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004136 AEMU_SCOPED_TRACE("vkCreateObjectTableNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004137 auto vkEnc = HostConnection::get()->vkEncoder();
4138 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
4139 vkCreateObjectTableNVX_VkResult_return = vkEnc->vkCreateObjectTableNVX(device, pCreateInfo, pAllocator, pObjectTable);
4140 return vkCreateObjectTableNVX_VkResult_return;
4141}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004142static VkResult dynCheck_entry_vkCreateObjectTableNVX(
4143 VkDevice device,
4144 const VkObjectTableCreateInfoNVX* pCreateInfo,
4145 const VkAllocationCallbacks* pAllocator,
4146 VkObjectTableNVX* pObjectTable)
4147{
4148 auto resources = ResourceTracker::get();
4149 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4150 {
4151 sOnInvalidDynamicallyCheckedCall("vkCreateObjectTableNVX", "VK_NVX_device_generated_commands");
4152 }
4153 AEMU_SCOPED_TRACE("vkCreateObjectTableNVX");
4154 auto vkEnc = HostConnection::get()->vkEncoder();
4155 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
4156 vkCreateObjectTableNVX_VkResult_return = vkEnc->vkCreateObjectTableNVX(device, pCreateInfo, pAllocator, pObjectTable);
4157 return vkCreateObjectTableNVX_VkResult_return;
4158}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004159static void entry_vkDestroyObjectTableNVX(
4160 VkDevice device,
4161 VkObjectTableNVX objectTable,
4162 const VkAllocationCallbacks* pAllocator)
4163{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004164 AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004165 auto vkEnc = HostConnection::get()->vkEncoder();
4166 vkEnc->vkDestroyObjectTableNVX(device, objectTable, pAllocator);
4167}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004168static void dynCheck_entry_vkDestroyObjectTableNVX(
4169 VkDevice device,
4170 VkObjectTableNVX objectTable,
4171 const VkAllocationCallbacks* pAllocator)
4172{
4173 auto resources = ResourceTracker::get();
4174 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4175 {
4176 sOnInvalidDynamicallyCheckedCall("vkDestroyObjectTableNVX", "VK_NVX_device_generated_commands");
4177 }
4178 AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX");
4179 auto vkEnc = HostConnection::get()->vkEncoder();
4180 vkEnc->vkDestroyObjectTableNVX(device, objectTable, pAllocator);
4181}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004182static VkResult entry_vkRegisterObjectsNVX(
4183 VkDevice device,
4184 VkObjectTableNVX objectTable,
4185 uint32_t objectCount,
4186 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
4187 const uint32_t* pObjectIndices)
4188{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004189 AEMU_SCOPED_TRACE("vkRegisterObjectsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004190 auto vkEnc = HostConnection::get()->vkEncoder();
4191 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
4192 vkRegisterObjectsNVX_VkResult_return = vkEnc->vkRegisterObjectsNVX(device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices);
4193 return vkRegisterObjectsNVX_VkResult_return;
4194}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004195static VkResult dynCheck_entry_vkRegisterObjectsNVX(
4196 VkDevice device,
4197 VkObjectTableNVX objectTable,
4198 uint32_t objectCount,
4199 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
4200 const uint32_t* pObjectIndices)
4201{
4202 auto resources = ResourceTracker::get();
4203 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4204 {
4205 sOnInvalidDynamicallyCheckedCall("vkRegisterObjectsNVX", "VK_NVX_device_generated_commands");
4206 }
4207 AEMU_SCOPED_TRACE("vkRegisterObjectsNVX");
4208 auto vkEnc = HostConnection::get()->vkEncoder();
4209 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
4210 vkRegisterObjectsNVX_VkResult_return = vkEnc->vkRegisterObjectsNVX(device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices);
4211 return vkRegisterObjectsNVX_VkResult_return;
4212}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004213static VkResult entry_vkUnregisterObjectsNVX(
4214 VkDevice device,
4215 VkObjectTableNVX objectTable,
4216 uint32_t objectCount,
4217 const VkObjectEntryTypeNVX* pObjectEntryTypes,
4218 const uint32_t* pObjectIndices)
4219{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004220 AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004221 auto vkEnc = HostConnection::get()->vkEncoder();
4222 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
4223 vkUnregisterObjectsNVX_VkResult_return = vkEnc->vkUnregisterObjectsNVX(device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices);
4224 return vkUnregisterObjectsNVX_VkResult_return;
4225}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004226static VkResult dynCheck_entry_vkUnregisterObjectsNVX(
4227 VkDevice device,
4228 VkObjectTableNVX objectTable,
4229 uint32_t objectCount,
4230 const VkObjectEntryTypeNVX* pObjectEntryTypes,
4231 const uint32_t* pObjectIndices)
4232{
4233 auto resources = ResourceTracker::get();
4234 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4235 {
4236 sOnInvalidDynamicallyCheckedCall("vkUnregisterObjectsNVX", "VK_NVX_device_generated_commands");
4237 }
4238 AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX");
4239 auto vkEnc = HostConnection::get()->vkEncoder();
4240 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
4241 vkUnregisterObjectsNVX_VkResult_return = vkEnc->vkUnregisterObjectsNVX(device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices);
4242 return vkUnregisterObjectsNVX_VkResult_return;
4243}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004244static void entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
4245 VkPhysicalDevice physicalDevice,
4246 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
4247 VkDeviceGeneratedCommandsLimitsNVX* pLimits)
4248{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004249 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004250 auto vkEnc = HostConnection::get()->vkEncoder();
4251 vkEnc->vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(physicalDevice, pFeatures, pLimits);
4252}
4253#endif
4254#ifdef VK_NV_clip_space_w_scaling
4255static void entry_vkCmdSetViewportWScalingNV(
4256 VkCommandBuffer commandBuffer,
4257 uint32_t firstViewport,
4258 uint32_t viewportCount,
4259 const VkViewportWScalingNV* pViewportWScalings)
4260{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004261 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004262 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004263 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004264 vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings);
4265}
4266#endif
4267#ifdef VK_EXT_direct_mode_display
4268static VkResult entry_vkReleaseDisplayEXT(
4269 VkPhysicalDevice physicalDevice,
4270 VkDisplayKHR display)
4271{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004272 AEMU_SCOPED_TRACE("vkReleaseDisplayEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004273 auto vkEnc = HostConnection::get()->vkEncoder();
4274 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
4275 vkReleaseDisplayEXT_VkResult_return = vkEnc->vkReleaseDisplayEXT(physicalDevice, display);
4276 return vkReleaseDisplayEXT_VkResult_return;
4277}
4278#endif
4279#ifdef VK_EXT_acquire_xlib_display
4280static VkResult entry_vkAcquireXlibDisplayEXT(
4281 VkPhysicalDevice physicalDevice,
4282 Display* dpy,
4283 VkDisplayKHR display)
4284{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004285 AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004286 auto vkEnc = HostConnection::get()->vkEncoder();
4287 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
4288 vkAcquireXlibDisplayEXT_VkResult_return = vkEnc->vkAcquireXlibDisplayEXT(physicalDevice, dpy, display);
4289 return vkAcquireXlibDisplayEXT_VkResult_return;
4290}
4291static VkResult entry_vkGetRandROutputDisplayEXT(
4292 VkPhysicalDevice physicalDevice,
4293 Display* dpy,
4294 RROutput rrOutput,
4295 VkDisplayKHR* pDisplay)
4296{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004297 AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004298 auto vkEnc = HostConnection::get()->vkEncoder();
4299 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
4300 vkGetRandROutputDisplayEXT_VkResult_return = vkEnc->vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay);
4301 return vkGetRandROutputDisplayEXT_VkResult_return;
4302}
4303#endif
4304#ifdef VK_EXT_display_surface_counter
4305static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
4306 VkPhysicalDevice physicalDevice,
4307 VkSurfaceKHR surface,
4308 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
4309{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004310 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004311 auto vkEnc = HostConnection::get()->vkEncoder();
4312 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
4313 vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities);
4314 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
4315}
4316#endif
4317#ifdef VK_EXT_display_control
4318static VkResult entry_vkDisplayPowerControlEXT(
4319 VkDevice device,
4320 VkDisplayKHR display,
4321 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
4322{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004323 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004324 auto vkEnc = HostConnection::get()->vkEncoder();
4325 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
4326 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo);
4327 return vkDisplayPowerControlEXT_VkResult_return;
4328}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004329static VkResult dynCheck_entry_vkDisplayPowerControlEXT(
4330 VkDevice device,
4331 VkDisplayKHR display,
4332 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
4333{
4334 auto resources = ResourceTracker::get();
4335 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4336 {
4337 sOnInvalidDynamicallyCheckedCall("vkDisplayPowerControlEXT", "VK_EXT_display_control");
4338 }
4339 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
4340 auto vkEnc = HostConnection::get()->vkEncoder();
4341 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
4342 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo);
4343 return vkDisplayPowerControlEXT_VkResult_return;
4344}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004345static VkResult entry_vkRegisterDeviceEventEXT(
4346 VkDevice device,
4347 const VkDeviceEventInfoEXT* pDeviceEventInfo,
4348 const VkAllocationCallbacks* pAllocator,
4349 VkFence* pFence)
4350{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004351 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004352 auto vkEnc = HostConnection::get()->vkEncoder();
4353 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
4354 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence);
4355 return vkRegisterDeviceEventEXT_VkResult_return;
4356}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004357static VkResult dynCheck_entry_vkRegisterDeviceEventEXT(
4358 VkDevice device,
4359 const VkDeviceEventInfoEXT* pDeviceEventInfo,
4360 const VkAllocationCallbacks* pAllocator,
4361 VkFence* pFence)
4362{
4363 auto resources = ResourceTracker::get();
4364 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4365 {
4366 sOnInvalidDynamicallyCheckedCall("vkRegisterDeviceEventEXT", "VK_EXT_display_control");
4367 }
4368 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
4369 auto vkEnc = HostConnection::get()->vkEncoder();
4370 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
4371 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence);
4372 return vkRegisterDeviceEventEXT_VkResult_return;
4373}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004374static VkResult entry_vkRegisterDisplayEventEXT(
4375 VkDevice device,
4376 VkDisplayKHR display,
4377 const VkDisplayEventInfoEXT* pDisplayEventInfo,
4378 const VkAllocationCallbacks* pAllocator,
4379 VkFence* pFence)
4380{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004381 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004382 auto vkEnc = HostConnection::get()->vkEncoder();
4383 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
4384 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence);
4385 return vkRegisterDisplayEventEXT_VkResult_return;
4386}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004387static VkResult dynCheck_entry_vkRegisterDisplayEventEXT(
4388 VkDevice device,
4389 VkDisplayKHR display,
4390 const VkDisplayEventInfoEXT* pDisplayEventInfo,
4391 const VkAllocationCallbacks* pAllocator,
4392 VkFence* pFence)
4393{
4394 auto resources = ResourceTracker::get();
4395 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4396 {
4397 sOnInvalidDynamicallyCheckedCall("vkRegisterDisplayEventEXT", "VK_EXT_display_control");
4398 }
4399 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
4400 auto vkEnc = HostConnection::get()->vkEncoder();
4401 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
4402 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence);
4403 return vkRegisterDisplayEventEXT_VkResult_return;
4404}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004405static VkResult entry_vkGetSwapchainCounterEXT(
4406 VkDevice device,
4407 VkSwapchainKHR swapchain,
4408 VkSurfaceCounterFlagBitsEXT counter,
4409 uint64_t* pCounterValue)
4410{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004411 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004412 auto vkEnc = HostConnection::get()->vkEncoder();
4413 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
4414 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue);
4415 return vkGetSwapchainCounterEXT_VkResult_return;
4416}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004417static VkResult dynCheck_entry_vkGetSwapchainCounterEXT(
4418 VkDevice device,
4419 VkSwapchainKHR swapchain,
4420 VkSurfaceCounterFlagBitsEXT counter,
4421 uint64_t* pCounterValue)
4422{
4423 auto resources = ResourceTracker::get();
4424 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4425 {
4426 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainCounterEXT", "VK_EXT_display_control");
4427 }
4428 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
4429 auto vkEnc = HostConnection::get()->vkEncoder();
4430 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
4431 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue);
4432 return vkGetSwapchainCounterEXT_VkResult_return;
4433}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004434#endif
4435#ifdef VK_GOOGLE_display_timing
4436static VkResult entry_vkGetRefreshCycleDurationGOOGLE(
4437 VkDevice device,
4438 VkSwapchainKHR swapchain,
4439 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
4440{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004441 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004442 auto vkEnc = HostConnection::get()->vkEncoder();
4443 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
4444 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties);
4445 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
4446}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004447static VkResult dynCheck_entry_vkGetRefreshCycleDurationGOOGLE(
4448 VkDevice device,
4449 VkSwapchainKHR swapchain,
4450 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
4451{
4452 auto resources = ResourceTracker::get();
4453 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
4454 {
4455 sOnInvalidDynamicallyCheckedCall("vkGetRefreshCycleDurationGOOGLE", "VK_GOOGLE_display_timing");
4456 }
4457 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
4458 auto vkEnc = HostConnection::get()->vkEncoder();
4459 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
4460 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties);
4461 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
4462}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004463static VkResult entry_vkGetPastPresentationTimingGOOGLE(
4464 VkDevice device,
4465 VkSwapchainKHR swapchain,
4466 uint32_t* pPresentationTimingCount,
4467 VkPastPresentationTimingGOOGLE* pPresentationTimings)
4468{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004469 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004470 auto vkEnc = HostConnection::get()->vkEncoder();
4471 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
4472 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings);
4473 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
4474}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004475static VkResult dynCheck_entry_vkGetPastPresentationTimingGOOGLE(
4476 VkDevice device,
4477 VkSwapchainKHR swapchain,
4478 uint32_t* pPresentationTimingCount,
4479 VkPastPresentationTimingGOOGLE* pPresentationTimings)
4480{
4481 auto resources = ResourceTracker::get();
4482 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
4483 {
4484 sOnInvalidDynamicallyCheckedCall("vkGetPastPresentationTimingGOOGLE", "VK_GOOGLE_display_timing");
4485 }
4486 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
4487 auto vkEnc = HostConnection::get()->vkEncoder();
4488 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
4489 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings);
4490 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
4491}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004492#endif
4493#ifdef VK_NV_sample_mask_override_coverage
4494#endif
4495#ifdef VK_NV_geometry_shader_passthrough
4496#endif
4497#ifdef VK_NV_viewport_array2
4498#endif
4499#ifdef VK_NVX_multiview_per_view_attributes
4500#endif
4501#ifdef VK_NV_viewport_swizzle
4502#endif
4503#ifdef VK_EXT_discard_rectangles
4504static void entry_vkCmdSetDiscardRectangleEXT(
4505 VkCommandBuffer commandBuffer,
4506 uint32_t firstDiscardRectangle,
4507 uint32_t discardRectangleCount,
4508 const VkRect2D* pDiscardRectangles)
4509{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004510 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004511 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004512 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004513 vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles);
4514}
4515#endif
4516#ifdef VK_EXT_conservative_rasterization
4517#endif
4518#ifdef VK_EXT_swapchain_colorspace
4519#endif
4520#ifdef VK_EXT_hdr_metadata
4521static void entry_vkSetHdrMetadataEXT(
4522 VkDevice device,
4523 uint32_t swapchainCount,
4524 const VkSwapchainKHR* pSwapchains,
4525 const VkHdrMetadataEXT* pMetadata)
4526{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004527 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004528 auto vkEnc = HostConnection::get()->vkEncoder();
4529 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata);
4530}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004531static void dynCheck_entry_vkSetHdrMetadataEXT(
4532 VkDevice device,
4533 uint32_t swapchainCount,
4534 const VkSwapchainKHR* pSwapchains,
4535 const VkHdrMetadataEXT* pMetadata)
4536{
4537 auto resources = ResourceTracker::get();
4538 if (!resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata"))
4539 {
4540 sOnInvalidDynamicallyCheckedCall("vkSetHdrMetadataEXT", "VK_EXT_hdr_metadata");
4541 }
4542 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
4543 auto vkEnc = HostConnection::get()->vkEncoder();
4544 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata);
4545}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004546#endif
4547#ifdef VK_MVK_ios_surface
4548static VkResult entry_vkCreateIOSSurfaceMVK(
4549 VkInstance instance,
4550 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
4551 const VkAllocationCallbacks* pAllocator,
4552 VkSurfaceKHR* pSurface)
4553{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004554 AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004555 auto vkEnc = HostConnection::get()->vkEncoder();
4556 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
4557 vkCreateIOSSurfaceMVK_VkResult_return = vkEnc->vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
4558 return vkCreateIOSSurfaceMVK_VkResult_return;
4559}
4560#endif
4561#ifdef VK_MVK_macos_surface
4562static VkResult entry_vkCreateMacOSSurfaceMVK(
4563 VkInstance instance,
4564 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
4565 const VkAllocationCallbacks* pAllocator,
4566 VkSurfaceKHR* pSurface)
4567{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004568 AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004569 auto vkEnc = HostConnection::get()->vkEncoder();
4570 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
4571 vkCreateMacOSSurfaceMVK_VkResult_return = vkEnc->vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
4572 return vkCreateMacOSSurfaceMVK_VkResult_return;
4573}
4574#endif
4575#ifdef VK_EXT_external_memory_dma_buf
4576#endif
4577#ifdef VK_EXT_queue_family_foreign
4578#endif
4579#ifdef VK_EXT_debug_utils
4580static VkResult entry_vkSetDebugUtilsObjectNameEXT(
4581 VkDevice device,
4582 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
4583{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004584 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004585 auto vkEnc = HostConnection::get()->vkEncoder();
4586 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
4587 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo);
4588 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
4589}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004590static VkResult dynCheck_entry_vkSetDebugUtilsObjectNameEXT(
4591 VkDevice device,
4592 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
4593{
4594 auto resources = ResourceTracker::get();
4595 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
4596 {
4597 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectNameEXT", "VK_EXT_debug_utils");
4598 }
4599 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
4600 auto vkEnc = HostConnection::get()->vkEncoder();
4601 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
4602 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo);
4603 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
4604}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004605static VkResult entry_vkSetDebugUtilsObjectTagEXT(
4606 VkDevice device,
4607 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
4608{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004609 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004610 auto vkEnc = HostConnection::get()->vkEncoder();
4611 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
4612 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo);
4613 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
4614}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004615static VkResult dynCheck_entry_vkSetDebugUtilsObjectTagEXT(
4616 VkDevice device,
4617 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
4618{
4619 auto resources = ResourceTracker::get();
4620 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
4621 {
4622 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectTagEXT", "VK_EXT_debug_utils");
4623 }
4624 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
4625 auto vkEnc = HostConnection::get()->vkEncoder();
4626 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
4627 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo);
4628 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
4629}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004630static void entry_vkQueueBeginDebugUtilsLabelEXT(
4631 VkQueue queue,
4632 const VkDebugUtilsLabelEXT* pLabelInfo)
4633{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004634 AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004635 auto vkEnc = HostConnection::get()->vkEncoder();
4636 vkEnc->vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo);
4637}
4638static void entry_vkQueueEndDebugUtilsLabelEXT(
4639 VkQueue queue)
4640{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004641 AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004642 auto vkEnc = HostConnection::get()->vkEncoder();
4643 vkEnc->vkQueueEndDebugUtilsLabelEXT(queue);
4644}
4645static void entry_vkQueueInsertDebugUtilsLabelEXT(
4646 VkQueue queue,
4647 const VkDebugUtilsLabelEXT* pLabelInfo)
4648{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004649 AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004650 auto vkEnc = HostConnection::get()->vkEncoder();
4651 vkEnc->vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo);
4652}
4653static void entry_vkCmdBeginDebugUtilsLabelEXT(
4654 VkCommandBuffer commandBuffer,
4655 const VkDebugUtilsLabelEXT* pLabelInfo)
4656{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004657 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004658 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004659 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004660 vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
4661}
4662static void entry_vkCmdEndDebugUtilsLabelEXT(
4663 VkCommandBuffer commandBuffer)
4664{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004665 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004666 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004667 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004668 vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer);
4669}
4670static void entry_vkCmdInsertDebugUtilsLabelEXT(
4671 VkCommandBuffer commandBuffer,
4672 const VkDebugUtilsLabelEXT* pLabelInfo)
4673{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004674 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004675 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004676 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004677 vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
4678}
4679static VkResult entry_vkCreateDebugUtilsMessengerEXT(
4680 VkInstance instance,
4681 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
4682 const VkAllocationCallbacks* pAllocator,
4683 VkDebugUtilsMessengerEXT* pMessenger)
4684{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004685 AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004686 auto vkEnc = HostConnection::get()->vkEncoder();
4687 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
4688 vkCreateDebugUtilsMessengerEXT_VkResult_return = vkEnc->vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger);
4689 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
4690}
4691static void entry_vkDestroyDebugUtilsMessengerEXT(
4692 VkInstance instance,
4693 VkDebugUtilsMessengerEXT messenger,
4694 const VkAllocationCallbacks* pAllocator)
4695{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004696 AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004697 auto vkEnc = HostConnection::get()->vkEncoder();
4698 vkEnc->vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator);
4699}
4700static void entry_vkSubmitDebugUtilsMessageEXT(
4701 VkInstance instance,
4702 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
4703 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
4704 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
4705{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004706 AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004707 auto vkEnc = HostConnection::get()->vkEncoder();
4708 vkEnc->vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData);
4709}
4710#endif
4711#ifdef VK_ANDROID_external_memory_android_hardware_buffer
4712static VkResult entry_vkGetAndroidHardwareBufferPropertiesANDROID(
4713 VkDevice device,
4714 const AHardwareBuffer* buffer,
4715 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
4716{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004717 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004718 auto vkEnc = HostConnection::get()->vkEncoder();
4719 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08004720 auto resources = ResourceTracker::get();
4721 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004722 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
4723}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004724static VkResult dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID(
4725 VkDevice device,
4726 const AHardwareBuffer* buffer,
4727 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
4728{
4729 auto resources = ResourceTracker::get();
4730 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
4731 {
4732 sOnInvalidDynamicallyCheckedCall("vkGetAndroidHardwareBufferPropertiesANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
4733 }
4734 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
4735 auto vkEnc = HostConnection::get()->vkEncoder();
4736 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
4737 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
4738 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
4739}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004740static VkResult entry_vkGetMemoryAndroidHardwareBufferANDROID(
4741 VkDevice device,
4742 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
4743 AHardwareBuffer** pBuffer)
4744{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004745 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004746 auto vkEnc = HostConnection::get()->vkEncoder();
4747 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08004748 auto resources = ResourceTracker::get();
4749 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004750 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
4751}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004752static VkResult dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID(
4753 VkDevice device,
4754 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
4755 AHardwareBuffer** pBuffer)
4756{
4757 auto resources = ResourceTracker::get();
4758 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
4759 {
4760 sOnInvalidDynamicallyCheckedCall("vkGetMemoryAndroidHardwareBufferANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
4761 }
4762 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
4763 auto vkEnc = HostConnection::get()->vkEncoder();
4764 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
4765 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
4766 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
4767}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004768#endif
4769#ifdef VK_EXT_sampler_filter_minmax
4770#endif
4771#ifdef VK_AMD_gpu_shader_int16
4772#endif
4773#ifdef VK_AMD_mixed_attachment_samples
4774#endif
4775#ifdef VK_AMD_shader_fragment_mask
4776#endif
4777#ifdef VK_EXT_shader_stencil_export
4778#endif
4779#ifdef VK_EXT_sample_locations
4780static void entry_vkCmdSetSampleLocationsEXT(
4781 VkCommandBuffer commandBuffer,
4782 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
4783{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004784 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004785 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004786 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004787 vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo);
4788}
4789static void entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(
4790 VkPhysicalDevice physicalDevice,
4791 VkSampleCountFlagBits samples,
4792 VkMultisamplePropertiesEXT* pMultisampleProperties)
4793{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004794 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004795 auto vkEnc = HostConnection::get()->vkEncoder();
4796 vkEnc->vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties);
4797}
4798#endif
4799#ifdef VK_EXT_blend_operation_advanced
4800#endif
4801#ifdef VK_NV_fragment_coverage_to_color
4802#endif
4803#ifdef VK_NV_framebuffer_mixed_samples
4804#endif
4805#ifdef VK_NV_fill_rectangle
4806#endif
4807#ifdef VK_EXT_post_depth_coverage
4808#endif
4809#ifdef VK_EXT_validation_cache
4810static VkResult entry_vkCreateValidationCacheEXT(
4811 VkDevice device,
4812 const VkValidationCacheCreateInfoEXT* pCreateInfo,
4813 const VkAllocationCallbacks* pAllocator,
4814 VkValidationCacheEXT* pValidationCache)
4815{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004816 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004817 auto vkEnc = HostConnection::get()->vkEncoder();
4818 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
4819 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache);
4820 return vkCreateValidationCacheEXT_VkResult_return;
4821}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004822static VkResult dynCheck_entry_vkCreateValidationCacheEXT(
4823 VkDevice device,
4824 const VkValidationCacheCreateInfoEXT* pCreateInfo,
4825 const VkAllocationCallbacks* pAllocator,
4826 VkValidationCacheEXT* pValidationCache)
4827{
4828 auto resources = ResourceTracker::get();
4829 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4830 {
4831 sOnInvalidDynamicallyCheckedCall("vkCreateValidationCacheEXT", "VK_EXT_validation_cache");
4832 }
4833 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
4834 auto vkEnc = HostConnection::get()->vkEncoder();
4835 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
4836 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache);
4837 return vkCreateValidationCacheEXT_VkResult_return;
4838}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004839static void entry_vkDestroyValidationCacheEXT(
4840 VkDevice device,
4841 VkValidationCacheEXT validationCache,
4842 const VkAllocationCallbacks* pAllocator)
4843{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004844 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004845 auto vkEnc = HostConnection::get()->vkEncoder();
4846 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator);
4847}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004848static void dynCheck_entry_vkDestroyValidationCacheEXT(
4849 VkDevice device,
4850 VkValidationCacheEXT validationCache,
4851 const VkAllocationCallbacks* pAllocator)
4852{
4853 auto resources = ResourceTracker::get();
4854 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4855 {
4856 sOnInvalidDynamicallyCheckedCall("vkDestroyValidationCacheEXT", "VK_EXT_validation_cache");
4857 }
4858 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
4859 auto vkEnc = HostConnection::get()->vkEncoder();
4860 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator);
4861}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004862static VkResult entry_vkMergeValidationCachesEXT(
4863 VkDevice device,
4864 VkValidationCacheEXT dstCache,
4865 uint32_t srcCacheCount,
4866 const VkValidationCacheEXT* pSrcCaches)
4867{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004868 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004869 auto vkEnc = HostConnection::get()->vkEncoder();
4870 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
4871 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches);
4872 return vkMergeValidationCachesEXT_VkResult_return;
4873}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004874static VkResult dynCheck_entry_vkMergeValidationCachesEXT(
4875 VkDevice device,
4876 VkValidationCacheEXT dstCache,
4877 uint32_t srcCacheCount,
4878 const VkValidationCacheEXT* pSrcCaches)
4879{
4880 auto resources = ResourceTracker::get();
4881 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4882 {
4883 sOnInvalidDynamicallyCheckedCall("vkMergeValidationCachesEXT", "VK_EXT_validation_cache");
4884 }
4885 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
4886 auto vkEnc = HostConnection::get()->vkEncoder();
4887 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
4888 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches);
4889 return vkMergeValidationCachesEXT_VkResult_return;
4890}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004891static VkResult entry_vkGetValidationCacheDataEXT(
4892 VkDevice device,
4893 VkValidationCacheEXT validationCache,
4894 size_t* pDataSize,
4895 void* pData)
4896{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004897 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004898 auto vkEnc = HostConnection::get()->vkEncoder();
4899 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
4900 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData);
4901 return vkGetValidationCacheDataEXT_VkResult_return;
4902}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004903static VkResult dynCheck_entry_vkGetValidationCacheDataEXT(
4904 VkDevice device,
4905 VkValidationCacheEXT validationCache,
4906 size_t* pDataSize,
4907 void* pData)
4908{
4909 auto resources = ResourceTracker::get();
4910 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4911 {
4912 sOnInvalidDynamicallyCheckedCall("vkGetValidationCacheDataEXT", "VK_EXT_validation_cache");
4913 }
4914 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
4915 auto vkEnc = HostConnection::get()->vkEncoder();
4916 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
4917 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData);
4918 return vkGetValidationCacheDataEXT_VkResult_return;
4919}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004920#endif
4921#ifdef VK_EXT_descriptor_indexing
4922#endif
4923#ifdef VK_EXT_shader_viewport_index_layer
4924#endif
4925#ifdef VK_EXT_global_priority
4926#endif
4927#ifdef VK_EXT_external_memory_host
4928static VkResult entry_vkGetMemoryHostPointerPropertiesEXT(
4929 VkDevice device,
4930 VkExternalMemoryHandleTypeFlagBits handleType,
4931 const void* pHostPointer,
4932 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
4933{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004934 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004935 auto vkEnc = HostConnection::get()->vkEncoder();
4936 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
4937 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties);
4938 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
4939}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004940static VkResult dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT(
4941 VkDevice device,
4942 VkExternalMemoryHandleTypeFlagBits handleType,
4943 const void* pHostPointer,
4944 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
4945{
4946 auto resources = ResourceTracker::get();
4947 if (!resources->hasDeviceExtension(device, "VK_EXT_external_memory_host"))
4948 {
4949 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostPointerPropertiesEXT", "VK_EXT_external_memory_host");
4950 }
4951 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
4952 auto vkEnc = HostConnection::get()->vkEncoder();
4953 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
4954 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties);
4955 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
4956}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004957#endif
4958#ifdef VK_AMD_buffer_marker
4959static void entry_vkCmdWriteBufferMarkerAMD(
4960 VkCommandBuffer commandBuffer,
4961 VkPipelineStageFlagBits pipelineStage,
4962 VkBuffer dstBuffer,
4963 VkDeviceSize dstOffset,
4964 uint32_t marker)
4965{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004966 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004967 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004968 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004969 vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker);
4970}
4971#endif
4972#ifdef VK_AMD_shader_core_properties
4973#endif
4974#ifdef VK_EXT_vertex_attribute_divisor
4975#endif
4976#ifdef VK_NV_shader_subgroup_partitioned
4977#endif
4978#ifdef VK_NV_device_diagnostic_checkpoints
4979static void entry_vkCmdSetCheckpointNV(
4980 VkCommandBuffer commandBuffer,
4981 const void* pCheckpointMarker)
4982{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004983 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004984 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004985 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004986 vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker);
4987}
4988static void entry_vkGetQueueCheckpointDataNV(
4989 VkQueue queue,
4990 uint32_t* pCheckpointDataCount,
4991 VkCheckpointDataNV* pCheckpointData)
4992{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004993 AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004994 auto vkEnc = HostConnection::get()->vkEncoder();
4995 vkEnc->vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData);
4996}
4997#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08004998#ifdef VK_GOOGLE_address_space
4999static VkResult entry_vkMapMemoryIntoAddressSpaceGOOGLE(
5000 VkDevice device,
5001 VkDeviceMemory memory,
5002 uint64_t* pAddress)
5003{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005004 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08005005 auto vkEnc = HostConnection::get()->vkEncoder();
5006 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
5007 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress);
5008 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
5009}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005010static VkResult dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE(
5011 VkDevice device,
5012 VkDeviceMemory memory,
5013 uint64_t* pAddress)
5014{
5015 auto resources = ResourceTracker::get();
5016 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_address_space"))
5017 {
5018 sOnInvalidDynamicallyCheckedCall("vkMapMemoryIntoAddressSpaceGOOGLE", "VK_GOOGLE_address_space");
5019 }
5020 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
5021 auto vkEnc = HostConnection::get()->vkEncoder();
5022 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
5023 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress);
5024 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
5025}
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08005026#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005027#ifdef VK_GOOGLE_color_buffer
5028static VkResult entry_vkRegisterImageColorBufferGOOGLE(
5029 VkDevice device,
5030 VkImage image,
5031 uint32_t colorBuffer)
5032{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005033 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005034 auto vkEnc = HostConnection::get()->vkEncoder();
5035 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
5036 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer);
5037 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
5038}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005039static VkResult dynCheck_entry_vkRegisterImageColorBufferGOOGLE(
5040 VkDevice device,
5041 VkImage image,
5042 uint32_t colorBuffer)
5043{
5044 auto resources = ResourceTracker::get();
5045 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer"))
5046 {
5047 sOnInvalidDynamicallyCheckedCall("vkRegisterImageColorBufferGOOGLE", "VK_GOOGLE_color_buffer");
5048 }
5049 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
5050 auto vkEnc = HostConnection::get()->vkEncoder();
5051 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
5052 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer);
5053 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
5054}
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005055static VkResult entry_vkRegisterBufferColorBufferGOOGLE(
5056 VkDevice device,
5057 VkBuffer buffer,
5058 uint32_t colorBuffer)
5059{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005060 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005061 auto vkEnc = HostConnection::get()->vkEncoder();
5062 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
5063 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer);
5064 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
5065}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005066static VkResult dynCheck_entry_vkRegisterBufferColorBufferGOOGLE(
5067 VkDevice device,
5068 VkBuffer buffer,
5069 uint32_t colorBuffer)
5070{
5071 auto resources = ResourceTracker::get();
5072 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer"))
5073 {
5074 sOnInvalidDynamicallyCheckedCall("vkRegisterBufferColorBufferGOOGLE", "VK_GOOGLE_color_buffer");
5075 }
5076 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
5077 auto vkEnc = HostConnection::get()->vkEncoder();
5078 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
5079 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer);
5080 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
5081}
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005082#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07005083#ifdef VK_GOOGLE_sized_descriptor_update_template
5084static void entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
5085 VkDevice device,
5086 VkDescriptorSet descriptorSet,
5087 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
5088 uint32_t imageInfoCount,
5089 uint32_t bufferInfoCount,
5090 uint32_t bufferViewCount,
5091 const uint32_t* pImageInfoEntryIndices,
5092 const uint32_t* pBufferInfoEntryIndices,
5093 const uint32_t* pBufferViewEntryIndices,
5094 const VkDescriptorImageInfo* pImageInfos,
5095 const VkDescriptorBufferInfo* pBufferInfos,
5096 const VkBufferView* pBufferViews)
5097{
5098 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
5099 auto vkEnc = HostConnection::get()->vkEncoder();
5100 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews);
5101}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005102static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
5103 VkDevice device,
5104 VkDescriptorSet descriptorSet,
5105 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
5106 uint32_t imageInfoCount,
5107 uint32_t bufferInfoCount,
5108 uint32_t bufferViewCount,
5109 const uint32_t* pImageInfoEntryIndices,
5110 const uint32_t* pBufferInfoEntryIndices,
5111 const uint32_t* pBufferViewEntryIndices,
5112 const VkDescriptorImageInfo* pImageInfos,
5113 const VkDescriptorBufferInfo* pBufferInfos,
5114 const VkBufferView* pBufferViews)
5115{
5116 auto resources = ResourceTracker::get();
5117 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template"))
5118 {
5119 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateSizedGOOGLE", "VK_GOOGLE_sized_descriptor_update_template");
5120 }
5121 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
5122 auto vkEnc = HostConnection::get()->vkEncoder();
5123 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews);
5124}
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07005125#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005126#ifdef VK_GOOGLE_async_command_buffers
5127static void entry_vkBeginCommandBufferAsyncGOOGLE(
5128 VkCommandBuffer commandBuffer,
5129 const VkCommandBufferBeginInfo* pBeginInfo)
5130{
5131 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
5132 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005133 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005134 vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo);
5135}
5136static void entry_vkEndCommandBufferAsyncGOOGLE(
5137 VkCommandBuffer commandBuffer)
5138{
5139 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
5140 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005141 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005142 vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer);
5143}
5144static void entry_vkResetCommandBufferAsyncGOOGLE(
5145 VkCommandBuffer commandBuffer,
5146 VkCommandBufferResetFlags flags)
5147{
5148 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
5149 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005150 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005151 vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags);
5152}
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005153static void entry_vkCommandBufferHostSyncGOOGLE(
5154 VkCommandBuffer commandBuffer,
5155 uint32_t needHostSync,
5156 uint32_t sequenceNumber)
5157{
5158 AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
5159 auto vkEnc = HostConnection::get()->vkEncoder();
5160 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
5161 vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber);
5162}
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005163#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00005164#ifdef VK_GOOGLE_create_resources_with_requirements
5165static VkResult entry_vkCreateImageWithRequirementsGOOGLE(
5166 VkDevice device,
5167 const VkImageCreateInfo* pCreateInfo,
5168 const VkAllocationCallbacks* pAllocator,
5169 VkImage* pImage,
5170 VkMemoryRequirements* pMemoryRequirements)
5171{
5172 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
5173 auto vkEnc = HostConnection::get()->vkEncoder();
5174 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5175 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements);
5176 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
5177}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005178static VkResult dynCheck_entry_vkCreateImageWithRequirementsGOOGLE(
5179 VkDevice device,
5180 const VkImageCreateInfo* pCreateInfo,
5181 const VkAllocationCallbacks* pAllocator,
5182 VkImage* pImage,
5183 VkMemoryRequirements* pMemoryRequirements)
5184{
5185 auto resources = ResourceTracker::get();
5186 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements"))
5187 {
5188 sOnInvalidDynamicallyCheckedCall("vkCreateImageWithRequirementsGOOGLE", "VK_GOOGLE_create_resources_with_requirements");
5189 }
5190 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
5191 auto vkEnc = HostConnection::get()->vkEncoder();
5192 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5193 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements);
5194 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
5195}
Lingfeng Yang87f11962019-06-27 16:28:53 +00005196static VkResult entry_vkCreateBufferWithRequirementsGOOGLE(
5197 VkDevice device,
5198 const VkBufferCreateInfo* pCreateInfo,
5199 const VkAllocationCallbacks* pAllocator,
5200 VkBuffer* pBuffer,
5201 VkMemoryRequirements* pMemoryRequirements)
5202{
5203 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
5204 auto vkEnc = HostConnection::get()->vkEncoder();
5205 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5206 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements);
5207 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
5208}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005209static VkResult dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE(
5210 VkDevice device,
5211 const VkBufferCreateInfo* pCreateInfo,
5212 const VkAllocationCallbacks* pAllocator,
5213 VkBuffer* pBuffer,
5214 VkMemoryRequirements* pMemoryRequirements)
5215{
5216 auto resources = ResourceTracker::get();
5217 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements"))
5218 {
5219 sOnInvalidDynamicallyCheckedCall("vkCreateBufferWithRequirementsGOOGLE", "VK_GOOGLE_create_resources_with_requirements");
5220 }
5221 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
5222 auto vkEnc = HostConnection::get()->vkEncoder();
5223 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5224 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements);
5225 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
5226}
Lingfeng Yang87f11962019-06-27 16:28:53 +00005227#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08005228#ifdef VK_GOOGLE_address_space_info
5229static VkResult entry_vkGetMemoryHostAddressInfoGOOGLE(
5230 VkDevice device,
5231 VkDeviceMemory memory,
5232 uint64_t* pAddress,
5233 uint64_t* pSize,
5234 uint64_t* pHostmemId)
5235{
5236 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
5237 auto vkEnc = HostConnection::get()->vkEncoder();
5238 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
5239 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId);
5240 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
5241}
5242static VkResult dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE(
5243 VkDevice device,
5244 VkDeviceMemory memory,
5245 uint64_t* pAddress,
5246 uint64_t* pSize,
5247 uint64_t* pHostmemId)
5248{
5249 auto resources = ResourceTracker::get();
5250 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_address_space_info"))
5251 {
5252 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostAddressInfoGOOGLE", "VK_GOOGLE_address_space_info");
5253 }
5254 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
5255 auto vkEnc = HostConnection::get()->vkEncoder();
5256 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
5257 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId);
5258 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
5259}
5260#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07005261#ifdef VK_GOOGLE_free_memory_sync
5262static VkResult entry_vkFreeMemorySyncGOOGLE(
5263 VkDevice device,
5264 VkDeviceMemory memory,
5265 const VkAllocationCallbacks* pAllocator)
5266{
5267 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
5268 auto vkEnc = HostConnection::get()->vkEncoder();
5269 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
5270 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator);
5271 return vkFreeMemorySyncGOOGLE_VkResult_return;
5272}
5273static VkResult dynCheck_entry_vkFreeMemorySyncGOOGLE(
5274 VkDevice device,
5275 VkDeviceMemory memory,
5276 const VkAllocationCallbacks* pAllocator)
5277{
5278 auto resources = ResourceTracker::get();
5279 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_free_memory_sync"))
5280 {
5281 sOnInvalidDynamicallyCheckedCall("vkFreeMemorySyncGOOGLE", "VK_GOOGLE_free_memory_sync");
5282 }
5283 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
5284 auto vkEnc = HostConnection::get()->vkEncoder();
5285 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
5286 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator);
5287 return vkFreeMemorySyncGOOGLE_VkResult_return;
5288}
5289#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005290void* goldfish_vulkan_get_proc_address(const char* name){
5291#ifdef VK_VERSION_1_0
5292 if (!strcmp(name, "vkCreateInstance"))
5293 {
5294 return (void*)entry_vkCreateInstance;
5295 }
5296 if (!strcmp(name, "vkDestroyInstance"))
5297 {
5298 return (void*)entry_vkDestroyInstance;
5299 }
5300 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
5301 {
5302 return (void*)entry_vkEnumeratePhysicalDevices;
5303 }
5304 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
5305 {
5306 return (void*)entry_vkGetPhysicalDeviceFeatures;
5307 }
5308 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
5309 {
5310 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
5311 }
5312 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
5313 {
5314 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
5315 }
5316 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
5317 {
5318 return (void*)entry_vkGetPhysicalDeviceProperties;
5319 }
5320 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
5321 {
5322 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
5323 }
5324 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
5325 {
5326 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
5327 }
5328 if (!strcmp(name, "vkGetInstanceProcAddr"))
5329 {
5330 return (void*)entry_vkGetInstanceProcAddr;
5331 }
5332 if (!strcmp(name, "vkGetDeviceProcAddr"))
5333 {
5334 return (void*)entry_vkGetDeviceProcAddr;
5335 }
5336 if (!strcmp(name, "vkCreateDevice"))
5337 {
5338 return (void*)entry_vkCreateDevice;
5339 }
5340 if (!strcmp(name, "vkDestroyDevice"))
5341 {
5342 return (void*)entry_vkDestroyDevice;
5343 }
5344 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
5345 {
5346 return (void*)entry_vkEnumerateInstanceExtensionProperties;
5347 }
5348 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
5349 {
5350 return (void*)entry_vkEnumerateDeviceExtensionProperties;
5351 }
5352 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
5353 {
5354 return (void*)entry_vkEnumerateInstanceLayerProperties;
5355 }
5356 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
5357 {
5358 return (void*)entry_vkEnumerateDeviceLayerProperties;
5359 }
5360 if (!strcmp(name, "vkGetDeviceQueue"))
5361 {
5362 return (void*)entry_vkGetDeviceQueue;
5363 }
5364 if (!strcmp(name, "vkQueueSubmit"))
5365 {
5366 return (void*)entry_vkQueueSubmit;
5367 }
5368 if (!strcmp(name, "vkQueueWaitIdle"))
5369 {
5370 return (void*)entry_vkQueueWaitIdle;
5371 }
5372 if (!strcmp(name, "vkDeviceWaitIdle"))
5373 {
5374 return (void*)entry_vkDeviceWaitIdle;
5375 }
5376 if (!strcmp(name, "vkAllocateMemory"))
5377 {
5378 return (void*)entry_vkAllocateMemory;
5379 }
5380 if (!strcmp(name, "vkFreeMemory"))
5381 {
5382 return (void*)entry_vkFreeMemory;
5383 }
5384 if (!strcmp(name, "vkMapMemory"))
5385 {
5386 return (void*)entry_vkMapMemory;
5387 }
5388 if (!strcmp(name, "vkUnmapMemory"))
5389 {
5390 return (void*)entry_vkUnmapMemory;
5391 }
5392 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
5393 {
5394 return (void*)entry_vkFlushMappedMemoryRanges;
5395 }
5396 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
5397 {
5398 return (void*)entry_vkInvalidateMappedMemoryRanges;
5399 }
5400 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
5401 {
5402 return (void*)entry_vkGetDeviceMemoryCommitment;
5403 }
5404 if (!strcmp(name, "vkBindBufferMemory"))
5405 {
5406 return (void*)entry_vkBindBufferMemory;
5407 }
5408 if (!strcmp(name, "vkBindImageMemory"))
5409 {
5410 return (void*)entry_vkBindImageMemory;
5411 }
5412 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
5413 {
5414 return (void*)entry_vkGetBufferMemoryRequirements;
5415 }
5416 if (!strcmp(name, "vkGetImageMemoryRequirements"))
5417 {
5418 return (void*)entry_vkGetImageMemoryRequirements;
5419 }
5420 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
5421 {
5422 return (void*)entry_vkGetImageSparseMemoryRequirements;
5423 }
5424 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
5425 {
5426 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
5427 }
5428 if (!strcmp(name, "vkQueueBindSparse"))
5429 {
5430 return (void*)entry_vkQueueBindSparse;
5431 }
5432 if (!strcmp(name, "vkCreateFence"))
5433 {
5434 return (void*)entry_vkCreateFence;
5435 }
5436 if (!strcmp(name, "vkDestroyFence"))
5437 {
5438 return (void*)entry_vkDestroyFence;
5439 }
5440 if (!strcmp(name, "vkResetFences"))
5441 {
5442 return (void*)entry_vkResetFences;
5443 }
5444 if (!strcmp(name, "vkGetFenceStatus"))
5445 {
5446 return (void*)entry_vkGetFenceStatus;
5447 }
5448 if (!strcmp(name, "vkWaitForFences"))
5449 {
5450 return (void*)entry_vkWaitForFences;
5451 }
5452 if (!strcmp(name, "vkCreateSemaphore"))
5453 {
5454 return (void*)entry_vkCreateSemaphore;
5455 }
5456 if (!strcmp(name, "vkDestroySemaphore"))
5457 {
5458 return (void*)entry_vkDestroySemaphore;
5459 }
5460 if (!strcmp(name, "vkCreateEvent"))
5461 {
5462 return (void*)entry_vkCreateEvent;
5463 }
5464 if (!strcmp(name, "vkDestroyEvent"))
5465 {
5466 return (void*)entry_vkDestroyEvent;
5467 }
5468 if (!strcmp(name, "vkGetEventStatus"))
5469 {
5470 return (void*)entry_vkGetEventStatus;
5471 }
5472 if (!strcmp(name, "vkSetEvent"))
5473 {
5474 return (void*)entry_vkSetEvent;
5475 }
5476 if (!strcmp(name, "vkResetEvent"))
5477 {
5478 return (void*)entry_vkResetEvent;
5479 }
5480 if (!strcmp(name, "vkCreateQueryPool"))
5481 {
5482 return (void*)entry_vkCreateQueryPool;
5483 }
5484 if (!strcmp(name, "vkDestroyQueryPool"))
5485 {
5486 return (void*)entry_vkDestroyQueryPool;
5487 }
5488 if (!strcmp(name, "vkGetQueryPoolResults"))
5489 {
5490 return (void*)entry_vkGetQueryPoolResults;
5491 }
5492 if (!strcmp(name, "vkCreateBuffer"))
5493 {
5494 return (void*)entry_vkCreateBuffer;
5495 }
5496 if (!strcmp(name, "vkDestroyBuffer"))
5497 {
5498 return (void*)entry_vkDestroyBuffer;
5499 }
5500 if (!strcmp(name, "vkCreateBufferView"))
5501 {
5502 return (void*)entry_vkCreateBufferView;
5503 }
5504 if (!strcmp(name, "vkDestroyBufferView"))
5505 {
5506 return (void*)entry_vkDestroyBufferView;
5507 }
5508 if (!strcmp(name, "vkCreateImage"))
5509 {
5510 return (void*)entry_vkCreateImage;
5511 }
5512 if (!strcmp(name, "vkDestroyImage"))
5513 {
5514 return (void*)entry_vkDestroyImage;
5515 }
5516 if (!strcmp(name, "vkGetImageSubresourceLayout"))
5517 {
5518 return (void*)entry_vkGetImageSubresourceLayout;
5519 }
5520 if (!strcmp(name, "vkCreateImageView"))
5521 {
5522 return (void*)entry_vkCreateImageView;
5523 }
5524 if (!strcmp(name, "vkDestroyImageView"))
5525 {
5526 return (void*)entry_vkDestroyImageView;
5527 }
5528 if (!strcmp(name, "vkCreateShaderModule"))
5529 {
5530 return (void*)entry_vkCreateShaderModule;
5531 }
5532 if (!strcmp(name, "vkDestroyShaderModule"))
5533 {
5534 return (void*)entry_vkDestroyShaderModule;
5535 }
5536 if (!strcmp(name, "vkCreatePipelineCache"))
5537 {
5538 return (void*)entry_vkCreatePipelineCache;
5539 }
5540 if (!strcmp(name, "vkDestroyPipelineCache"))
5541 {
5542 return (void*)entry_vkDestroyPipelineCache;
5543 }
5544 if (!strcmp(name, "vkGetPipelineCacheData"))
5545 {
5546 return (void*)entry_vkGetPipelineCacheData;
5547 }
5548 if (!strcmp(name, "vkMergePipelineCaches"))
5549 {
5550 return (void*)entry_vkMergePipelineCaches;
5551 }
5552 if (!strcmp(name, "vkCreateGraphicsPipelines"))
5553 {
5554 return (void*)entry_vkCreateGraphicsPipelines;
5555 }
5556 if (!strcmp(name, "vkCreateComputePipelines"))
5557 {
5558 return (void*)entry_vkCreateComputePipelines;
5559 }
5560 if (!strcmp(name, "vkDestroyPipeline"))
5561 {
5562 return (void*)entry_vkDestroyPipeline;
5563 }
5564 if (!strcmp(name, "vkCreatePipelineLayout"))
5565 {
5566 return (void*)entry_vkCreatePipelineLayout;
5567 }
5568 if (!strcmp(name, "vkDestroyPipelineLayout"))
5569 {
5570 return (void*)entry_vkDestroyPipelineLayout;
5571 }
5572 if (!strcmp(name, "vkCreateSampler"))
5573 {
5574 return (void*)entry_vkCreateSampler;
5575 }
5576 if (!strcmp(name, "vkDestroySampler"))
5577 {
5578 return (void*)entry_vkDestroySampler;
5579 }
5580 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
5581 {
5582 return (void*)entry_vkCreateDescriptorSetLayout;
5583 }
5584 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
5585 {
5586 return (void*)entry_vkDestroyDescriptorSetLayout;
5587 }
5588 if (!strcmp(name, "vkCreateDescriptorPool"))
5589 {
5590 return (void*)entry_vkCreateDescriptorPool;
5591 }
5592 if (!strcmp(name, "vkDestroyDescriptorPool"))
5593 {
5594 return (void*)entry_vkDestroyDescriptorPool;
5595 }
5596 if (!strcmp(name, "vkResetDescriptorPool"))
5597 {
5598 return (void*)entry_vkResetDescriptorPool;
5599 }
5600 if (!strcmp(name, "vkAllocateDescriptorSets"))
5601 {
5602 return (void*)entry_vkAllocateDescriptorSets;
5603 }
5604 if (!strcmp(name, "vkFreeDescriptorSets"))
5605 {
5606 return (void*)entry_vkFreeDescriptorSets;
5607 }
5608 if (!strcmp(name, "vkUpdateDescriptorSets"))
5609 {
5610 return (void*)entry_vkUpdateDescriptorSets;
5611 }
5612 if (!strcmp(name, "vkCreateFramebuffer"))
5613 {
5614 return (void*)entry_vkCreateFramebuffer;
5615 }
5616 if (!strcmp(name, "vkDestroyFramebuffer"))
5617 {
5618 return (void*)entry_vkDestroyFramebuffer;
5619 }
5620 if (!strcmp(name, "vkCreateRenderPass"))
5621 {
5622 return (void*)entry_vkCreateRenderPass;
5623 }
5624 if (!strcmp(name, "vkDestroyRenderPass"))
5625 {
5626 return (void*)entry_vkDestroyRenderPass;
5627 }
5628 if (!strcmp(name, "vkGetRenderAreaGranularity"))
5629 {
5630 return (void*)entry_vkGetRenderAreaGranularity;
5631 }
5632 if (!strcmp(name, "vkCreateCommandPool"))
5633 {
5634 return (void*)entry_vkCreateCommandPool;
5635 }
5636 if (!strcmp(name, "vkDestroyCommandPool"))
5637 {
5638 return (void*)entry_vkDestroyCommandPool;
5639 }
5640 if (!strcmp(name, "vkResetCommandPool"))
5641 {
5642 return (void*)entry_vkResetCommandPool;
5643 }
5644 if (!strcmp(name, "vkAllocateCommandBuffers"))
5645 {
5646 return (void*)entry_vkAllocateCommandBuffers;
5647 }
5648 if (!strcmp(name, "vkFreeCommandBuffers"))
5649 {
5650 return (void*)entry_vkFreeCommandBuffers;
5651 }
5652 if (!strcmp(name, "vkBeginCommandBuffer"))
5653 {
5654 return (void*)entry_vkBeginCommandBuffer;
5655 }
5656 if (!strcmp(name, "vkEndCommandBuffer"))
5657 {
5658 return (void*)entry_vkEndCommandBuffer;
5659 }
5660 if (!strcmp(name, "vkResetCommandBuffer"))
5661 {
5662 return (void*)entry_vkResetCommandBuffer;
5663 }
5664 if (!strcmp(name, "vkCmdBindPipeline"))
5665 {
5666 return (void*)entry_vkCmdBindPipeline;
5667 }
5668 if (!strcmp(name, "vkCmdSetViewport"))
5669 {
5670 return (void*)entry_vkCmdSetViewport;
5671 }
5672 if (!strcmp(name, "vkCmdSetScissor"))
5673 {
5674 return (void*)entry_vkCmdSetScissor;
5675 }
5676 if (!strcmp(name, "vkCmdSetLineWidth"))
5677 {
5678 return (void*)entry_vkCmdSetLineWidth;
5679 }
5680 if (!strcmp(name, "vkCmdSetDepthBias"))
5681 {
5682 return (void*)entry_vkCmdSetDepthBias;
5683 }
5684 if (!strcmp(name, "vkCmdSetBlendConstants"))
5685 {
5686 return (void*)entry_vkCmdSetBlendConstants;
5687 }
5688 if (!strcmp(name, "vkCmdSetDepthBounds"))
5689 {
5690 return (void*)entry_vkCmdSetDepthBounds;
5691 }
5692 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
5693 {
5694 return (void*)entry_vkCmdSetStencilCompareMask;
5695 }
5696 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
5697 {
5698 return (void*)entry_vkCmdSetStencilWriteMask;
5699 }
5700 if (!strcmp(name, "vkCmdSetStencilReference"))
5701 {
5702 return (void*)entry_vkCmdSetStencilReference;
5703 }
5704 if (!strcmp(name, "vkCmdBindDescriptorSets"))
5705 {
5706 return (void*)entry_vkCmdBindDescriptorSets;
5707 }
5708 if (!strcmp(name, "vkCmdBindIndexBuffer"))
5709 {
5710 return (void*)entry_vkCmdBindIndexBuffer;
5711 }
5712 if (!strcmp(name, "vkCmdBindVertexBuffers"))
5713 {
5714 return (void*)entry_vkCmdBindVertexBuffers;
5715 }
5716 if (!strcmp(name, "vkCmdDraw"))
5717 {
5718 return (void*)entry_vkCmdDraw;
5719 }
5720 if (!strcmp(name, "vkCmdDrawIndexed"))
5721 {
5722 return (void*)entry_vkCmdDrawIndexed;
5723 }
5724 if (!strcmp(name, "vkCmdDrawIndirect"))
5725 {
5726 return (void*)entry_vkCmdDrawIndirect;
5727 }
5728 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
5729 {
5730 return (void*)entry_vkCmdDrawIndexedIndirect;
5731 }
5732 if (!strcmp(name, "vkCmdDispatch"))
5733 {
5734 return (void*)entry_vkCmdDispatch;
5735 }
5736 if (!strcmp(name, "vkCmdDispatchIndirect"))
5737 {
5738 return (void*)entry_vkCmdDispatchIndirect;
5739 }
5740 if (!strcmp(name, "vkCmdCopyBuffer"))
5741 {
5742 return (void*)entry_vkCmdCopyBuffer;
5743 }
5744 if (!strcmp(name, "vkCmdCopyImage"))
5745 {
5746 return (void*)entry_vkCmdCopyImage;
5747 }
5748 if (!strcmp(name, "vkCmdBlitImage"))
5749 {
5750 return (void*)entry_vkCmdBlitImage;
5751 }
5752 if (!strcmp(name, "vkCmdCopyBufferToImage"))
5753 {
5754 return (void*)entry_vkCmdCopyBufferToImage;
5755 }
5756 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
5757 {
5758 return (void*)entry_vkCmdCopyImageToBuffer;
5759 }
5760 if (!strcmp(name, "vkCmdUpdateBuffer"))
5761 {
5762 return (void*)entry_vkCmdUpdateBuffer;
5763 }
5764 if (!strcmp(name, "vkCmdFillBuffer"))
5765 {
5766 return (void*)entry_vkCmdFillBuffer;
5767 }
5768 if (!strcmp(name, "vkCmdClearColorImage"))
5769 {
5770 return (void*)entry_vkCmdClearColorImage;
5771 }
5772 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
5773 {
5774 return (void*)entry_vkCmdClearDepthStencilImage;
5775 }
5776 if (!strcmp(name, "vkCmdClearAttachments"))
5777 {
5778 return (void*)entry_vkCmdClearAttachments;
5779 }
5780 if (!strcmp(name, "vkCmdResolveImage"))
5781 {
5782 return (void*)entry_vkCmdResolveImage;
5783 }
5784 if (!strcmp(name, "vkCmdSetEvent"))
5785 {
5786 return (void*)entry_vkCmdSetEvent;
5787 }
5788 if (!strcmp(name, "vkCmdResetEvent"))
5789 {
5790 return (void*)entry_vkCmdResetEvent;
5791 }
5792 if (!strcmp(name, "vkCmdWaitEvents"))
5793 {
5794 return (void*)entry_vkCmdWaitEvents;
5795 }
5796 if (!strcmp(name, "vkCmdPipelineBarrier"))
5797 {
5798 return (void*)entry_vkCmdPipelineBarrier;
5799 }
5800 if (!strcmp(name, "vkCmdBeginQuery"))
5801 {
5802 return (void*)entry_vkCmdBeginQuery;
5803 }
5804 if (!strcmp(name, "vkCmdEndQuery"))
5805 {
5806 return (void*)entry_vkCmdEndQuery;
5807 }
5808 if (!strcmp(name, "vkCmdResetQueryPool"))
5809 {
5810 return (void*)entry_vkCmdResetQueryPool;
5811 }
5812 if (!strcmp(name, "vkCmdWriteTimestamp"))
5813 {
5814 return (void*)entry_vkCmdWriteTimestamp;
5815 }
5816 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
5817 {
5818 return (void*)entry_vkCmdCopyQueryPoolResults;
5819 }
5820 if (!strcmp(name, "vkCmdPushConstants"))
5821 {
5822 return (void*)entry_vkCmdPushConstants;
5823 }
5824 if (!strcmp(name, "vkCmdBeginRenderPass"))
5825 {
5826 return (void*)entry_vkCmdBeginRenderPass;
5827 }
5828 if (!strcmp(name, "vkCmdNextSubpass"))
5829 {
5830 return (void*)entry_vkCmdNextSubpass;
5831 }
5832 if (!strcmp(name, "vkCmdEndRenderPass"))
5833 {
5834 return (void*)entry_vkCmdEndRenderPass;
5835 }
5836 if (!strcmp(name, "vkCmdExecuteCommands"))
5837 {
5838 return (void*)entry_vkCmdExecuteCommands;
5839 }
5840#endif
5841#ifdef VK_VERSION_1_1
5842 if (!strcmp(name, "vkEnumerateInstanceVersion"))
5843 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005844 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005845 }
5846 if (!strcmp(name, "vkBindBufferMemory2"))
5847 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005848 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005849 }
5850 if (!strcmp(name, "vkBindImageMemory2"))
5851 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005852 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005853 }
5854 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
5855 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005856 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005857 }
5858 if (!strcmp(name, "vkCmdSetDeviceMask"))
5859 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005860 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005861 }
5862 if (!strcmp(name, "vkCmdDispatchBase"))
5863 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005864 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005865 }
5866 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
5867 {
Lingfeng Yang113689e2018-11-11 16:48:50 -08005868 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005869 }
5870 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
5871 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005872 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005873 }
5874 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
5875 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005876 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005877 }
5878 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
5879 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005880 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005881 }
5882 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
5883 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005884 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005885 }
5886 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
5887 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005888 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005889 }
5890 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
5891 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005892 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005893 }
5894 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
5895 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005896 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005897 }
5898 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
5899 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005900 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005901 }
5902 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
5903 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005904 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005905 }
5906 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
5907 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005908 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005909 }
5910 if (!strcmp(name, "vkTrimCommandPool"))
5911 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005912 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005913 }
5914 if (!strcmp(name, "vkGetDeviceQueue2"))
5915 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005916 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005917 }
5918 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
5919 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005920 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005921 }
5922 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
5923 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005924 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005925 }
5926 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
5927 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005928 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005929 }
5930 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
5931 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005932 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005933 }
5934 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
5935 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005936 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005937 }
5938 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
5939 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005940 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005941 }
5942 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
5943 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005944 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005945 }
5946 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
5947 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005948 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005949 }
5950 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
5951 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005952 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005953 }
5954#endif
5955#ifdef VK_KHR_surface
5956 if (!strcmp(name, "vkDestroySurfaceKHR"))
5957 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005958 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005959 }
5960 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
5961 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005962 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005963 }
5964 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
5965 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005966 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005967 }
5968 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
5969 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005970 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005971 }
5972 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
5973 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005974 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005975 }
5976#endif
5977#ifdef VK_KHR_swapchain
5978 if (!strcmp(name, "vkCreateSwapchainKHR"))
5979 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005980 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005981 }
5982 if (!strcmp(name, "vkDestroySwapchainKHR"))
5983 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005984 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005985 }
5986 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
5987 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005988 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005989 }
5990 if (!strcmp(name, "vkAcquireNextImageKHR"))
5991 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005992 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005993 }
5994 if (!strcmp(name, "vkQueuePresentKHR"))
5995 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005996 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005997 }
5998 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
5999 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006000 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006001 }
6002 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
6003 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006004 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006005 }
6006 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
6007 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006008 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006009 }
6010 if (!strcmp(name, "vkAcquireNextImage2KHR"))
6011 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006012 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006013 }
6014#endif
6015#ifdef VK_KHR_display
6016 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
6017 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006018 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006019 }
6020 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
6021 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006022 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006023 }
6024 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
6025 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006026 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006027 }
6028 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
6029 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006030 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006031 }
6032 if (!strcmp(name, "vkCreateDisplayModeKHR"))
6033 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006034 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006035 }
6036 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
6037 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006038 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006039 }
6040 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
6041 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006042 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006043 }
6044#endif
6045#ifdef VK_KHR_display_swapchain
6046 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
6047 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006048 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006049 }
6050#endif
6051#ifdef VK_KHR_xlib_surface
6052 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
6053 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006054 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006055 }
6056 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
6057 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006058 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006059 }
6060#endif
6061#ifdef VK_KHR_xcb_surface
6062 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
6063 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006064 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006065 }
6066 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
6067 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006068 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006069 }
6070#endif
6071#ifdef VK_KHR_wayland_surface
6072 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
6073 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006074 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006075 }
6076 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
6077 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006078 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006079 }
6080#endif
6081#ifdef VK_KHR_mir_surface
6082 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
6083 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006084 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006085 }
6086 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
6087 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006088 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006089 }
6090#endif
6091#ifdef VK_KHR_android_surface
6092 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
6093 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006094 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006095 }
6096#endif
6097#ifdef VK_KHR_win32_surface
6098 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
6099 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006100 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006101 }
6102 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
6103 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006104 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006105 }
6106#endif
6107#ifdef VK_KHR_get_physical_device_properties2
6108 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
6109 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006110 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006111 }
6112 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
6113 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006114 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006115 }
6116 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
6117 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006118 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006119 }
6120 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
6121 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006122 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006123 }
6124 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
6125 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006126 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006127 }
6128 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
6129 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006130 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006131 }
6132 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
6133 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006134 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006135 }
6136#endif
6137#ifdef VK_KHR_device_group
6138 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
6139 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006140 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006141 }
6142 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
6143 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006144 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006145 }
6146 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
6147 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006148 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006149 }
6150#endif
6151#ifdef VK_KHR_maintenance1
6152 if (!strcmp(name, "vkTrimCommandPoolKHR"))
6153 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006154 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006155 }
6156#endif
6157#ifdef VK_KHR_device_group_creation
6158 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
6159 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006160 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006161 }
6162#endif
6163#ifdef VK_KHR_external_memory_capabilities
6164 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
6165 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006166 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006167 }
6168#endif
6169#ifdef VK_KHR_external_memory_win32
6170 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
6171 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006172 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006173 }
6174 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
6175 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006176 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006177 }
6178#endif
6179#ifdef VK_KHR_external_memory_fd
6180 if (!strcmp(name, "vkGetMemoryFdKHR"))
6181 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006182 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006183 }
6184 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
6185 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006186 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006187 }
6188#endif
6189#ifdef VK_KHR_external_semaphore_capabilities
6190 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
6191 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006192 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006193 }
6194#endif
6195#ifdef VK_KHR_external_semaphore_win32
6196 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
6197 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006198 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006199 }
6200 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
6201 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006202 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006203 }
6204#endif
6205#ifdef VK_KHR_external_semaphore_fd
6206 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
6207 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006208 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006209 }
6210 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
6211 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006212 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006213 }
6214#endif
6215#ifdef VK_KHR_push_descriptor
6216 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
6217 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006218 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006219 }
6220 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
6221 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006222 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006223 }
6224#endif
6225#ifdef VK_KHR_descriptor_update_template
6226 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
6227 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006228 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006229 }
6230 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
6231 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006232 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006233 }
6234 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
6235 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006236 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006237 }
6238#endif
6239#ifdef VK_KHR_create_renderpass2
6240 if (!strcmp(name, "vkCreateRenderPass2KHR"))
6241 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006242 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006243 }
6244 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
6245 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006246 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006247 }
6248 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
6249 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006250 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006251 }
6252 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
6253 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006254 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006255 }
6256#endif
6257#ifdef VK_KHR_shared_presentable_image
6258 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
6259 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006260 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006261 }
6262#endif
6263#ifdef VK_KHR_external_fence_capabilities
6264 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
6265 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006266 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006267 }
6268#endif
6269#ifdef VK_KHR_external_fence_win32
6270 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
6271 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006272 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006273 }
6274 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
6275 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006276 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006277 }
6278#endif
6279#ifdef VK_KHR_external_fence_fd
6280 if (!strcmp(name, "vkImportFenceFdKHR"))
6281 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006282 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006283 }
6284 if (!strcmp(name, "vkGetFenceFdKHR"))
6285 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006286 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006287 }
6288#endif
6289#ifdef VK_KHR_get_surface_capabilities2
6290 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
6291 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006292 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006293 }
6294 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
6295 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006296 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006297 }
6298#endif
6299#ifdef VK_KHR_get_display_properties2
6300 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
6301 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006302 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006303 }
6304 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
6305 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006306 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006307 }
6308 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
6309 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006310 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006311 }
6312 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
6313 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006314 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006315 }
6316#endif
6317#ifdef VK_KHR_get_memory_requirements2
6318 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
6319 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006320 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006321 }
6322 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
6323 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006324 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006325 }
6326 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
6327 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006328 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006329 }
6330#endif
6331#ifdef VK_KHR_sampler_ycbcr_conversion
6332 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
6333 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006334 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006335 }
6336 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
6337 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006338 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006339 }
6340#endif
6341#ifdef VK_KHR_bind_memory2
6342 if (!strcmp(name, "vkBindBufferMemory2KHR"))
6343 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006344 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006345 }
6346 if (!strcmp(name, "vkBindImageMemory2KHR"))
6347 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006348 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006349 }
6350#endif
6351#ifdef VK_KHR_maintenance3
6352 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
6353 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006354 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006355 }
6356#endif
6357#ifdef VK_KHR_draw_indirect_count
6358 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
6359 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006360 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006361 }
6362 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
6363 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006364 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006365 }
6366#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08006367#ifdef VK_ANDROID_native_buffer
6368 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
6369 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006370 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006371 }
6372 if (!strcmp(name, "vkAcquireImageANDROID"))
6373 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006374 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006375 }
6376 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
6377 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006378 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006379 }
6380#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006381#ifdef VK_EXT_debug_report
6382 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
6383 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006384 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006385 }
6386 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
6387 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006388 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006389 }
6390 if (!strcmp(name, "vkDebugReportMessageEXT"))
6391 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006392 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006393 }
6394#endif
6395#ifdef VK_EXT_debug_marker
6396 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
6397 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006398 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006399 }
6400 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
6401 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006402 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006403 }
6404 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
6405 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006406 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006407 }
6408 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
6409 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006410 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006411 }
6412 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
6413 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006414 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006415 }
6416#endif
6417#ifdef VK_AMD_draw_indirect_count
6418 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
6419 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006420 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006421 }
6422 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
6423 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006424 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006425 }
6426#endif
6427#ifdef VK_AMD_shader_info
6428 if (!strcmp(name, "vkGetShaderInfoAMD"))
6429 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006430 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006431 }
6432#endif
6433#ifdef VK_NV_external_memory_capabilities
6434 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
6435 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006436 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006437 }
6438#endif
6439#ifdef VK_NV_external_memory_win32
6440 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
6441 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006442 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006443 }
6444#endif
6445#ifdef VK_NN_vi_surface
6446 if (!strcmp(name, "vkCreateViSurfaceNN"))
6447 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006448 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006449 }
6450#endif
6451#ifdef VK_EXT_conditional_rendering
6452 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
6453 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006454 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006455 }
6456 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
6457 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006458 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006459 }
6460#endif
6461#ifdef VK_NVX_device_generated_commands
6462 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
6463 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006464 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006465 }
6466 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
6467 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006468 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006469 }
6470 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
6471 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006472 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006473 }
6474 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
6475 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006476 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006477 }
6478 if (!strcmp(name, "vkCreateObjectTableNVX"))
6479 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006480 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006481 }
6482 if (!strcmp(name, "vkDestroyObjectTableNVX"))
6483 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006484 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006485 }
6486 if (!strcmp(name, "vkRegisterObjectsNVX"))
6487 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006488 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006489 }
6490 if (!strcmp(name, "vkUnregisterObjectsNVX"))
6491 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006492 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006493 }
6494 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
6495 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006496 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006497 }
6498#endif
6499#ifdef VK_NV_clip_space_w_scaling
6500 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
6501 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006502 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006503 }
6504#endif
6505#ifdef VK_EXT_direct_mode_display
6506 if (!strcmp(name, "vkReleaseDisplayEXT"))
6507 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006508 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006509 }
6510#endif
6511#ifdef VK_EXT_acquire_xlib_display
6512 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
6513 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006514 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006515 }
6516 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
6517 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006518 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006519 }
6520#endif
6521#ifdef VK_EXT_display_surface_counter
6522 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
6523 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006524 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006525 }
6526#endif
6527#ifdef VK_EXT_display_control
6528 if (!strcmp(name, "vkDisplayPowerControlEXT"))
6529 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006530 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006531 }
6532 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
6533 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006534 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006535 }
6536 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
6537 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006538 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006539 }
6540 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
6541 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006542 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006543 }
6544#endif
6545#ifdef VK_GOOGLE_display_timing
6546 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
6547 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006548 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006549 }
6550 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
6551 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006552 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006553 }
6554#endif
6555#ifdef VK_EXT_discard_rectangles
6556 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
6557 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006558 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006559 }
6560#endif
6561#ifdef VK_EXT_hdr_metadata
6562 if (!strcmp(name, "vkSetHdrMetadataEXT"))
6563 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006564 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006565 }
6566#endif
6567#ifdef VK_MVK_ios_surface
6568 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
6569 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006570 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006571 }
6572#endif
6573#ifdef VK_MVK_macos_surface
6574 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
6575 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006576 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006577 }
6578#endif
6579#ifdef VK_EXT_debug_utils
6580 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
6581 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006582 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006583 }
6584 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
6585 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006586 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006587 }
6588 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
6589 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006590 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006591 }
6592 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
6593 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006594 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006595 }
6596 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
6597 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006598 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006599 }
6600 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
6601 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006602 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006603 }
6604 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
6605 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006606 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006607 }
6608 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
6609 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006610 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006611 }
6612 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
6613 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006614 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006615 }
6616 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
6617 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006618 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006619 }
6620 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
6621 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006622 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006623 }
6624#endif
6625#ifdef VK_ANDROID_external_memory_android_hardware_buffer
6626 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
6627 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006628 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006629 }
6630 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
6631 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006632 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006633 }
6634#endif
6635#ifdef VK_EXT_sample_locations
6636 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
6637 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006638 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006639 }
6640 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
6641 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006642 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006643 }
6644#endif
6645#ifdef VK_EXT_validation_cache
6646 if (!strcmp(name, "vkCreateValidationCacheEXT"))
6647 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006648 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006649 }
6650 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
6651 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006652 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006653 }
6654 if (!strcmp(name, "vkMergeValidationCachesEXT"))
6655 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006656 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006657 }
6658 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
6659 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006660 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006661 }
6662#endif
6663#ifdef VK_EXT_external_memory_host
6664 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
6665 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006666 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006667 }
6668#endif
6669#ifdef VK_AMD_buffer_marker
6670 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
6671 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006672 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006673 }
6674#endif
6675#ifdef VK_NV_device_diagnostic_checkpoints
6676 if (!strcmp(name, "vkCmdSetCheckpointNV"))
6677 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006678 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006679 }
6680 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
6681 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006682 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006683 }
6684#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006685#ifdef VK_GOOGLE_address_space
6686 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
6687 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006688 return nullptr;
6689 }
6690#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006691#ifdef VK_GOOGLE_color_buffer
6692 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
6693 {
6694 return nullptr;
6695 }
6696 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
6697 {
6698 return nullptr;
6699 }
6700#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07006701#ifdef VK_GOOGLE_sized_descriptor_update_template
6702 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
6703 {
6704 return nullptr;
6705 }
6706#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006707#ifdef VK_GOOGLE_async_command_buffers
6708 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
6709 {
6710 return nullptr;
6711 }
6712 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
6713 {
6714 return nullptr;
6715 }
6716 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
6717 {
6718 return nullptr;
6719 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07006720 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
6721 {
6722 return nullptr;
6723 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006724#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00006725#ifdef VK_GOOGLE_create_resources_with_requirements
6726 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
6727 {
6728 return nullptr;
6729 }
6730 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
6731 {
6732 return nullptr;
6733 }
6734#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08006735#ifdef VK_GOOGLE_address_space_info
6736 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
6737 {
6738 return nullptr;
6739 }
6740#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07006741#ifdef VK_GOOGLE_free_memory_sync
6742 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
6743 {
6744 return nullptr;
6745 }
6746#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006747 return nullptr;
6748}
6749void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
6750 auto resources = ResourceTracker::get();
6751 bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
6752#ifdef VK_VERSION_1_0
6753 if (!strcmp(name, "vkCreateInstance"))
6754 {
6755 return (void*)entry_vkCreateInstance;
6756 }
6757 if (!strcmp(name, "vkDestroyInstance"))
6758 {
6759 return (void*)entry_vkDestroyInstance;
6760 }
6761 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
6762 {
6763 return (void*)entry_vkEnumeratePhysicalDevices;
6764 }
6765 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
6766 {
6767 return (void*)entry_vkGetPhysicalDeviceFeatures;
6768 }
6769 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
6770 {
6771 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
6772 }
6773 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
6774 {
6775 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
6776 }
6777 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
6778 {
6779 return (void*)entry_vkGetPhysicalDeviceProperties;
6780 }
6781 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
6782 {
6783 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
6784 }
6785 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
6786 {
6787 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
6788 }
6789 if (!strcmp(name, "vkGetInstanceProcAddr"))
6790 {
6791 return (void*)entry_vkGetInstanceProcAddr;
6792 }
6793 if (!strcmp(name, "vkGetDeviceProcAddr"))
6794 {
6795 return (void*)entry_vkGetDeviceProcAddr;
6796 }
6797 if (!strcmp(name, "vkCreateDevice"))
6798 {
6799 return (void*)entry_vkCreateDevice;
6800 }
6801 if (!strcmp(name, "vkDestroyDevice"))
6802 {
6803 return (void*)entry_vkDestroyDevice;
6804 }
6805 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
6806 {
6807 return (void*)entry_vkEnumerateInstanceExtensionProperties;
6808 }
6809 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
6810 {
6811 return (void*)entry_vkEnumerateDeviceExtensionProperties;
6812 }
6813 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
6814 {
6815 return (void*)entry_vkEnumerateInstanceLayerProperties;
6816 }
6817 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
6818 {
6819 return (void*)entry_vkEnumerateDeviceLayerProperties;
6820 }
6821 if (!strcmp(name, "vkGetDeviceQueue"))
6822 {
6823 return (void*)entry_vkGetDeviceQueue;
6824 }
6825 if (!strcmp(name, "vkQueueSubmit"))
6826 {
6827 return (void*)entry_vkQueueSubmit;
6828 }
6829 if (!strcmp(name, "vkQueueWaitIdle"))
6830 {
6831 return (void*)entry_vkQueueWaitIdle;
6832 }
6833 if (!strcmp(name, "vkDeviceWaitIdle"))
6834 {
6835 return (void*)entry_vkDeviceWaitIdle;
6836 }
6837 if (!strcmp(name, "vkAllocateMemory"))
6838 {
6839 return (void*)entry_vkAllocateMemory;
6840 }
6841 if (!strcmp(name, "vkFreeMemory"))
6842 {
6843 return (void*)entry_vkFreeMemory;
6844 }
6845 if (!strcmp(name, "vkMapMemory"))
6846 {
6847 return (void*)entry_vkMapMemory;
6848 }
6849 if (!strcmp(name, "vkUnmapMemory"))
6850 {
6851 return (void*)entry_vkUnmapMemory;
6852 }
6853 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
6854 {
6855 return (void*)entry_vkFlushMappedMemoryRanges;
6856 }
6857 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
6858 {
6859 return (void*)entry_vkInvalidateMappedMemoryRanges;
6860 }
6861 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
6862 {
6863 return (void*)entry_vkGetDeviceMemoryCommitment;
6864 }
6865 if (!strcmp(name, "vkBindBufferMemory"))
6866 {
6867 return (void*)entry_vkBindBufferMemory;
6868 }
6869 if (!strcmp(name, "vkBindImageMemory"))
6870 {
6871 return (void*)entry_vkBindImageMemory;
6872 }
6873 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
6874 {
6875 return (void*)entry_vkGetBufferMemoryRequirements;
6876 }
6877 if (!strcmp(name, "vkGetImageMemoryRequirements"))
6878 {
6879 return (void*)entry_vkGetImageMemoryRequirements;
6880 }
6881 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
6882 {
6883 return (void*)entry_vkGetImageSparseMemoryRequirements;
6884 }
6885 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
6886 {
6887 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
6888 }
6889 if (!strcmp(name, "vkQueueBindSparse"))
6890 {
6891 return (void*)entry_vkQueueBindSparse;
6892 }
6893 if (!strcmp(name, "vkCreateFence"))
6894 {
6895 return (void*)entry_vkCreateFence;
6896 }
6897 if (!strcmp(name, "vkDestroyFence"))
6898 {
6899 return (void*)entry_vkDestroyFence;
6900 }
6901 if (!strcmp(name, "vkResetFences"))
6902 {
6903 return (void*)entry_vkResetFences;
6904 }
6905 if (!strcmp(name, "vkGetFenceStatus"))
6906 {
6907 return (void*)entry_vkGetFenceStatus;
6908 }
6909 if (!strcmp(name, "vkWaitForFences"))
6910 {
6911 return (void*)entry_vkWaitForFences;
6912 }
6913 if (!strcmp(name, "vkCreateSemaphore"))
6914 {
6915 return (void*)entry_vkCreateSemaphore;
6916 }
6917 if (!strcmp(name, "vkDestroySemaphore"))
6918 {
6919 return (void*)entry_vkDestroySemaphore;
6920 }
6921 if (!strcmp(name, "vkCreateEvent"))
6922 {
6923 return (void*)entry_vkCreateEvent;
6924 }
6925 if (!strcmp(name, "vkDestroyEvent"))
6926 {
6927 return (void*)entry_vkDestroyEvent;
6928 }
6929 if (!strcmp(name, "vkGetEventStatus"))
6930 {
6931 return (void*)entry_vkGetEventStatus;
6932 }
6933 if (!strcmp(name, "vkSetEvent"))
6934 {
6935 return (void*)entry_vkSetEvent;
6936 }
6937 if (!strcmp(name, "vkResetEvent"))
6938 {
6939 return (void*)entry_vkResetEvent;
6940 }
6941 if (!strcmp(name, "vkCreateQueryPool"))
6942 {
6943 return (void*)entry_vkCreateQueryPool;
6944 }
6945 if (!strcmp(name, "vkDestroyQueryPool"))
6946 {
6947 return (void*)entry_vkDestroyQueryPool;
6948 }
6949 if (!strcmp(name, "vkGetQueryPoolResults"))
6950 {
6951 return (void*)entry_vkGetQueryPoolResults;
6952 }
6953 if (!strcmp(name, "vkCreateBuffer"))
6954 {
6955 return (void*)entry_vkCreateBuffer;
6956 }
6957 if (!strcmp(name, "vkDestroyBuffer"))
6958 {
6959 return (void*)entry_vkDestroyBuffer;
6960 }
6961 if (!strcmp(name, "vkCreateBufferView"))
6962 {
6963 return (void*)entry_vkCreateBufferView;
6964 }
6965 if (!strcmp(name, "vkDestroyBufferView"))
6966 {
6967 return (void*)entry_vkDestroyBufferView;
6968 }
6969 if (!strcmp(name, "vkCreateImage"))
6970 {
6971 return (void*)entry_vkCreateImage;
6972 }
6973 if (!strcmp(name, "vkDestroyImage"))
6974 {
6975 return (void*)entry_vkDestroyImage;
6976 }
6977 if (!strcmp(name, "vkGetImageSubresourceLayout"))
6978 {
6979 return (void*)entry_vkGetImageSubresourceLayout;
6980 }
6981 if (!strcmp(name, "vkCreateImageView"))
6982 {
6983 return (void*)entry_vkCreateImageView;
6984 }
6985 if (!strcmp(name, "vkDestroyImageView"))
6986 {
6987 return (void*)entry_vkDestroyImageView;
6988 }
6989 if (!strcmp(name, "vkCreateShaderModule"))
6990 {
6991 return (void*)entry_vkCreateShaderModule;
6992 }
6993 if (!strcmp(name, "vkDestroyShaderModule"))
6994 {
6995 return (void*)entry_vkDestroyShaderModule;
6996 }
6997 if (!strcmp(name, "vkCreatePipelineCache"))
6998 {
6999 return (void*)entry_vkCreatePipelineCache;
7000 }
7001 if (!strcmp(name, "vkDestroyPipelineCache"))
7002 {
7003 return (void*)entry_vkDestroyPipelineCache;
7004 }
7005 if (!strcmp(name, "vkGetPipelineCacheData"))
7006 {
7007 return (void*)entry_vkGetPipelineCacheData;
7008 }
7009 if (!strcmp(name, "vkMergePipelineCaches"))
7010 {
7011 return (void*)entry_vkMergePipelineCaches;
7012 }
7013 if (!strcmp(name, "vkCreateGraphicsPipelines"))
7014 {
7015 return (void*)entry_vkCreateGraphicsPipelines;
7016 }
7017 if (!strcmp(name, "vkCreateComputePipelines"))
7018 {
7019 return (void*)entry_vkCreateComputePipelines;
7020 }
7021 if (!strcmp(name, "vkDestroyPipeline"))
7022 {
7023 return (void*)entry_vkDestroyPipeline;
7024 }
7025 if (!strcmp(name, "vkCreatePipelineLayout"))
7026 {
7027 return (void*)entry_vkCreatePipelineLayout;
7028 }
7029 if (!strcmp(name, "vkDestroyPipelineLayout"))
7030 {
7031 return (void*)entry_vkDestroyPipelineLayout;
7032 }
7033 if (!strcmp(name, "vkCreateSampler"))
7034 {
7035 return (void*)entry_vkCreateSampler;
7036 }
7037 if (!strcmp(name, "vkDestroySampler"))
7038 {
7039 return (void*)entry_vkDestroySampler;
7040 }
7041 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
7042 {
7043 return (void*)entry_vkCreateDescriptorSetLayout;
7044 }
7045 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
7046 {
7047 return (void*)entry_vkDestroyDescriptorSetLayout;
7048 }
7049 if (!strcmp(name, "vkCreateDescriptorPool"))
7050 {
7051 return (void*)entry_vkCreateDescriptorPool;
7052 }
7053 if (!strcmp(name, "vkDestroyDescriptorPool"))
7054 {
7055 return (void*)entry_vkDestroyDescriptorPool;
7056 }
7057 if (!strcmp(name, "vkResetDescriptorPool"))
7058 {
7059 return (void*)entry_vkResetDescriptorPool;
7060 }
7061 if (!strcmp(name, "vkAllocateDescriptorSets"))
7062 {
7063 return (void*)entry_vkAllocateDescriptorSets;
7064 }
7065 if (!strcmp(name, "vkFreeDescriptorSets"))
7066 {
7067 return (void*)entry_vkFreeDescriptorSets;
7068 }
7069 if (!strcmp(name, "vkUpdateDescriptorSets"))
7070 {
7071 return (void*)entry_vkUpdateDescriptorSets;
7072 }
7073 if (!strcmp(name, "vkCreateFramebuffer"))
7074 {
7075 return (void*)entry_vkCreateFramebuffer;
7076 }
7077 if (!strcmp(name, "vkDestroyFramebuffer"))
7078 {
7079 return (void*)entry_vkDestroyFramebuffer;
7080 }
7081 if (!strcmp(name, "vkCreateRenderPass"))
7082 {
7083 return (void*)entry_vkCreateRenderPass;
7084 }
7085 if (!strcmp(name, "vkDestroyRenderPass"))
7086 {
7087 return (void*)entry_vkDestroyRenderPass;
7088 }
7089 if (!strcmp(name, "vkGetRenderAreaGranularity"))
7090 {
7091 return (void*)entry_vkGetRenderAreaGranularity;
7092 }
7093 if (!strcmp(name, "vkCreateCommandPool"))
7094 {
7095 return (void*)entry_vkCreateCommandPool;
7096 }
7097 if (!strcmp(name, "vkDestroyCommandPool"))
7098 {
7099 return (void*)entry_vkDestroyCommandPool;
7100 }
7101 if (!strcmp(name, "vkResetCommandPool"))
7102 {
7103 return (void*)entry_vkResetCommandPool;
7104 }
7105 if (!strcmp(name, "vkAllocateCommandBuffers"))
7106 {
7107 return (void*)entry_vkAllocateCommandBuffers;
7108 }
7109 if (!strcmp(name, "vkFreeCommandBuffers"))
7110 {
7111 return (void*)entry_vkFreeCommandBuffers;
7112 }
7113 if (!strcmp(name, "vkBeginCommandBuffer"))
7114 {
7115 return (void*)entry_vkBeginCommandBuffer;
7116 }
7117 if (!strcmp(name, "vkEndCommandBuffer"))
7118 {
7119 return (void*)entry_vkEndCommandBuffer;
7120 }
7121 if (!strcmp(name, "vkResetCommandBuffer"))
7122 {
7123 return (void*)entry_vkResetCommandBuffer;
7124 }
7125 if (!strcmp(name, "vkCmdBindPipeline"))
7126 {
7127 return (void*)entry_vkCmdBindPipeline;
7128 }
7129 if (!strcmp(name, "vkCmdSetViewport"))
7130 {
7131 return (void*)entry_vkCmdSetViewport;
7132 }
7133 if (!strcmp(name, "vkCmdSetScissor"))
7134 {
7135 return (void*)entry_vkCmdSetScissor;
7136 }
7137 if (!strcmp(name, "vkCmdSetLineWidth"))
7138 {
7139 return (void*)entry_vkCmdSetLineWidth;
7140 }
7141 if (!strcmp(name, "vkCmdSetDepthBias"))
7142 {
7143 return (void*)entry_vkCmdSetDepthBias;
7144 }
7145 if (!strcmp(name, "vkCmdSetBlendConstants"))
7146 {
7147 return (void*)entry_vkCmdSetBlendConstants;
7148 }
7149 if (!strcmp(name, "vkCmdSetDepthBounds"))
7150 {
7151 return (void*)entry_vkCmdSetDepthBounds;
7152 }
7153 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
7154 {
7155 return (void*)entry_vkCmdSetStencilCompareMask;
7156 }
7157 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
7158 {
7159 return (void*)entry_vkCmdSetStencilWriteMask;
7160 }
7161 if (!strcmp(name, "vkCmdSetStencilReference"))
7162 {
7163 return (void*)entry_vkCmdSetStencilReference;
7164 }
7165 if (!strcmp(name, "vkCmdBindDescriptorSets"))
7166 {
7167 return (void*)entry_vkCmdBindDescriptorSets;
7168 }
7169 if (!strcmp(name, "vkCmdBindIndexBuffer"))
7170 {
7171 return (void*)entry_vkCmdBindIndexBuffer;
7172 }
7173 if (!strcmp(name, "vkCmdBindVertexBuffers"))
7174 {
7175 return (void*)entry_vkCmdBindVertexBuffers;
7176 }
7177 if (!strcmp(name, "vkCmdDraw"))
7178 {
7179 return (void*)entry_vkCmdDraw;
7180 }
7181 if (!strcmp(name, "vkCmdDrawIndexed"))
7182 {
7183 return (void*)entry_vkCmdDrawIndexed;
7184 }
7185 if (!strcmp(name, "vkCmdDrawIndirect"))
7186 {
7187 return (void*)entry_vkCmdDrawIndirect;
7188 }
7189 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
7190 {
7191 return (void*)entry_vkCmdDrawIndexedIndirect;
7192 }
7193 if (!strcmp(name, "vkCmdDispatch"))
7194 {
7195 return (void*)entry_vkCmdDispatch;
7196 }
7197 if (!strcmp(name, "vkCmdDispatchIndirect"))
7198 {
7199 return (void*)entry_vkCmdDispatchIndirect;
7200 }
7201 if (!strcmp(name, "vkCmdCopyBuffer"))
7202 {
7203 return (void*)entry_vkCmdCopyBuffer;
7204 }
7205 if (!strcmp(name, "vkCmdCopyImage"))
7206 {
7207 return (void*)entry_vkCmdCopyImage;
7208 }
7209 if (!strcmp(name, "vkCmdBlitImage"))
7210 {
7211 return (void*)entry_vkCmdBlitImage;
7212 }
7213 if (!strcmp(name, "vkCmdCopyBufferToImage"))
7214 {
7215 return (void*)entry_vkCmdCopyBufferToImage;
7216 }
7217 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
7218 {
7219 return (void*)entry_vkCmdCopyImageToBuffer;
7220 }
7221 if (!strcmp(name, "vkCmdUpdateBuffer"))
7222 {
7223 return (void*)entry_vkCmdUpdateBuffer;
7224 }
7225 if (!strcmp(name, "vkCmdFillBuffer"))
7226 {
7227 return (void*)entry_vkCmdFillBuffer;
7228 }
7229 if (!strcmp(name, "vkCmdClearColorImage"))
7230 {
7231 return (void*)entry_vkCmdClearColorImage;
7232 }
7233 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
7234 {
7235 return (void*)entry_vkCmdClearDepthStencilImage;
7236 }
7237 if (!strcmp(name, "vkCmdClearAttachments"))
7238 {
7239 return (void*)entry_vkCmdClearAttachments;
7240 }
7241 if (!strcmp(name, "vkCmdResolveImage"))
7242 {
7243 return (void*)entry_vkCmdResolveImage;
7244 }
7245 if (!strcmp(name, "vkCmdSetEvent"))
7246 {
7247 return (void*)entry_vkCmdSetEvent;
7248 }
7249 if (!strcmp(name, "vkCmdResetEvent"))
7250 {
7251 return (void*)entry_vkCmdResetEvent;
7252 }
7253 if (!strcmp(name, "vkCmdWaitEvents"))
7254 {
7255 return (void*)entry_vkCmdWaitEvents;
7256 }
7257 if (!strcmp(name, "vkCmdPipelineBarrier"))
7258 {
7259 return (void*)entry_vkCmdPipelineBarrier;
7260 }
7261 if (!strcmp(name, "vkCmdBeginQuery"))
7262 {
7263 return (void*)entry_vkCmdBeginQuery;
7264 }
7265 if (!strcmp(name, "vkCmdEndQuery"))
7266 {
7267 return (void*)entry_vkCmdEndQuery;
7268 }
7269 if (!strcmp(name, "vkCmdResetQueryPool"))
7270 {
7271 return (void*)entry_vkCmdResetQueryPool;
7272 }
7273 if (!strcmp(name, "vkCmdWriteTimestamp"))
7274 {
7275 return (void*)entry_vkCmdWriteTimestamp;
7276 }
7277 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
7278 {
7279 return (void*)entry_vkCmdCopyQueryPoolResults;
7280 }
7281 if (!strcmp(name, "vkCmdPushConstants"))
7282 {
7283 return (void*)entry_vkCmdPushConstants;
7284 }
7285 if (!strcmp(name, "vkCmdBeginRenderPass"))
7286 {
7287 return (void*)entry_vkCmdBeginRenderPass;
7288 }
7289 if (!strcmp(name, "vkCmdNextSubpass"))
7290 {
7291 return (void*)entry_vkCmdNextSubpass;
7292 }
7293 if (!strcmp(name, "vkCmdEndRenderPass"))
7294 {
7295 return (void*)entry_vkCmdEndRenderPass;
7296 }
7297 if (!strcmp(name, "vkCmdExecuteCommands"))
7298 {
7299 return (void*)entry_vkCmdExecuteCommands;
7300 }
7301#endif
7302#ifdef VK_VERSION_1_1
7303 if (!strcmp(name, "vkEnumerateInstanceVersion"))
7304 {
7305 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
7306 }
7307 if (!strcmp(name, "vkBindBufferMemory2"))
7308 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007309 return (void*)dynCheck_entry_vkBindBufferMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007310 }
7311 if (!strcmp(name, "vkBindImageMemory2"))
7312 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007313 return (void*)dynCheck_entry_vkBindImageMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007314 }
7315 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
7316 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007317 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007318 }
7319 if (!strcmp(name, "vkCmdSetDeviceMask"))
7320 {
7321 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
7322 }
7323 if (!strcmp(name, "vkCmdDispatchBase"))
7324 {
7325 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
7326 }
7327 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
7328 {
7329 return nullptr;
7330 }
7331 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
7332 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007333 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007334 }
7335 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
7336 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007337 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007338 }
7339 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
7340 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007341 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007342 }
7343 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
7344 {
7345 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
7346 }
7347 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
7348 {
7349 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
7350 }
7351 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
7352 {
7353 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
7354 }
7355 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
7356 {
7357 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
7358 }
7359 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
7360 {
7361 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
7362 }
7363 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
7364 {
7365 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
7366 }
7367 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
7368 {
7369 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
7370 }
7371 if (!strcmp(name, "vkTrimCommandPool"))
7372 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007373 return (void*)dynCheck_entry_vkTrimCommandPool;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007374 }
7375 if (!strcmp(name, "vkGetDeviceQueue2"))
7376 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007377 return (void*)dynCheck_entry_vkGetDeviceQueue2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007378 }
7379 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
7380 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007381 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007382 }
7383 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
7384 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007385 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007386 }
7387 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
7388 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007389 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007390 }
7391 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
7392 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007393 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007394 }
7395 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
7396 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007397 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007398 }
7399 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
7400 {
7401 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
7402 }
7403 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
7404 {
7405 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
7406 }
7407 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
7408 {
7409 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
7410 }
7411 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
7412 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007413 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007414 }
7415#endif
7416#ifdef VK_KHR_surface
7417 if (!strcmp(name, "vkDestroySurfaceKHR"))
7418 {
7419 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7420 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
7421 }
7422 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
7423 {
7424 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7425 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
7426 }
7427 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
7428 {
7429 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7430 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
7431 }
7432 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
7433 {
7434 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7435 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
7436 }
7437 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
7438 {
7439 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7440 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
7441 }
7442#endif
7443#ifdef VK_KHR_swapchain
7444 if (!strcmp(name, "vkCreateSwapchainKHR"))
7445 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007446 return (void*)dynCheck_entry_vkCreateSwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007447 }
7448 if (!strcmp(name, "vkDestroySwapchainKHR"))
7449 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007450 return (void*)dynCheck_entry_vkDestroySwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007451 }
7452 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
7453 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007454 return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007455 }
7456 if (!strcmp(name, "vkAcquireNextImageKHR"))
7457 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007458 return (void*)dynCheck_entry_vkAcquireNextImageKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007459 }
7460 if (!strcmp(name, "vkQueuePresentKHR"))
7461 {
7462 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7463 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
7464 }
7465 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
7466 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007467 return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007468 }
7469 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
7470 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007471 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007472 }
7473 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
7474 {
7475 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7476 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
7477 }
7478 if (!strcmp(name, "vkAcquireNextImage2KHR"))
7479 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007480 return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007481 }
7482#endif
7483#ifdef VK_KHR_display
7484 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
7485 {
7486 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7487 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
7488 }
7489 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
7490 {
7491 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7492 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
7493 }
7494 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
7495 {
7496 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7497 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
7498 }
7499 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
7500 {
7501 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7502 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
7503 }
7504 if (!strcmp(name, "vkCreateDisplayModeKHR"))
7505 {
7506 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7507 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
7508 }
7509 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
7510 {
7511 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7512 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
7513 }
7514 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
7515 {
7516 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7517 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
7518 }
7519#endif
7520#ifdef VK_KHR_display_swapchain
7521 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
7522 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007523 return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007524 }
7525#endif
7526#ifdef VK_KHR_xlib_surface
7527 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
7528 {
7529 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7530 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
7531 }
7532 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
7533 {
7534 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7535 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
7536 }
7537#endif
7538#ifdef VK_KHR_xcb_surface
7539 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
7540 {
7541 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7542 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
7543 }
7544 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
7545 {
7546 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7547 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
7548 }
7549#endif
7550#ifdef VK_KHR_wayland_surface
7551 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
7552 {
7553 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7554 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
7555 }
7556 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
7557 {
7558 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7559 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
7560 }
7561#endif
7562#ifdef VK_KHR_mir_surface
7563 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
7564 {
7565 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7566 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
7567 }
7568 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
7569 {
7570 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7571 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
7572 }
7573#endif
7574#ifdef VK_KHR_android_surface
7575 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
7576 {
7577 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
7578 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
7579 }
7580#endif
7581#ifdef VK_KHR_win32_surface
7582 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
7583 {
7584 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7585 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
7586 }
7587 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
7588 {
7589 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7590 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
7591 }
7592#endif
7593#ifdef VK_KHR_get_physical_device_properties2
7594 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
7595 {
7596 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7597 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
7598 }
7599 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
7600 {
7601 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7602 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
7603 }
7604 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
7605 {
7606 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7607 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
7608 }
7609 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
7610 {
7611 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7612 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
7613 }
7614 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
7615 {
7616 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7617 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
7618 }
7619 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
7620 {
7621 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7622 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
7623 }
7624 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
7625 {
7626 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7627 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
7628 }
7629#endif
7630#ifdef VK_KHR_device_group
7631 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
7632 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007633 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007634 }
7635 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
7636 {
7637 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7638 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
7639 }
7640 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
7641 {
7642 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7643 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
7644 }
7645#endif
7646#ifdef VK_KHR_maintenance1
7647 if (!strcmp(name, "vkTrimCommandPoolKHR"))
7648 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007649 return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007650 }
7651#endif
7652#ifdef VK_KHR_device_group_creation
7653 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
7654 {
7655 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
7656 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
7657 }
7658#endif
7659#ifdef VK_KHR_external_memory_capabilities
7660 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
7661 {
7662 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
7663 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
7664 }
7665#endif
7666#ifdef VK_KHR_external_memory_win32
7667 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
7668 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007669 return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007670 }
7671 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
7672 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007673 return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007674 }
7675#endif
7676#ifdef VK_KHR_external_memory_fd
7677 if (!strcmp(name, "vkGetMemoryFdKHR"))
7678 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007679 return (void*)dynCheck_entry_vkGetMemoryFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007680 }
7681 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
7682 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007683 return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007684 }
7685#endif
7686#ifdef VK_KHR_external_semaphore_capabilities
7687 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
7688 {
7689 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
7690 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
7691 }
7692#endif
7693#ifdef VK_KHR_external_semaphore_win32
7694 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
7695 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007696 return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007697 }
7698 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
7699 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007700 return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007701 }
7702#endif
7703#ifdef VK_KHR_external_semaphore_fd
7704 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
7705 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007706 return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007707 }
7708 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
7709 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007710 return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007711 }
7712#endif
7713#ifdef VK_KHR_push_descriptor
7714 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
7715 {
7716 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7717 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
7718 }
7719 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
7720 {
7721 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7722 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
7723 }
7724#endif
7725#ifdef VK_KHR_descriptor_update_template
7726 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
7727 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007728 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007729 }
7730 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
7731 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007732 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007733 }
7734 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
7735 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007736 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007737 }
7738#endif
7739#ifdef VK_KHR_create_renderpass2
7740 if (!strcmp(name, "vkCreateRenderPass2KHR"))
7741 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007742 return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007743 }
7744 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
7745 {
7746 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7747 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
7748 }
7749 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
7750 {
7751 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7752 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
7753 }
7754 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
7755 {
7756 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7757 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
7758 }
7759#endif
7760#ifdef VK_KHR_shared_presentable_image
7761 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
7762 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007763 return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007764 }
7765#endif
7766#ifdef VK_KHR_external_fence_capabilities
7767 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
7768 {
7769 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
7770 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
7771 }
7772#endif
7773#ifdef VK_KHR_external_fence_win32
7774 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
7775 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007776 return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007777 }
7778 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
7779 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007780 return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007781 }
7782#endif
7783#ifdef VK_KHR_external_fence_fd
7784 if (!strcmp(name, "vkImportFenceFdKHR"))
7785 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007786 return (void*)dynCheck_entry_vkImportFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007787 }
7788 if (!strcmp(name, "vkGetFenceFdKHR"))
7789 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007790 return (void*)dynCheck_entry_vkGetFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007791 }
7792#endif
7793#ifdef VK_KHR_get_surface_capabilities2
7794 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
7795 {
7796 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7797 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
7798 }
7799 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
7800 {
7801 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7802 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
7803 }
7804#endif
7805#ifdef VK_KHR_get_display_properties2
7806 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
7807 {
7808 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7809 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
7810 }
7811 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
7812 {
7813 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7814 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
7815 }
7816 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
7817 {
7818 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7819 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
7820 }
7821 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
7822 {
7823 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7824 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
7825 }
7826#endif
7827#ifdef VK_KHR_get_memory_requirements2
7828 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
7829 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007830 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007831 }
7832 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
7833 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007834 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007835 }
7836 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
7837 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007838 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007839 }
7840#endif
7841#ifdef VK_KHR_sampler_ycbcr_conversion
7842 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
7843 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007844 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007845 }
7846 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
7847 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007848 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007849 }
7850#endif
7851#ifdef VK_KHR_bind_memory2
7852 if (!strcmp(name, "vkBindBufferMemory2KHR"))
7853 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007854 return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007855 }
7856 if (!strcmp(name, "vkBindImageMemory2KHR"))
7857 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007858 return (void*)dynCheck_entry_vkBindImageMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007859 }
7860#endif
7861#ifdef VK_KHR_maintenance3
7862 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
7863 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007864 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007865 }
7866#endif
7867#ifdef VK_KHR_draw_indirect_count
7868 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
7869 {
7870 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
7871 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
7872 }
7873 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
7874 {
7875 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
7876 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
7877 }
7878#endif
7879#ifdef VK_ANDROID_native_buffer
7880 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
7881 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007882 return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007883 }
7884 if (!strcmp(name, "vkAcquireImageANDROID"))
7885 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007886 return (void*)dynCheck_entry_vkAcquireImageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007887 }
7888 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
7889 {
7890 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
7891 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
7892 }
7893#endif
7894#ifdef VK_EXT_debug_report
7895 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
7896 {
7897 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7898 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
7899 }
7900 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
7901 {
7902 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7903 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
7904 }
7905 if (!strcmp(name, "vkDebugReportMessageEXT"))
7906 {
7907 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7908 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
7909 }
7910#endif
7911#ifdef VK_EXT_debug_marker
7912 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
7913 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007914 return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007915 }
7916 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
7917 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007918 return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007919 }
7920 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
7921 {
7922 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
7923 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
7924 }
7925 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
7926 {
7927 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
7928 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
7929 }
7930 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
7931 {
7932 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
7933 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
7934 }
7935#endif
7936#ifdef VK_AMD_draw_indirect_count
7937 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
7938 {
7939 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
7940 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
7941 }
7942 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
7943 {
7944 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
7945 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
7946 }
7947#endif
7948#ifdef VK_AMD_shader_info
7949 if (!strcmp(name, "vkGetShaderInfoAMD"))
7950 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007951 return (void*)dynCheck_entry_vkGetShaderInfoAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007952 }
7953#endif
7954#ifdef VK_NV_external_memory_capabilities
7955 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
7956 {
7957 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
7958 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
7959 }
7960#endif
7961#ifdef VK_NV_external_memory_win32
7962 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
7963 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007964 return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007965 }
7966#endif
7967#ifdef VK_NN_vi_surface
7968 if (!strcmp(name, "vkCreateViSurfaceNN"))
7969 {
7970 bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
7971 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
7972 }
7973#endif
7974#ifdef VK_EXT_conditional_rendering
7975 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
7976 {
7977 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
7978 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
7979 }
7980 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
7981 {
7982 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
7983 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
7984 }
7985#endif
7986#ifdef VK_NVX_device_generated_commands
7987 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
7988 {
7989 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
7990 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
7991 }
7992 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
7993 {
7994 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
7995 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
7996 }
7997 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
7998 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007999 return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008000 }
8001 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
8002 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008003 return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008004 }
8005 if (!strcmp(name, "vkCreateObjectTableNVX"))
8006 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008007 return (void*)dynCheck_entry_vkCreateObjectTableNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008008 }
8009 if (!strcmp(name, "vkDestroyObjectTableNVX"))
8010 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008011 return (void*)dynCheck_entry_vkDestroyObjectTableNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008012 }
8013 if (!strcmp(name, "vkRegisterObjectsNVX"))
8014 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008015 return (void*)dynCheck_entry_vkRegisterObjectsNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008016 }
8017 if (!strcmp(name, "vkUnregisterObjectsNVX"))
8018 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008019 return (void*)dynCheck_entry_vkUnregisterObjectsNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008020 }
8021 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
8022 {
8023 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
8024 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
8025 }
8026#endif
8027#ifdef VK_NV_clip_space_w_scaling
8028 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
8029 {
8030 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling");
8031 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
8032 }
8033#endif
8034#ifdef VK_EXT_direct_mode_display
8035 if (!strcmp(name, "vkReleaseDisplayEXT"))
8036 {
8037 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
8038 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
8039 }
8040#endif
8041#ifdef VK_EXT_acquire_xlib_display
8042 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
8043 {
8044 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
8045 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
8046 }
8047 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
8048 {
8049 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
8050 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
8051 }
8052#endif
8053#ifdef VK_EXT_display_surface_counter
8054 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
8055 {
8056 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
8057 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
8058 }
8059#endif
8060#ifdef VK_EXT_display_control
8061 if (!strcmp(name, "vkDisplayPowerControlEXT"))
8062 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008063 return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008064 }
8065 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
8066 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008067 return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008068 }
8069 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
8070 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008071 return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008072 }
8073 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
8074 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008075 return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008076 }
8077#endif
8078#ifdef VK_GOOGLE_display_timing
8079 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
8080 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008081 return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008082 }
8083 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
8084 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008085 return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008086 }
8087#endif
8088#ifdef VK_EXT_discard_rectangles
8089 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
8090 {
8091 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles");
8092 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
8093 }
8094#endif
8095#ifdef VK_EXT_hdr_metadata
8096 if (!strcmp(name, "vkSetHdrMetadataEXT"))
8097 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008098 return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008099 }
8100#endif
8101#ifdef VK_MVK_ios_surface
8102 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
8103 {
8104 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
8105 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
8106 }
8107#endif
8108#ifdef VK_MVK_macos_surface
8109 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
8110 {
8111 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
8112 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
8113 }
8114#endif
8115#ifdef VK_EXT_debug_utils
8116 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
8117 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008118 return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008119 }
8120 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
8121 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008122 return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008123 }
8124 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
8125 {
8126 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8127 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
8128 }
8129 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
8130 {
8131 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8132 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
8133 }
8134 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
8135 {
8136 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8137 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
8138 }
8139 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
8140 {
8141 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8142 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
8143 }
8144 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
8145 {
8146 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8147 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
8148 }
8149 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
8150 {
8151 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8152 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
8153 }
8154 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
8155 {
8156 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8157 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
8158 }
8159 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
8160 {
8161 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8162 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
8163 }
8164 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
8165 {
8166 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8167 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
8168 }
8169#endif
8170#ifdef VK_ANDROID_external_memory_android_hardware_buffer
8171 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
8172 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008173 return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008174 }
8175 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
8176 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008177 return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008178 }
8179#endif
8180#ifdef VK_EXT_sample_locations
8181 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
8182 {
8183 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8184 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
8185 }
8186 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
8187 {
8188 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8189 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
8190 }
8191#endif
8192#ifdef VK_EXT_validation_cache
8193 if (!strcmp(name, "vkCreateValidationCacheEXT"))
8194 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008195 return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008196 }
8197 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
8198 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008199 return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008200 }
8201 if (!strcmp(name, "vkMergeValidationCachesEXT"))
8202 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008203 return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008204 }
8205 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
8206 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008207 return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008208 }
8209#endif
8210#ifdef VK_EXT_external_memory_host
8211 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
8212 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008213 return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008214 }
8215#endif
8216#ifdef VK_AMD_buffer_marker
8217 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
8218 {
8219 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker");
8220 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
8221 }
8222#endif
8223#ifdef VK_NV_device_diagnostic_checkpoints
8224 if (!strcmp(name, "vkCmdSetCheckpointNV"))
8225 {
8226 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8227 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
8228 }
8229 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
8230 {
8231 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8232 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
8233 }
8234#endif
8235#ifdef VK_GOOGLE_address_space
8236 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
8237 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008238 return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008239 }
8240#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008241#ifdef VK_GOOGLE_color_buffer
8242 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
8243 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008244 return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008245 }
8246 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
8247 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008248 return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008249 }
8250#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008251#ifdef VK_GOOGLE_sized_descriptor_update_template
8252 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
8253 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008254 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008255 }
8256#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008257#ifdef VK_GOOGLE_async_command_buffers
8258 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
8259 {
8260 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8261 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
8262 }
8263 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
8264 {
8265 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8266 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
8267 }
8268 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
8269 {
8270 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8271 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
8272 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07008273 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
8274 {
8275 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8276 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
8277 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008278#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00008279#ifdef VK_GOOGLE_create_resources_with_requirements
8280 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
8281 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008282 return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +00008283 }
8284 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
8285 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008286 return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +00008287 }
8288#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08008289#ifdef VK_GOOGLE_address_space_info
8290 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
8291 {
8292 return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE;
8293 }
8294#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07008295#ifdef VK_GOOGLE_free_memory_sync
8296 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
8297 {
8298 return (void*)dynCheck_entry_vkFreeMemorySyncGOOGLE;
8299 }
8300#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008301 return nullptr;
8302}
8303void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
8304 auto resources = ResourceTracker::get();
8305 bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
8306#ifdef VK_VERSION_1_0
8307 if (!strcmp(name, "vkCreateInstance"))
8308 {
8309 return (void*)entry_vkCreateInstance;
8310 }
8311 if (!strcmp(name, "vkDestroyInstance"))
8312 {
8313 return (void*)entry_vkDestroyInstance;
8314 }
8315 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
8316 {
8317 return (void*)entry_vkEnumeratePhysicalDevices;
8318 }
8319 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
8320 {
8321 return (void*)entry_vkGetPhysicalDeviceFeatures;
8322 }
8323 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
8324 {
8325 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
8326 }
8327 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
8328 {
8329 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
8330 }
8331 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
8332 {
8333 return (void*)entry_vkGetPhysicalDeviceProperties;
8334 }
8335 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
8336 {
8337 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
8338 }
8339 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
8340 {
8341 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
8342 }
8343 if (!strcmp(name, "vkGetInstanceProcAddr"))
8344 {
8345 return (void*)entry_vkGetInstanceProcAddr;
8346 }
8347 if (!strcmp(name, "vkGetDeviceProcAddr"))
8348 {
8349 return (void*)entry_vkGetDeviceProcAddr;
8350 }
8351 if (!strcmp(name, "vkCreateDevice"))
8352 {
8353 return (void*)entry_vkCreateDevice;
8354 }
8355 if (!strcmp(name, "vkDestroyDevice"))
8356 {
8357 return (void*)entry_vkDestroyDevice;
8358 }
8359 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
8360 {
8361 return (void*)entry_vkEnumerateInstanceExtensionProperties;
8362 }
8363 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
8364 {
8365 return (void*)entry_vkEnumerateDeviceExtensionProperties;
8366 }
8367 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
8368 {
8369 return (void*)entry_vkEnumerateInstanceLayerProperties;
8370 }
8371 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
8372 {
8373 return (void*)entry_vkEnumerateDeviceLayerProperties;
8374 }
8375 if (!strcmp(name, "vkGetDeviceQueue"))
8376 {
8377 return (void*)entry_vkGetDeviceQueue;
8378 }
8379 if (!strcmp(name, "vkQueueSubmit"))
8380 {
8381 return (void*)entry_vkQueueSubmit;
8382 }
8383 if (!strcmp(name, "vkQueueWaitIdle"))
8384 {
8385 return (void*)entry_vkQueueWaitIdle;
8386 }
8387 if (!strcmp(name, "vkDeviceWaitIdle"))
8388 {
8389 return (void*)entry_vkDeviceWaitIdle;
8390 }
8391 if (!strcmp(name, "vkAllocateMemory"))
8392 {
8393 return (void*)entry_vkAllocateMemory;
8394 }
8395 if (!strcmp(name, "vkFreeMemory"))
8396 {
8397 return (void*)entry_vkFreeMemory;
8398 }
8399 if (!strcmp(name, "vkMapMemory"))
8400 {
8401 return (void*)entry_vkMapMemory;
8402 }
8403 if (!strcmp(name, "vkUnmapMemory"))
8404 {
8405 return (void*)entry_vkUnmapMemory;
8406 }
8407 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
8408 {
8409 return (void*)entry_vkFlushMappedMemoryRanges;
8410 }
8411 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
8412 {
8413 return (void*)entry_vkInvalidateMappedMemoryRanges;
8414 }
8415 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
8416 {
8417 return (void*)entry_vkGetDeviceMemoryCommitment;
8418 }
8419 if (!strcmp(name, "vkBindBufferMemory"))
8420 {
8421 return (void*)entry_vkBindBufferMemory;
8422 }
8423 if (!strcmp(name, "vkBindImageMemory"))
8424 {
8425 return (void*)entry_vkBindImageMemory;
8426 }
8427 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
8428 {
8429 return (void*)entry_vkGetBufferMemoryRequirements;
8430 }
8431 if (!strcmp(name, "vkGetImageMemoryRequirements"))
8432 {
8433 return (void*)entry_vkGetImageMemoryRequirements;
8434 }
8435 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
8436 {
8437 return (void*)entry_vkGetImageSparseMemoryRequirements;
8438 }
8439 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
8440 {
8441 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
8442 }
8443 if (!strcmp(name, "vkQueueBindSparse"))
8444 {
8445 return (void*)entry_vkQueueBindSparse;
8446 }
8447 if (!strcmp(name, "vkCreateFence"))
8448 {
8449 return (void*)entry_vkCreateFence;
8450 }
8451 if (!strcmp(name, "vkDestroyFence"))
8452 {
8453 return (void*)entry_vkDestroyFence;
8454 }
8455 if (!strcmp(name, "vkResetFences"))
8456 {
8457 return (void*)entry_vkResetFences;
8458 }
8459 if (!strcmp(name, "vkGetFenceStatus"))
8460 {
8461 return (void*)entry_vkGetFenceStatus;
8462 }
8463 if (!strcmp(name, "vkWaitForFences"))
8464 {
8465 return (void*)entry_vkWaitForFences;
8466 }
8467 if (!strcmp(name, "vkCreateSemaphore"))
8468 {
8469 return (void*)entry_vkCreateSemaphore;
8470 }
8471 if (!strcmp(name, "vkDestroySemaphore"))
8472 {
8473 return (void*)entry_vkDestroySemaphore;
8474 }
8475 if (!strcmp(name, "vkCreateEvent"))
8476 {
8477 return (void*)entry_vkCreateEvent;
8478 }
8479 if (!strcmp(name, "vkDestroyEvent"))
8480 {
8481 return (void*)entry_vkDestroyEvent;
8482 }
8483 if (!strcmp(name, "vkGetEventStatus"))
8484 {
8485 return (void*)entry_vkGetEventStatus;
8486 }
8487 if (!strcmp(name, "vkSetEvent"))
8488 {
8489 return (void*)entry_vkSetEvent;
8490 }
8491 if (!strcmp(name, "vkResetEvent"))
8492 {
8493 return (void*)entry_vkResetEvent;
8494 }
8495 if (!strcmp(name, "vkCreateQueryPool"))
8496 {
8497 return (void*)entry_vkCreateQueryPool;
8498 }
8499 if (!strcmp(name, "vkDestroyQueryPool"))
8500 {
8501 return (void*)entry_vkDestroyQueryPool;
8502 }
8503 if (!strcmp(name, "vkGetQueryPoolResults"))
8504 {
8505 return (void*)entry_vkGetQueryPoolResults;
8506 }
8507 if (!strcmp(name, "vkCreateBuffer"))
8508 {
8509 return (void*)entry_vkCreateBuffer;
8510 }
8511 if (!strcmp(name, "vkDestroyBuffer"))
8512 {
8513 return (void*)entry_vkDestroyBuffer;
8514 }
8515 if (!strcmp(name, "vkCreateBufferView"))
8516 {
8517 return (void*)entry_vkCreateBufferView;
8518 }
8519 if (!strcmp(name, "vkDestroyBufferView"))
8520 {
8521 return (void*)entry_vkDestroyBufferView;
8522 }
8523 if (!strcmp(name, "vkCreateImage"))
8524 {
8525 return (void*)entry_vkCreateImage;
8526 }
8527 if (!strcmp(name, "vkDestroyImage"))
8528 {
8529 return (void*)entry_vkDestroyImage;
8530 }
8531 if (!strcmp(name, "vkGetImageSubresourceLayout"))
8532 {
8533 return (void*)entry_vkGetImageSubresourceLayout;
8534 }
8535 if (!strcmp(name, "vkCreateImageView"))
8536 {
8537 return (void*)entry_vkCreateImageView;
8538 }
8539 if (!strcmp(name, "vkDestroyImageView"))
8540 {
8541 return (void*)entry_vkDestroyImageView;
8542 }
8543 if (!strcmp(name, "vkCreateShaderModule"))
8544 {
8545 return (void*)entry_vkCreateShaderModule;
8546 }
8547 if (!strcmp(name, "vkDestroyShaderModule"))
8548 {
8549 return (void*)entry_vkDestroyShaderModule;
8550 }
8551 if (!strcmp(name, "vkCreatePipelineCache"))
8552 {
8553 return (void*)entry_vkCreatePipelineCache;
8554 }
8555 if (!strcmp(name, "vkDestroyPipelineCache"))
8556 {
8557 return (void*)entry_vkDestroyPipelineCache;
8558 }
8559 if (!strcmp(name, "vkGetPipelineCacheData"))
8560 {
8561 return (void*)entry_vkGetPipelineCacheData;
8562 }
8563 if (!strcmp(name, "vkMergePipelineCaches"))
8564 {
8565 return (void*)entry_vkMergePipelineCaches;
8566 }
8567 if (!strcmp(name, "vkCreateGraphicsPipelines"))
8568 {
8569 return (void*)entry_vkCreateGraphicsPipelines;
8570 }
8571 if (!strcmp(name, "vkCreateComputePipelines"))
8572 {
8573 return (void*)entry_vkCreateComputePipelines;
8574 }
8575 if (!strcmp(name, "vkDestroyPipeline"))
8576 {
8577 return (void*)entry_vkDestroyPipeline;
8578 }
8579 if (!strcmp(name, "vkCreatePipelineLayout"))
8580 {
8581 return (void*)entry_vkCreatePipelineLayout;
8582 }
8583 if (!strcmp(name, "vkDestroyPipelineLayout"))
8584 {
8585 return (void*)entry_vkDestroyPipelineLayout;
8586 }
8587 if (!strcmp(name, "vkCreateSampler"))
8588 {
8589 return (void*)entry_vkCreateSampler;
8590 }
8591 if (!strcmp(name, "vkDestroySampler"))
8592 {
8593 return (void*)entry_vkDestroySampler;
8594 }
8595 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
8596 {
8597 return (void*)entry_vkCreateDescriptorSetLayout;
8598 }
8599 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
8600 {
8601 return (void*)entry_vkDestroyDescriptorSetLayout;
8602 }
8603 if (!strcmp(name, "vkCreateDescriptorPool"))
8604 {
8605 return (void*)entry_vkCreateDescriptorPool;
8606 }
8607 if (!strcmp(name, "vkDestroyDescriptorPool"))
8608 {
8609 return (void*)entry_vkDestroyDescriptorPool;
8610 }
8611 if (!strcmp(name, "vkResetDescriptorPool"))
8612 {
8613 return (void*)entry_vkResetDescriptorPool;
8614 }
8615 if (!strcmp(name, "vkAllocateDescriptorSets"))
8616 {
8617 return (void*)entry_vkAllocateDescriptorSets;
8618 }
8619 if (!strcmp(name, "vkFreeDescriptorSets"))
8620 {
8621 return (void*)entry_vkFreeDescriptorSets;
8622 }
8623 if (!strcmp(name, "vkUpdateDescriptorSets"))
8624 {
8625 return (void*)entry_vkUpdateDescriptorSets;
8626 }
8627 if (!strcmp(name, "vkCreateFramebuffer"))
8628 {
8629 return (void*)entry_vkCreateFramebuffer;
8630 }
8631 if (!strcmp(name, "vkDestroyFramebuffer"))
8632 {
8633 return (void*)entry_vkDestroyFramebuffer;
8634 }
8635 if (!strcmp(name, "vkCreateRenderPass"))
8636 {
8637 return (void*)entry_vkCreateRenderPass;
8638 }
8639 if (!strcmp(name, "vkDestroyRenderPass"))
8640 {
8641 return (void*)entry_vkDestroyRenderPass;
8642 }
8643 if (!strcmp(name, "vkGetRenderAreaGranularity"))
8644 {
8645 return (void*)entry_vkGetRenderAreaGranularity;
8646 }
8647 if (!strcmp(name, "vkCreateCommandPool"))
8648 {
8649 return (void*)entry_vkCreateCommandPool;
8650 }
8651 if (!strcmp(name, "vkDestroyCommandPool"))
8652 {
8653 return (void*)entry_vkDestroyCommandPool;
8654 }
8655 if (!strcmp(name, "vkResetCommandPool"))
8656 {
8657 return (void*)entry_vkResetCommandPool;
8658 }
8659 if (!strcmp(name, "vkAllocateCommandBuffers"))
8660 {
8661 return (void*)entry_vkAllocateCommandBuffers;
8662 }
8663 if (!strcmp(name, "vkFreeCommandBuffers"))
8664 {
8665 return (void*)entry_vkFreeCommandBuffers;
8666 }
8667 if (!strcmp(name, "vkBeginCommandBuffer"))
8668 {
8669 return (void*)entry_vkBeginCommandBuffer;
8670 }
8671 if (!strcmp(name, "vkEndCommandBuffer"))
8672 {
8673 return (void*)entry_vkEndCommandBuffer;
8674 }
8675 if (!strcmp(name, "vkResetCommandBuffer"))
8676 {
8677 return (void*)entry_vkResetCommandBuffer;
8678 }
8679 if (!strcmp(name, "vkCmdBindPipeline"))
8680 {
8681 return (void*)entry_vkCmdBindPipeline;
8682 }
8683 if (!strcmp(name, "vkCmdSetViewport"))
8684 {
8685 return (void*)entry_vkCmdSetViewport;
8686 }
8687 if (!strcmp(name, "vkCmdSetScissor"))
8688 {
8689 return (void*)entry_vkCmdSetScissor;
8690 }
8691 if (!strcmp(name, "vkCmdSetLineWidth"))
8692 {
8693 return (void*)entry_vkCmdSetLineWidth;
8694 }
8695 if (!strcmp(name, "vkCmdSetDepthBias"))
8696 {
8697 return (void*)entry_vkCmdSetDepthBias;
8698 }
8699 if (!strcmp(name, "vkCmdSetBlendConstants"))
8700 {
8701 return (void*)entry_vkCmdSetBlendConstants;
8702 }
8703 if (!strcmp(name, "vkCmdSetDepthBounds"))
8704 {
8705 return (void*)entry_vkCmdSetDepthBounds;
8706 }
8707 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
8708 {
8709 return (void*)entry_vkCmdSetStencilCompareMask;
8710 }
8711 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
8712 {
8713 return (void*)entry_vkCmdSetStencilWriteMask;
8714 }
8715 if (!strcmp(name, "vkCmdSetStencilReference"))
8716 {
8717 return (void*)entry_vkCmdSetStencilReference;
8718 }
8719 if (!strcmp(name, "vkCmdBindDescriptorSets"))
8720 {
8721 return (void*)entry_vkCmdBindDescriptorSets;
8722 }
8723 if (!strcmp(name, "vkCmdBindIndexBuffer"))
8724 {
8725 return (void*)entry_vkCmdBindIndexBuffer;
8726 }
8727 if (!strcmp(name, "vkCmdBindVertexBuffers"))
8728 {
8729 return (void*)entry_vkCmdBindVertexBuffers;
8730 }
8731 if (!strcmp(name, "vkCmdDraw"))
8732 {
8733 return (void*)entry_vkCmdDraw;
8734 }
8735 if (!strcmp(name, "vkCmdDrawIndexed"))
8736 {
8737 return (void*)entry_vkCmdDrawIndexed;
8738 }
8739 if (!strcmp(name, "vkCmdDrawIndirect"))
8740 {
8741 return (void*)entry_vkCmdDrawIndirect;
8742 }
8743 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
8744 {
8745 return (void*)entry_vkCmdDrawIndexedIndirect;
8746 }
8747 if (!strcmp(name, "vkCmdDispatch"))
8748 {
8749 return (void*)entry_vkCmdDispatch;
8750 }
8751 if (!strcmp(name, "vkCmdDispatchIndirect"))
8752 {
8753 return (void*)entry_vkCmdDispatchIndirect;
8754 }
8755 if (!strcmp(name, "vkCmdCopyBuffer"))
8756 {
8757 return (void*)entry_vkCmdCopyBuffer;
8758 }
8759 if (!strcmp(name, "vkCmdCopyImage"))
8760 {
8761 return (void*)entry_vkCmdCopyImage;
8762 }
8763 if (!strcmp(name, "vkCmdBlitImage"))
8764 {
8765 return (void*)entry_vkCmdBlitImage;
8766 }
8767 if (!strcmp(name, "vkCmdCopyBufferToImage"))
8768 {
8769 return (void*)entry_vkCmdCopyBufferToImage;
8770 }
8771 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
8772 {
8773 return (void*)entry_vkCmdCopyImageToBuffer;
8774 }
8775 if (!strcmp(name, "vkCmdUpdateBuffer"))
8776 {
8777 return (void*)entry_vkCmdUpdateBuffer;
8778 }
8779 if (!strcmp(name, "vkCmdFillBuffer"))
8780 {
8781 return (void*)entry_vkCmdFillBuffer;
8782 }
8783 if (!strcmp(name, "vkCmdClearColorImage"))
8784 {
8785 return (void*)entry_vkCmdClearColorImage;
8786 }
8787 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
8788 {
8789 return (void*)entry_vkCmdClearDepthStencilImage;
8790 }
8791 if (!strcmp(name, "vkCmdClearAttachments"))
8792 {
8793 return (void*)entry_vkCmdClearAttachments;
8794 }
8795 if (!strcmp(name, "vkCmdResolveImage"))
8796 {
8797 return (void*)entry_vkCmdResolveImage;
8798 }
8799 if (!strcmp(name, "vkCmdSetEvent"))
8800 {
8801 return (void*)entry_vkCmdSetEvent;
8802 }
8803 if (!strcmp(name, "vkCmdResetEvent"))
8804 {
8805 return (void*)entry_vkCmdResetEvent;
8806 }
8807 if (!strcmp(name, "vkCmdWaitEvents"))
8808 {
8809 return (void*)entry_vkCmdWaitEvents;
8810 }
8811 if (!strcmp(name, "vkCmdPipelineBarrier"))
8812 {
8813 return (void*)entry_vkCmdPipelineBarrier;
8814 }
8815 if (!strcmp(name, "vkCmdBeginQuery"))
8816 {
8817 return (void*)entry_vkCmdBeginQuery;
8818 }
8819 if (!strcmp(name, "vkCmdEndQuery"))
8820 {
8821 return (void*)entry_vkCmdEndQuery;
8822 }
8823 if (!strcmp(name, "vkCmdResetQueryPool"))
8824 {
8825 return (void*)entry_vkCmdResetQueryPool;
8826 }
8827 if (!strcmp(name, "vkCmdWriteTimestamp"))
8828 {
8829 return (void*)entry_vkCmdWriteTimestamp;
8830 }
8831 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
8832 {
8833 return (void*)entry_vkCmdCopyQueryPoolResults;
8834 }
8835 if (!strcmp(name, "vkCmdPushConstants"))
8836 {
8837 return (void*)entry_vkCmdPushConstants;
8838 }
8839 if (!strcmp(name, "vkCmdBeginRenderPass"))
8840 {
8841 return (void*)entry_vkCmdBeginRenderPass;
8842 }
8843 if (!strcmp(name, "vkCmdNextSubpass"))
8844 {
8845 return (void*)entry_vkCmdNextSubpass;
8846 }
8847 if (!strcmp(name, "vkCmdEndRenderPass"))
8848 {
8849 return (void*)entry_vkCmdEndRenderPass;
8850 }
8851 if (!strcmp(name, "vkCmdExecuteCommands"))
8852 {
8853 return (void*)entry_vkCmdExecuteCommands;
8854 }
8855#endif
8856#ifdef VK_VERSION_1_1
8857 if (!strcmp(name, "vkEnumerateInstanceVersion"))
8858 {
8859 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
8860 }
8861 if (!strcmp(name, "vkBindBufferMemory2"))
8862 {
8863 return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
8864 }
8865 if (!strcmp(name, "vkBindImageMemory2"))
8866 {
8867 return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
8868 }
8869 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
8870 {
8871 return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
8872 }
8873 if (!strcmp(name, "vkCmdSetDeviceMask"))
8874 {
8875 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
8876 }
8877 if (!strcmp(name, "vkCmdDispatchBase"))
8878 {
8879 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
8880 }
8881 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
8882 {
8883 return nullptr;
8884 }
8885 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
8886 {
8887 return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
8888 }
8889 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
8890 {
8891 return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
8892 }
8893 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
8894 {
8895 return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
8896 }
8897 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
8898 {
8899 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
8900 }
8901 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
8902 {
8903 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
8904 }
8905 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
8906 {
8907 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
8908 }
8909 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
8910 {
8911 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
8912 }
8913 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
8914 {
8915 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
8916 }
8917 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
8918 {
8919 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
8920 }
8921 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
8922 {
8923 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
8924 }
8925 if (!strcmp(name, "vkTrimCommandPool"))
8926 {
8927 return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
8928 }
8929 if (!strcmp(name, "vkGetDeviceQueue2"))
8930 {
8931 return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
8932 }
8933 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
8934 {
8935 return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
8936 }
8937 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
8938 {
8939 return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
8940 }
8941 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
8942 {
8943 return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
8944 }
8945 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
8946 {
8947 return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
8948 }
8949 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
8950 {
8951 return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
8952 }
8953 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
8954 {
8955 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
8956 }
8957 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
8958 {
8959 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
8960 }
8961 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
8962 {
8963 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
8964 }
8965 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
8966 {
8967 return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
8968 }
8969#endif
8970#ifdef VK_KHR_surface
8971 if (!strcmp(name, "vkDestroySurfaceKHR"))
8972 {
8973 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8974 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
8975 }
8976 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
8977 {
8978 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8979 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
8980 }
8981 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
8982 {
8983 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8984 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
8985 }
8986 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
8987 {
8988 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8989 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
8990 }
8991 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
8992 {
8993 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8994 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
8995 }
8996#endif
8997#ifdef VK_KHR_swapchain
8998 if (!strcmp(name, "vkCreateSwapchainKHR"))
8999 {
9000 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9001 return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
9002 }
9003 if (!strcmp(name, "vkDestroySwapchainKHR"))
9004 {
9005 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9006 return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
9007 }
9008 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
9009 {
9010 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9011 return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
9012 }
9013 if (!strcmp(name, "vkAcquireNextImageKHR"))
9014 {
9015 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9016 return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
9017 }
9018 if (!strcmp(name, "vkQueuePresentKHR"))
9019 {
9020 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9021 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
9022 }
9023 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
9024 {
9025 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9026 return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
9027 }
9028 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
9029 {
9030 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9031 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
9032 }
9033 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
9034 {
9035 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9036 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
9037 }
9038 if (!strcmp(name, "vkAcquireNextImage2KHR"))
9039 {
9040 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9041 return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
9042 }
9043#endif
9044#ifdef VK_KHR_display
9045 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
9046 {
9047 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9048 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
9049 }
9050 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
9051 {
9052 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9053 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
9054 }
9055 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
9056 {
9057 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9058 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
9059 }
9060 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
9061 {
9062 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9063 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
9064 }
9065 if (!strcmp(name, "vkCreateDisplayModeKHR"))
9066 {
9067 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9068 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
9069 }
9070 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
9071 {
9072 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9073 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
9074 }
9075 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
9076 {
9077 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9078 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
9079 }
9080#endif
9081#ifdef VK_KHR_display_swapchain
9082 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
9083 {
9084 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
9085 return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
9086 }
9087#endif
9088#ifdef VK_KHR_xlib_surface
9089 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
9090 {
9091 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
9092 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
9093 }
9094 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
9095 {
9096 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
9097 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
9098 }
9099#endif
9100#ifdef VK_KHR_xcb_surface
9101 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
9102 {
9103 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9104 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
9105 }
9106 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
9107 {
9108 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9109 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
9110 }
9111#endif
9112#ifdef VK_KHR_wayland_surface
9113 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
9114 {
9115 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9116 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
9117 }
9118 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
9119 {
9120 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9121 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
9122 }
9123#endif
9124#ifdef VK_KHR_mir_surface
9125 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
9126 {
9127 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9128 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
9129 }
9130 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
9131 {
9132 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9133 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
9134 }
9135#endif
9136#ifdef VK_KHR_android_surface
9137 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
9138 {
9139 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
9140 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
9141 }
9142#endif
9143#ifdef VK_KHR_win32_surface
9144 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
9145 {
9146 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9147 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
9148 }
9149 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
9150 {
9151 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9152 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
9153 }
9154#endif
9155#ifdef VK_KHR_get_physical_device_properties2
9156 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
9157 {
9158 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9159 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
9160 }
9161 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
9162 {
9163 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9164 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
9165 }
9166 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
9167 {
9168 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9169 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
9170 }
9171 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
9172 {
9173 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9174 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
9175 }
9176 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
9177 {
9178 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9179 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
9180 }
9181 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
9182 {
9183 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9184 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
9185 }
9186 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
9187 {
9188 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9189 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
9190 }
9191#endif
9192#ifdef VK_KHR_device_group
9193 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
9194 {
9195 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9196 return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
9197 }
9198 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
9199 {
9200 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9201 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
9202 }
9203 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
9204 {
9205 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9206 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
9207 }
9208#endif
9209#ifdef VK_KHR_maintenance1
9210 if (!strcmp(name, "vkTrimCommandPoolKHR"))
9211 {
9212 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
9213 return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
9214 }
9215#endif
9216#ifdef VK_KHR_device_group_creation
9217 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
9218 {
9219 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
9220 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
9221 }
9222#endif
9223#ifdef VK_KHR_external_memory_capabilities
9224 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
9225 {
9226 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
9227 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
9228 }
9229#endif
9230#ifdef VK_KHR_external_memory_win32
9231 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
9232 {
9233 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9234 return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
9235 }
9236 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
9237 {
9238 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9239 return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
9240 }
9241#endif
9242#ifdef VK_KHR_external_memory_fd
9243 if (!strcmp(name, "vkGetMemoryFdKHR"))
9244 {
9245 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9246 return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
9247 }
9248 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
9249 {
9250 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9251 return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
9252 }
9253#endif
9254#ifdef VK_KHR_external_semaphore_capabilities
9255 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
9256 {
9257 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
9258 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
9259 }
9260#endif
9261#ifdef VK_KHR_external_semaphore_win32
9262 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
9263 {
9264 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9265 return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
9266 }
9267 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
9268 {
9269 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9270 return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
9271 }
9272#endif
9273#ifdef VK_KHR_external_semaphore_fd
9274 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
9275 {
9276 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9277 return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
9278 }
9279 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
9280 {
9281 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9282 return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
9283 }
9284#endif
9285#ifdef VK_KHR_push_descriptor
9286 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
9287 {
9288 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9289 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
9290 }
9291 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
9292 {
9293 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9294 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
9295 }
9296#endif
9297#ifdef VK_KHR_descriptor_update_template
9298 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
9299 {
9300 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9301 return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
9302 }
9303 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
9304 {
9305 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9306 return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
9307 }
9308 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
9309 {
9310 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9311 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
9312 }
9313#endif
9314#ifdef VK_KHR_create_renderpass2
9315 if (!strcmp(name, "vkCreateRenderPass2KHR"))
9316 {
9317 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9318 return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
9319 }
9320 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
9321 {
9322 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9323 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
9324 }
9325 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
9326 {
9327 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9328 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
9329 }
9330 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
9331 {
9332 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9333 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
9334 }
9335#endif
9336#ifdef VK_KHR_shared_presentable_image
9337 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
9338 {
9339 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
9340 return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
9341 }
9342#endif
9343#ifdef VK_KHR_external_fence_capabilities
9344 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
9345 {
9346 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
9347 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
9348 }
9349#endif
9350#ifdef VK_KHR_external_fence_win32
9351 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
9352 {
9353 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9354 return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
9355 }
9356 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
9357 {
9358 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9359 return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
9360 }
9361#endif
9362#ifdef VK_KHR_external_fence_fd
9363 if (!strcmp(name, "vkImportFenceFdKHR"))
9364 {
9365 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9366 return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
9367 }
9368 if (!strcmp(name, "vkGetFenceFdKHR"))
9369 {
9370 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9371 return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
9372 }
9373#endif
9374#ifdef VK_KHR_get_surface_capabilities2
9375 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
9376 {
9377 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9378 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
9379 }
9380 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
9381 {
9382 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9383 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
9384 }
9385#endif
9386#ifdef VK_KHR_get_display_properties2
9387 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
9388 {
9389 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9390 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
9391 }
9392 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
9393 {
9394 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9395 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
9396 }
9397 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
9398 {
9399 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9400 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
9401 }
9402 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
9403 {
9404 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9405 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
9406 }
9407#endif
9408#ifdef VK_KHR_get_memory_requirements2
9409 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
9410 {
9411 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9412 return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
9413 }
9414 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
9415 {
9416 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9417 return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
9418 }
9419 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
9420 {
9421 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9422 return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
9423 }
9424#endif
9425#ifdef VK_KHR_sampler_ycbcr_conversion
9426 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
9427 {
9428 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9429 return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
9430 }
9431 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
9432 {
9433 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9434 return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
9435 }
9436#endif
9437#ifdef VK_KHR_bind_memory2
9438 if (!strcmp(name, "vkBindBufferMemory2KHR"))
9439 {
9440 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9441 return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
9442 }
9443 if (!strcmp(name, "vkBindImageMemory2KHR"))
9444 {
9445 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9446 return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
9447 }
9448#endif
9449#ifdef VK_KHR_maintenance3
9450 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
9451 {
9452 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
9453 return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
9454 }
9455#endif
9456#ifdef VK_KHR_draw_indirect_count
9457 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
9458 {
9459 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9460 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
9461 }
9462 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
9463 {
9464 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9465 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
9466 }
9467#endif
9468#ifdef VK_ANDROID_native_buffer
9469 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
9470 {
9471 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9472 return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
9473 }
9474 if (!strcmp(name, "vkAcquireImageANDROID"))
9475 {
9476 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9477 return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
9478 }
9479 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
9480 {
9481 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9482 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
9483 }
9484#endif
9485#ifdef VK_EXT_debug_report
9486 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
9487 {
9488 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9489 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
9490 }
9491 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
9492 {
9493 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9494 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
9495 }
9496 if (!strcmp(name, "vkDebugReportMessageEXT"))
9497 {
9498 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9499 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
9500 }
9501#endif
9502#ifdef VK_EXT_debug_marker
9503 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
9504 {
9505 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9506 return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
9507 }
9508 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
9509 {
9510 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9511 return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
9512 }
9513 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
9514 {
9515 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9516 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
9517 }
9518 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
9519 {
9520 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9521 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
9522 }
9523 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
9524 {
9525 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9526 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
9527 }
9528#endif
9529#ifdef VK_AMD_draw_indirect_count
9530 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
9531 {
9532 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9533 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
9534 }
9535 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
9536 {
9537 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9538 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
9539 }
9540#endif
9541#ifdef VK_AMD_shader_info
9542 if (!strcmp(name, "vkGetShaderInfoAMD"))
9543 {
9544 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
9545 return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
9546 }
9547#endif
9548#ifdef VK_NV_external_memory_capabilities
9549 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
9550 {
9551 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
9552 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
9553 }
9554#endif
9555#ifdef VK_NV_external_memory_win32
9556 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
9557 {
9558 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
9559 return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
9560 }
9561#endif
9562#ifdef VK_NN_vi_surface
9563 if (!strcmp(name, "vkCreateViSurfaceNN"))
9564 {
9565 bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
9566 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
9567 }
9568#endif
9569#ifdef VK_EXT_conditional_rendering
9570 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
9571 {
9572 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9573 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
9574 }
9575 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
9576 {
9577 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9578 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
9579 }
9580#endif
9581#ifdef VK_NVX_device_generated_commands
9582 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
9583 {
9584 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9585 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
9586 }
9587 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
9588 {
9589 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9590 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
9591 }
9592 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
9593 {
9594 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9595 return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNVX : nullptr;
9596 }
9597 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
9598 {
9599 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9600 return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNVX : nullptr;
9601 }
9602 if (!strcmp(name, "vkCreateObjectTableNVX"))
9603 {
9604 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9605 return hasExt ? (void*)entry_vkCreateObjectTableNVX : nullptr;
9606 }
9607 if (!strcmp(name, "vkDestroyObjectTableNVX"))
9608 {
9609 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9610 return hasExt ? (void*)entry_vkDestroyObjectTableNVX : nullptr;
9611 }
9612 if (!strcmp(name, "vkRegisterObjectsNVX"))
9613 {
9614 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9615 return hasExt ? (void*)entry_vkRegisterObjectsNVX : nullptr;
9616 }
9617 if (!strcmp(name, "vkUnregisterObjectsNVX"))
9618 {
9619 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9620 return hasExt ? (void*)entry_vkUnregisterObjectsNVX : nullptr;
9621 }
9622 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
9623 {
9624 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9625 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
9626 }
9627#endif
9628#ifdef VK_NV_clip_space_w_scaling
9629 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
9630 {
9631 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
9632 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
9633 }
9634#endif
9635#ifdef VK_EXT_direct_mode_display
9636 if (!strcmp(name, "vkReleaseDisplayEXT"))
9637 {
9638 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
9639 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
9640 }
9641#endif
9642#ifdef VK_EXT_acquire_xlib_display
9643 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
9644 {
9645 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9646 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
9647 }
9648 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
9649 {
9650 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9651 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
9652 }
9653#endif
9654#ifdef VK_EXT_display_surface_counter
9655 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
9656 {
9657 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
9658 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
9659 }
9660#endif
9661#ifdef VK_EXT_display_control
9662 if (!strcmp(name, "vkDisplayPowerControlEXT"))
9663 {
9664 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9665 return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
9666 }
9667 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
9668 {
9669 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9670 return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
9671 }
9672 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
9673 {
9674 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9675 return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
9676 }
9677 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
9678 {
9679 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9680 return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
9681 }
9682#endif
9683#ifdef VK_GOOGLE_display_timing
9684 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
9685 {
9686 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9687 return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
9688 }
9689 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
9690 {
9691 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9692 return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
9693 }
9694#endif
9695#ifdef VK_EXT_discard_rectangles
9696 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
9697 {
9698 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
9699 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
9700 }
9701#endif
9702#ifdef VK_EXT_hdr_metadata
9703 if (!strcmp(name, "vkSetHdrMetadataEXT"))
9704 {
9705 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
9706 return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
9707 }
9708#endif
9709#ifdef VK_MVK_ios_surface
9710 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
9711 {
9712 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
9713 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
9714 }
9715#endif
9716#ifdef VK_MVK_macos_surface
9717 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
9718 {
9719 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
9720 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
9721 }
9722#endif
9723#ifdef VK_EXT_debug_utils
9724 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
9725 {
9726 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9727 return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
9728 }
9729 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
9730 {
9731 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9732 return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
9733 }
9734 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
9735 {
9736 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9737 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
9738 }
9739 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
9740 {
9741 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9742 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
9743 }
9744 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
9745 {
9746 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9747 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
9748 }
9749 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
9750 {
9751 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9752 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
9753 }
9754 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
9755 {
9756 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9757 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
9758 }
9759 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
9760 {
9761 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9762 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
9763 }
9764 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
9765 {
9766 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9767 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
9768 }
9769 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
9770 {
9771 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9772 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
9773 }
9774 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
9775 {
9776 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9777 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
9778 }
9779#endif
9780#ifdef VK_ANDROID_external_memory_android_hardware_buffer
9781 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
9782 {
9783 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
9784 return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
9785 }
9786 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
9787 {
9788 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
9789 return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
9790 }
9791#endif
9792#ifdef VK_EXT_sample_locations
9793 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
9794 {
9795 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
9796 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
9797 }
9798 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
9799 {
9800 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
9801 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
9802 }
9803#endif
9804#ifdef VK_EXT_validation_cache
9805 if (!strcmp(name, "vkCreateValidationCacheEXT"))
9806 {
9807 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9808 return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
9809 }
9810 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
9811 {
9812 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9813 return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
9814 }
9815 if (!strcmp(name, "vkMergeValidationCachesEXT"))
9816 {
9817 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9818 return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
9819 }
9820 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
9821 {
9822 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9823 return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
9824 }
9825#endif
9826#ifdef VK_EXT_external_memory_host
9827 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
9828 {
9829 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
9830 return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
9831 }
9832#endif
9833#ifdef VK_AMD_buffer_marker
9834 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
9835 {
9836 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
9837 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
9838 }
9839#endif
9840#ifdef VK_NV_device_diagnostic_checkpoints
9841 if (!strcmp(name, "vkCmdSetCheckpointNV"))
9842 {
9843 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
9844 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
9845 }
9846 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
9847 {
9848 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
9849 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
9850 }
9851#endif
9852#ifdef VK_GOOGLE_address_space
9853 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
9854 {
9855 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space");
9856 return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08009857 }
9858#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08009859#ifdef VK_GOOGLE_color_buffer
9860 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
9861 {
9862 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
9863 return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
9864 }
9865 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
9866 {
9867 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
9868 return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
9869 }
9870#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07009871#ifdef VK_GOOGLE_sized_descriptor_update_template
9872 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
9873 {
9874 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template");
9875 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
9876 }
9877#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009878#ifdef VK_GOOGLE_async_command_buffers
9879 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
9880 {
9881 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9882 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
9883 }
9884 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
9885 {
9886 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9887 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
9888 }
9889 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
9890 {
9891 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9892 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
9893 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07009894 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
9895 {
9896 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9897 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
9898 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009899#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00009900#ifdef VK_GOOGLE_create_resources_with_requirements
9901 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
9902 {
9903 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
9904 return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
9905 }
9906 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
9907 {
9908 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
9909 return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
9910 }
9911#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08009912#ifdef VK_GOOGLE_address_space_info
9913 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
9914 {
9915 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space_info");
9916 return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
9917 }
9918#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07009919#ifdef VK_GOOGLE_free_memory_sync
9920 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
9921 {
9922 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_free_memory_sync");
9923 return hasExt ? (void*)entry_vkFreeMemorySyncGOOGLE : nullptr;
9924 }
9925#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009926 return nullptr;
9927}
9928
9929} // namespace goldfish_vk